Panduan Penggunaan

Bahasa Melayu

Mula pantas

# hantar fail: kata laluan dijana automatik, pautan + kata laluan dipaparkan
$ ttl send secret.pdf
No password provided. Generate one? [Y/n]:
Generated password: aB3kL9mXq7Rt
·✧★◉ Thank goodness, secret.pdf is in orbit (1.2 MB)
IMPORTANT! Save your password — required to download and decrypt the file.
Password: aB3kL9mXq7Rt
https://ttl.space/aBcDeFgHiJ

# muat turun: kata laluan diminta secara interaktif
$ ttl get https://ttl.space/aBcDeFgHiJ
Enter password: ********
Password verified
◉★✧· Phew, secret.pdf landed safe and sound (1.2 MB)

CLI mengendalikan penyulitan, muat naik, muat turun dan penyahsulitan secara automatik. Pelayan tidak pernah melihat kata laluan atau data teks biasa Anda.

Pemasangan

Homebrew (macOS)

$ brew install tweenietomatoes/ttl/ttl

Scoop (Windows)

$ scoop bucket add ttl https://github.com/tweenietomatoes/scoop-ttl
$ scoop install ttl

Binari pratersusun

# muat turun daripada keluaran untuk platform Anda
$ curl -Lo ttl.tar.gz \
  https://github.com/tweenietomatoes/ttl/releases/download/v1.6.0/ttl_1.6.0_linux_amd64.tar.gz
$ tar xzf ttl.tar.gz && sudo mv ttl /usr/local/bin/

Go install

$ go install github.com/tweenietomatoes/ttl/cmd/ttl@latest

Bina daripada sumber

$ git clone https://github.com/tweenietomatoes/ttl
$ cd ttl && go build -o ttl ./cmd/ttl/
$ sudo mv ttl /usr/local/bin/

Pengesahan

$ ttl version
ttl 1.6.0

Menghantar fail

Penghantaran asas

# jana kata laluan automatik, TTL lalai 7 hari
$ ttl send report.xlsx

Jika kata laluan tidak dinyatakan dalam terminal, CLI akan bertanya:

No password provided. Generate one? [Y/n]:

Tekan Enter atau taip y untuk menjana secara automatik.

Kata laluan tersuai

$ ttl send -p mySecretPass -t 1h document.pdf

Padam selepas dibaca

# digunakan sebaik sahaja muat turun pertama bermula; selepas terputus, hanya muat turun itu boleh disambung
$ ttl send -b photo.jpg

TTL tersuai

$ ttl send -t 5m temp-credentials.txt   # tamat tempoh dalam 5 minit
$ ttl send -t 30m meeting-link.txt      # tamat tempoh dalam 30 minit
$ ttl send -t 6h backup.tar.gz          # tamat tempoh dalam 6 jam
$ ttl send -t 1d daily-report.pdf       # tamat tempoh dalam 1 hari
$ ttl send -t 3d project-archive.zip    # tamat tempoh dalam 3 hari
$ ttl send -t 5d design-assets.zip      # tamat tempoh dalam 5 hari
$ ttl send report.xlsx                  # tamat tempoh dalam 7 hari (lalai)

Memuat turun fail

Interaktif (terminal)

$ ttl get https://ttl.space/aBcDeFgHiJ
Enter password: ********
Password verified
◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)

Kata laluan dibaca secara selamat, tidak dipaparkan dalam terminal. Nama fail asal dikekalkan; jika nama itu sudah wujud dalam direktori output, fail disimpan sebagai name (1).ext dan bukannya menulis ganti fail sedia ada.

Dengan token sahaja

# Anda boleh menggunakan token 10 aksara sahaja tanpa URL penuh
$ ttl get aBcDeFgHiJ

Direktori output

$ ttl get -o ~/Downloads aBcDeFgHiJ

Secara lalai, fail disimpan dalam direktori semasa. Gunakan -o / --output untuk menyatakan direktori lain.

Dengan bendera kata laluan

$ ttl get -p mySecretPass https://ttl.space/aBcDeFgHiJ

Pelayar

