Kullanım Kılavuzu

Türkçe

Hızlı başlangıç

# dosya gönder: parola otomatik oluşturulur, bağlantı + parola yazdırılır
$ 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

# indir: parola etkileşimli olarak sorulur
$ ttl get https://ttl.space/aBcDeFgHiJ
Enter password: ********
Password verified
◉★✧· Phew, secret.pdf landed safe and sound (1.2 MB)

CLI şifreleme, yükleme, indirme ve şifre çözme işlemlerini otomatik yapar. Sunucu parolanızı veya düz metin verinizi asla görmez.

Kurulum

Homebrew (macOS)

$ brew install tweenietomatoes/ttl/ttl

Scoop (Windows)

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

Hazır derlenmiş dosya

# platformunuz için sürümlerden indirin
$ 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

Kaynak koddan derleme

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

Doğrulama

$ ttl version
ttl 1.6.0

Dosya gönderme

Temel gönderim

# parolayı otomatik oluştur, varsayılan 7 gün TTL
$ ttl send report.xlsx

Terminalde parola belirtilmezse CLI şunu sorar:

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

Otomatik oluşturmak için Enter'a basın veya y yazın.

Özel parola

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

Okuduktan sonra sil

# ilk indirme başladığı anda kullanılmış sayılır; kesilirse yalnızca o indirme devam edebilir
$ ttl send -b photo.jpg

Özel TTL

$ ttl send -t 5m temp-credentials.txt   # 5 dakikada süresi dolar
$ ttl send -t 30m meeting-link.txt      # 30 dakikada süresi dolar
$ ttl send -t 6h backup.tar.gz          # 6 saatte süresi dolar
$ ttl send -t 1d daily-report.pdf       # 1 günde süresi dolar
$ ttl send -t 3d project-archive.zip    # 3 günde süresi dolar
$ ttl send -t 5d design-assets.zip      # 5 günde süresi dolar
$ ttl send report.xlsx                  # 7 günde süresi dolar (varsayılan)

Dosya indirme

Etkileşimli (terminal)

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

Parola güvenli şekilde okunur, terminalde gösterilmez. Orijinal dosya adı korunur; hedef dizinde aynı adda bir dosya varsa üzerine yazılmaz, dosya ad (1).uzantı olarak kaydedilir.

Yalnızca token ile

# tam URL yerine yalnızca 10 karakterlik token kullanabilirsiniz
$ ttl get aBcDeFgHiJ

Çıktı dizini

$ ttl get -o ~/Downloads aBcDeFgHiJ

Varsayılan olarak dosyalar mevcut dizine kaydedilir. Farklı bir dizin belirtmek için -o / --output kullanın.

Parola bayrağı ile

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

Tarayıcı

Bağlantıyı doğrudan ziyaret ederek dosyaları tarayıcınızda da indirebilir ve şifresini çözebilirsiniz. Web arayüzü aynı dosya biçimini ve algoritmaları (Argon2id, XChaCha20-Poly1305) kullanır ve parolanızı sorar. Yazılım kurulumu gerekmez.

Parola yönetimi

Parola, şifreleme anahtarının temelidir. Cihazınızdan asla çıkmaz ve sunucuya asla gönderilmez. Altı farklı yolla belirtilebilir:

1. Otomatik oluşturma (yalnızca gönderimde)

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

[0-9A-Za-z] karakter setinden kriptografik olarak rastgele 12 karakterlik parola oluşturur. Yalnızca send sırasında kullanılabilir (etkileşimli olarak ya da --json modunda otomatik).

2. Etkileşimli istem

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

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

Parola ekrana yansıtılmaz ve kabuk geçmişine kaydedilmez. send sırasında önce otomatik oluşturma teklif edilir; kendi parolanızı yazarsanız doğrulama için ikinci kez girmeniz istenir. get sırasında doğrudan sorulur.

3. Bayrak: -p / --password

$ ttl send -p mySecretPass file.zip
$ ttl get --password mySecretPass https://ttl.space/aBcDeFgHiJ
-p / --password ps aux çıktısında görünür ve kabuk geçmişine (~/.bash_history) kaydedilebilir. Paylaşımlı ortamlarda ve betiklerde kullanmaktan kaçının. Bunun yerine --password-stdin veya --password-file kullanın.

4. Stdin: --password-stdin

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

# parola yöneticisinden pipe
$ pass show ttl/key | ttl send --password-stdin data.zip

# ortam değişkeninden pipe
$ printenv MY_SECRET | ttl get --password-stdin https://ttl.space/aBcDeFgHiJ

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

Stdin'den ilk satırı okur. Betiklerde, CI/CD işlem hatlarında ve otomasyonda kullanışlıdır. Stdin bir terminal değilse ve parola kaynağı belirtilmemişse CLI hata ile çıkar (--json kullanılıyorsa hariç, bu durumda parola otomatik oluşturulur).

5. Dosya: --password-file

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

Dosyanın ilk satırını okur (sondaki satır sonu karakteri kırpılır). Docker secrets (/run/secrets/), Vault agent dosyaları ve benzeri yapılarla uyumludur.

6. Otomatik algılanan dosya: ttl.password

Açıkça parola verilmezse CLI, önce çalıştırılabilir dosyanın yanındaki ttl.password dosyasını, ardından ~/.ttl/password dosyasını arar. İlk satır parola olarak kullanılır.

Aynı anda yalnızca bir açık parola kaynağı kullanılabilir. -p / --password, --password-stdin ve --password-file birleştirilemez. Otomatik algılanan ttl.password dosyası yalnızca bunların hiçbiri verilmediğinde kontrol edilir. Minimum parola uzunluğu 8 karakterdir.

Seçenekler referansı

Gönderim bayrakları

BayrakAçıklamaVarsayılan
-p, --password PŞifreleme parolasıetkileşimli
--password-stdinParolayı stdin'den oku
--password-file FParolayı dosyadan oku
-t, --ttl SÜREYaşam süresi7d
-b, --burnOkuduktan sonra sil (tek indirme)kapalı
-u, --uploader-onlyYalnızca kendi API anahtarınız indirebilir (Orbit; eş anlamlısı --private)kapalı
--timeout SÜRETransfer zaman aşımıyok
--server URLSunucu URL'sihttps://ttl.space
-h3, --http3HTTP/3 (QUIC) dene, TCP'ye geri dönkapalı
--jsonJSON çıktısını stdout'a yaz (betikler ve yapay zeka ajanları için)kapalı

İndirme bayrakları

BayrakAçıklamaVarsayılan
-p, --password PŞifre çözme parolasıetkileşimli
--password-stdinParolayı stdin'den oku
--password-file FParolayı dosyadan oku
-o, --output DIRÇıktı dizinimevcut dizin
--timeout SÜRETransfer zaman aşımıyok
-h3, --http3HTTP/3 (QUIC) dene, TCP'ye geri dönkapalı
--jsonJSON çıktısını stdout'a yaz (betikler ve yapay zeka ajanları için)kapalı

TTL değerleri

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

Orbit ile ayrıca: 14d 15d 28d 30d permanent

Zaman aşımı

Varsayılan: yok. Duran bir aktarım kendiliğinden devam eder; ilerleyemezse vazgeçer. Sınır koymak için --timeout 30m veya --timeout 2h kullanın.

Örnekler

Betik: yedekle ve yükle

#!/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

Bağlantıyı panoya kopyala (macOS)

$ ttl send -p mypass123 file.pdf | pbcopy

Bağlantıyı panoya kopyala (Linux)

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

Tek seferlik sır

$ echo "$DB_PASSWORD" | ttl send --password-stdin -b -t 5m credentials.env
# bağlantı tam olarak bir kez çalışır, 5 dakikada süresi dolar

JSON modu (betikler & yapay zeka ajanları)

# gönder: JSON modunda parola otomatik oluşturulur
$ 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"}

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

# hatalar ok:false döndürür
{"ok":false,"error":"Link not found"}

--json modunda tüm çıktı stdout'a yapılandırılmış JSON olarak verilir. Gönderim sırasında parola belirtilmezse otomatik oluşturulur ve yanıta dahil edilir. Çıkış kodu başarıda 0, hatada 1'dir.

Orbit planı

Orbit daha büyük dosyalar (10 GB), daha uzun saklama (30 gün veya kalıcı), yalnızca yükleyene açık dosyalar (yalnızca sizin API anahtarınızla indirilebilir) ve dosya yönetimi (listeleme ve silme) sunar. Tam karşılaştırma: Features.