Anda juga boleh memuat turun dan menyahsulit fail dalam pelayar Anda dengan melawat pautan secara terus. Antara muka web menggunakan format fail dan algoritma yang sama (Argon2id, XChaCha20-Poly1305) dan akan meminta kata laluan Anda. Tiada pemasangan perisian diperlukan.

Pengurusan kata laluan

Kata laluan adalah asas kunci penyulitan. Ia tidak pernah meninggalkan peranti Anda dan tidak pernah dihantar ke pelayan. Ia boleh dinyatakan melalui enam cara berbeza:

1. Penjanaan automatik (penghantaran sahaja)

$ ttl send notes.txt
No password provided. Generate one? [Y/n]: y
Generated password: aB3kL9mXq7Rt

Menjana kata laluan 12 aksara secara rawak kriptografi daripada set aksara [0-9A-Za-z]. Hanya tersedia semasa send (secara interaktif, atau secara automatik dalam mod --json).

2. Gesaan interaktif

$ ttl send notes.txt
No password provided. Generate one? [Y/n]: n
Enter password: ********
Confirm password: ********

$ ttl get https://ttl.space/aBcDeFgHiJ
Enter password: ********

Kata laluan tidak dipaparkan pada skrin dan tidak disimpan dalam sejarah shell. Semasa send, penjanaan automatik ditawarkan dahulu; jika Anda menaip kata laluan sendiri, Anda diminta memasukkannya sekali lagi untuk pengesahan. Semasa get, ia diminta secara terus.

3. Bendera: -p / --password

$ ttl send -p mySecretPass file.zip
$ ttl get --password mySecretPass https://ttl.space/aBcDeFgHiJ
-p / --password kelihatan dalam output ps aux dan mungkin disimpan dalam sejarah shell (~/.bash_history). Elakkan penggunaan dalam persekitaran dikongsi dan skrip. Gunakan --password-stdin atau --password-file sebaliknya.

4. Stdin: --password-stdin

# pipe dengan echo
$ echo "mySecretPass" | ttl send --password-stdin backup.tar.gz

# pipe daripada pengurus kata laluan
$ pass show ttl/key | ttl send --password-stdin data.zip

# pipe daripada pemboleh ubah persekitaran
$ printenv MY_SECRET | ttl get --password-stdin https://ttl.space/aBcDeFgHiJ

# heredoc
$ ttl send --password-stdin report.pdf <<<"mySecretPass"

Membaca baris pertama daripada stdin. Berguna dalam skrip, talian paip CI/CD dan automasi. Jika stdin bukan terminal dan sumber kata laluan tidak dinyatakan, CLI akan keluar dengan ralat (kecuali jika --json digunakan, dalam kes itu kata laluan dijana automatik).

5. Fail: --password-file

$ ttl send --password-file /run/secrets/key report.xlsx
$ ttl get --password-file ~/.ttl-key https://ttl.space/aBcDeFgHiJ

Membaca baris pertama fail (aksara baris baharu di hujung dipotong). Serasi dengan Docker secrets (/run/secrets/), fail Vault agent dan struktur serupa.

6. Fail dikesan automatik: ttl.password

Jika kata laluan tidak dinyatakan secara eksplisit, CLI mencari fail ttl.password bersebelahan fail boleh laksana, kemudian ~/.ttl/password. Baris pertama digunakan sebagai kata laluan.

Hanya satu sumber kata laluan eksplisit boleh digunakan pada satu masa. -p / --password, --password-stdin dan --password-file tidak boleh digabungkan. Fail ttl.password yang dikesan automatik hanya disemak apabila tiada satu pun dinyatakan. Panjang minimum kata laluan ialah 8 aksara.

Rujukan pilihan

Bendera penghantaran

BenderaPeneranganLalai
-p, --password PKata laluan penyulitaninteraktif
--password-stdinBaca kata laluan daripada stdin
--password-file FBaca kata laluan daripada fail
-t, --ttl TEMPOHMasa untuk hidup7d
-b, --burnPadam selepas dibaca (satu muat turun)mati
-u, --uploader-onlyHanya kunci API Anda sendiri boleh memuat turun (Orbit; alias --private)mati
--timeout TEMPOHHad masa pemindahantiada had
--server URLURL pelayanhttps://ttl.space
-h3, --http3Cuba HTTP/3 (QUIC), kembali ke TCPmati
--jsonTulis output JSON ke stdout (untuk skrip dan ejen AI)mati

Bendera muat turun

BenderaPeneranganLalai
-p, --password PKata laluan penyahsulitaninteraktif
--password-stdinBaca kata laluan daripada stdin
--password-file FBaca kata laluan daripada fail
-o, --output DIRDirektori outputdirektori semasa
--timeout TEMPOHHad masa pemindahantiada had
-h3, --http3Cuba HTTP/3 (QUIC), kembali ke TCPmati
--jsonTulis output JSON ke stdout (untuk skrip dan ejen AI)mati

Nilai TTL

Percuma: 5m 10m 15m 30m 1h 2h 3h 6h 12h 24h 1d 2d 3d 4d 5d 6d 7d

Tambahan Orbit: 14d 15d 28d 30d permanent

Had masa

Lalai: tiada had. Pemindahan yang tersekat akan bersambung sendiri, dan berhenti jika tidak dapat diteruskan. Tetapkan had dengan --timeout 30m atau --timeout 2h.

Contoh

Skrip: sandaran dan muat naik

#!/bin/bash
tar czf /tmp/backup.tar.gz /data
echo "$BACKUP_KEY" | ttl send --password-stdin -t 6h /tmp/backup.tar.gz
rm /tmp/backup.tar.gz

Salin pautan ke papan keratan (macOS)

$ ttl send -p mypass123 file.pdf | pbcopy

Salin pautan ke papan keratan (Linux)

$ ttl send -p mypass123 file.pdf | xclip -sel clip

Rahsia sekali guna

$ echo "$DB_PASSWORD" | ttl send --password-stdin -b -t 5m credentials.env
# pautan berfungsi tepat sekali sahaja, tamat tempoh dalam 5 minit

Mod JSON (skrip & ejen AI)

# hantar: kata laluan dijana automatik dalam mod JSON
$ ttl --json send report.pdf
{"ok":true,"link":"https://ttl.space/xK9mQ2vLpA","filename":"report.pdf","size":2097152,"ttl":"7d","burn":false,"uploader_only":false,"is_permanent":false,"password":"aB3kL9mXq7Rt"}

# muat turun
$ ttl --json get -p aB3kL9mXq7Rt xK9mQ2vLpA
{"ok":true,"filename":"report.pdf","size":2097152,"saved_to":"/home/user/report.pdf"}

# ralat mengembalikan ok:false
{"ok":false,"error":"Link not found"}

Dalam mod --json, semua output diberikan sebagai JSON berstruktur ke stdout. Semasa penghantaran, jika kata laluan tidak dinyatakan, ia dijana automatik dan disertakan dalam respons. Kod keluar ialah 0 untuk berjaya, 1 untuk ralat.

Pelan Orbit

Orbit menawarkan fail yang lebih besar (10 GB), penyimpanan lebih lama (30 hari, atau kekal), fail untuk pemuat naik sahaja (hanya kunci API Anda boleh memuat turunnya) dan pengurusan fail (senarai dan padam). Perbandingan penuh: Features.

Kunci API dikesan automatik: pemboleh ubah persekitaran TTL_API_KEY, ttl.key bersebelahan fail boleh laksana, atau ~/.ttl/key. Gunakan ttl activate untuk menyimpan kunci Anda atau tulis secara manual ke salah satu lokasi ini.

# aktifkan kunci Anda: diminta tanpa dipaparkan, jadi ia tidak masuk ke sejarah shell
$ ttl activate
Enter Orbit API key: ********
Orbit plan activated. Key saved to /usr/local/bin/ttl.key
# bukan interaktif: ttl activate --key-stdin  |  ttl activate --key-file F

# semak pelan dan penggunaan
$ ttl plan
Plan: orbit
Max file size: 10.0 GB
Max TTL: 30 days (or permanent)
Uploads per day: 1000000

Usage:
  Uploads today: 3
  Active storage: 1.2 GB / 500.0 GB