API anahtarı otomatik algılanır: TTL_API_KEY ortam değişkeni, çalıştırılabilir dosyanın yanındaki ttl.key veya ~/.ttl/key. Anahtarı kaydetmek için ttl activate kullanın veya bu konumlardan birine elle yazın.

# anahtarınızı etkinleştirin: gizli istemle sorulur, kabuk geçmişine girmez
$ ttl activate
Enter Orbit API key: ********
Orbit plan activated. Key saved to /usr/local/bin/ttl.key
# etkileşimsiz: ttl activate --key-stdin  |  ttl activate --key-file F

# plan ve kullanımı kontrol edin
$ 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

# uzatılmış TTL ile gönder
$ ttl send -t 30d large-backup.tar.gz
# kalıcı dosya (yalnızca Orbit): süre sonu yok, siz silene ya da aboneliğiniz bitene kadar saklanır
$ ttl send -t permanent archive.tar.gz
# özel dosya gönder: yalnızca sizin API anahtarınız indirebilir (yalnızca Orbit)
$ ttl send -u payroll.xlsx

# son yüklemeleri listele
$ 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

# dosyayı erken sil
$ ttl delete xK9mQ2vLpA
Deleted: xK9mQ2vLpA

# kayıtlı anahtarı kaldır
$ ttl deactivate
Key file removed: /usr/local/bin/ttl.key

HTTP API

Yükleme ve indirme, CLI'ın şifreleme hattını gerektirir (Argon2id + XChaCha20-Poly1305 + parçalı AEAD). Betikler için ttl send / ttl get veya --json modunu kullanın. Aşağıdaki uç noktalar Orbit dosya yönetimi içindir.

Dosyaları listele (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}
# sonraki sayfa: yalnızca has_more true ise; önceki yanıttaki next_cursor değerini gönderin
$ curl "https://ttl.space/v1/files?cursor=1711800600123456" -H "X-API-Key: ttl_orbit_..."

Bu anahtarla yüklenen dosyaları en yeniden eskiye, sayfa başına 20 dosya olarak döndürür. has_more değeri true olduğunda yanıtta next_cursor da bulunur; sonraki sayfayı almak için bunu ?cursor= olarak gönderin. Orbit planı gerektirir.

Dosya sil (Orbit)

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

Başarıda 204 No Content döndürür. Orbit planı gerektirir. Dosya bu anahtara ait olmalıdır.

Hata yanıtları

DurumAnlam
401Geçersiz veya süresi dolmuş API anahtarı
403Özellik Orbit planı gerektirir
404Dosya bulunamadı veya bu anahtara ait değil
429İstek limiti aşıldı
500Sunucu iç hatası, daha sonra tekrar deneyin
502Depolama geçici olarak kullanılamıyor, daha sonra tekrar deneyin

Limitler

KısıtlamaÜcretsizOrbit
Maks dosya boyutu2 GB10 GB
Maks TTL7 gün30 gün veya kalıcı
Günlük yükleme10Sınırsız
Günlük yükleme hacmi (IP başına)10 GBSınırsız
Eşzamanlı yüklemeIP başına 1IP başına 1 ve API anahtarı başına 1
Depolama kotası✗500 GB
Dosya listeleme✗✓
Erken silme✓✓
Sadece yükleyene özel dosyalar✗✓
Min parola uzunluğu8 karakter
IP başına istek10 saniyede 30
IP başına bağlantı10 eşzamanlı

Şifreleme

Dosyalar yüklemeden önce cihazınızda şifrelenir. Sunucu yalnızca şifreli metni saklar ve dosyalarınızın şifresini çözemez.

BileşenAlgoritma / Değer
Anahtar türetmeArgon2id (time=3, memory=64 MiB, parallelism=1)
ŞifreXChaCha20-Poly1305 AEAD

Şifreli metinde yapılan herhangi bir değişiklik, şifre çözme işleminin başarısız olmasına neden olur. Sunucu, şifreli metni göndermeden önce indiren kişinin doğru parolayı bildiğini, şifreleme anahtarından türetilen tek yönlü bir token ile doğrular.