# hantar dengan TTL dilanjutkan
$ ttl send -t 30d large-backup.tar.gz
# fail kekal (Orbit sahaja): tanpa tamat tempoh, disimpan sehingga Anda memadamnya atau langganan Anda tamat
$ ttl send -t permanent archive.tar.gz
# hantar fail peribadi: hanya kunci API Anda boleh memuat turunnya (Orbit sahaja)
$ ttl send -u payroll.xlsx

# senaraikan muat naik terkini
$ ttl list
  xK9mQ2vLpA    4.2 MB  2026-03-16 10:30 → 2026-04-15 10:30  [active]
  https://ttl.space/xK9mQ2vLpA
  rT7bNw3KpF  912.0 KB  2026-03-15 14:20 → 2026-03-17 14:20  [active (burn)]
  https://ttl.space/rT7bNw3KpF

# padam fail lebih awal
$ ttl delete xK9mQ2vLpA
Deleted: xK9mQ2vLpA

# buang kunci yang disimpan
$ ttl deactivate
Key file removed: /usr/local/bin/ttl.key

API HTTP

Muat naik dan muat turun memerlukan talian paip penyulitan CLI (Argon2id + XChaCha20-Poly1305 + AEAD berpecah). Untuk skrip, gunakan ttl send / ttl get atau mod --json. Titik akhir di bawah adalah untuk pengurusan fail Orbit.

Senarai fail (Orbit)

$ curl https://ttl.space/v1/files -H "X-API-Key: ttl_orbit_..."
{"files":[{"token":"xK9mQ2vLpA","link":"https://ttl.space/xK9mQ2vLpA","size_bytes":1048576,"created_at":1711800600,"expires_at":1714392600,"burn":false,"expired":false,"uploader_only":false,"is_permanent":false,"is_note":false,"perm_grace_until":0}],"has_more":false}

# halaman seterusnya: hanya apabila has_more ialah true; hantar next_cursor daripada respons sebelumnya
$ curl "https://ttl.space/v1/files?cursor=1711800600123456" -H "X-API-Key: ttl_orbit_..."

Mengembalikan fail yang dimuat naik dengan kunci ini, yang terbaharu dahulu, 20 setiap halaman. Apabila has_more ialah true, respons juga mengandungi next_cursor; hantarkannya sebagai ?cursor= untuk mendapatkan halaman seterusnya. Memerlukan pelan Orbit.

Padam fail (Orbit)

$ curl -X DELETE https://ttl.space/v1/files/xK9mQ2vLpA -H "X-API-Key: ttl_orbit_..."

Mengembalikan 204 No Content apabila berjaya. Memerlukan pelan Orbit. Fail mesti milik kunci ini.

Respons ralat

StatusMakna
401Kunci API tidak sah atau tamat tempoh
403Ciri memerlukan pelan Orbit
404Fail tidak dijumpai atau bukan milik kunci ini
429Had permintaan melebihi
500Ralat dalaman pelayan, cuba lagi kemudian
502Storan tidak tersedia buat sementara waktu, cuba lagi kemudian

Had

SekatanPercumaOrbit
Saiz fail maks2 GB10 GB
TTL maks7 hari30 hari atau kekal
Muat naik harian10Tanpa had
Jumlah data muat naik harian (per IP)10 GBTanpa had
Muat naik serentak1 per IP1 per IP dan per kunci API
Kuota penyimpanan✗500 GB
Senarai fail✗✓
Padam awal✓✓
Fail untuk pemuat naik sahaja✗✓
Panjang kata laluan min8 aksara
Permintaan per IP30 dalam 10 saat
Sambungan per IP10 serentak

Penyulitan

Fail disulitkan pada peranti Anda sebelum dimuat naik. Pelayan hanya menyimpan teks sifer dan tidak boleh menyahsulit fail Anda.

KomponenAlgoritma / Nilai
Terbitan kunciArgon2id (time=3, memory=64 MiB, parallelism=1)
SiferXChaCha20-Poly1305 AEAD

Sebarang pengubahsuaian pada teks sifer akan menyebabkan penyahsulitan gagal. Pelayan mengesahkan bahawa pemuat turun mengetahui kata laluan yang betul menggunakan token sehala yang diterbitkan daripada kunci penyulitan, sebelum menyerahkan teks sifer.