Οδηγός χρήσης

Ελληνικά

Γρήγορη εκκίνηση

# Αποστολή αρχείου: ο κωδικός δημιουργείται αυτόματα, εμφανίζονται σύνδεσμος + κωδικός
$ 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

# Λήψη: ο κωδικός ζητείται διαδραστικά
$ ttl get https://ttl.space/aBcDeFgHiJ
Enter password: ********
Password verified
◉★✧· Phew, secret.pdf landed safe and sound (1.2 MB)

Το CLI κρυπτογραφεί, ανεβάζει, κατεβάζει και αποκρυπτογραφεί αυτόματα. Ο διακομιστής δεν βλέπει ποτέ τον κωδικό σας ούτε τα δεδομένα σας σε μη κρυπτογραφημένη μορφή.

Εγκατάσταση

Homebrew (macOS)

$ brew install tweenietomatoes/ttl/ttl

Scoop (Windows)

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

Προμεταγλωττισμένο αρχείο

# Κατεβάστε για την πλατφόρμα σας από τις εκδόσεις
$ 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

Από τον πηγαίο κώδικα

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

Επαλήθευση

$ ttl version
ttl 1.6.0

Αποστολή αρχείων

Απλή αποστολή

# Αυτόματη δημιουργία κωδικού, προεπιλεγμένο TTL 7 ημέρες
$ ttl send report.xlsx

Αν δεν δοθεί κωδικός στο τερματικό, το CLI ρωτάει:

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

Πατήστε Enter ή πληκτρολογήστε y για αυτόματη δημιουργία.

Προσαρμοσμένος κωδικός

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

Διαγραφή μετά την ανάγνωση

# Αναλώνεται τη στιγμή που ξεκινά η πρώτη λήψη· μετά από διακοπή μόνο αυτή η λήψη μπορεί να συνεχιστεί
$ ttl send -b photo.jpg

Προσαρμοσμένο TTL

$ ttl send -t 5m temp-credentials.txt   # λήγει σε 5 λεπτά
$ ttl send -t 30m meeting-link.txt      # λήγει σε 30 λεπτά
$ ttl send -t 6h backup.tar.gz          # λήγει σε 6 ώρες
$ ttl send -t 1d daily-report.pdf       # λήγει σε 1 ημέρα
$ ttl send -t 3d project-archive.zip    # λήγει σε 3 ημέρες
$ ttl send -t 5d design-assets.zip      # λήγει σε 5 ημέρες
$ ttl send report.xlsx                  # λήγει σε 7 ημέρες (προεπιλογή)

Λήψη αρχείων

Διαδραστικά (Τερματικό)

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

Ο κωδικός δεν εμφανίζεται στο τερματικό. Το αρχικό όνομα αρχείου διατηρείται· αν υπάρχει ήδη αρχείο με αυτό το όνομα στον κατάλογο εξόδου, το αρχείο αποθηκεύεται ως name (1).ext αντί να αντικατασταθεί.

Μόνο με token

# Μπορείτε να χρησιμοποιήσετε μόνο το 10ψήφιο token αντί για ολόκληρο το URL
$ ttl get aBcDeFgHiJ

Κατάλογος εξόδου

$ ttl get -o ~/Downloads aBcDeFgHiJ

Από προεπιλογή, τα αρχεία αποθηκεύονται στον τρέχοντα κατάλογο. Χρησιμοποιήστε -o / --output για να ορίσετε διαφορετικό κατάλογο.

Με παράμετρο κωδικού

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

Πρόγραμμα περιήγησης

Μπορείτε επίσης να κατεβάσετε και να αποκρυπτογραφήσετε αρχεία στο πρόγραμμα περιήγησής σας επισκεπτόμενοι απευθείας τον σύνδεσμο. Η διεπαφή ιστού χρησιμοποιεί την ίδια μορφή αρχείου και τους ίδιους αλγορίθμους (Argon2id, XChaCha20-Poly1305) και ζητά τον κωδικό σας. Δεν απαιτείται εγκατάσταση λογισμικού.

Διαχείριση κωδικού

Ο κωδικός χρησιμοποιείται ως βάση για το κλειδί κρυπτογράφησης. Δεν φεύγει ποτέ από τη συσκευή σας και δεν αποστέλλεται ποτέ στον διακομιστή. Υπάρχουν έξι τρόποι να τον ορίσετε:

1. Αυτόματη δημιουργία (μόνο κατά την αποστολή)

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

Δημιουργεί έναν κρυπτογραφικά τυχαίο κωδικό 12 χαρακτήρων από [0-9A-Za-z]. Διαθέσιμο μόνο κατά το send (διαδραστικά ή αυτόματα σε λειτουργία --json).

2. Διαδραστική εισαγωγή

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

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

Ο κωδικός δεν εμφανίζεται και δεν αποθηκεύεται στο ιστορικό του shell. Κατά το send επιλέγετε πρώτα αν θέλετε αυτόματη δημιουργία. Κατά το get ζητείται απευθείας η εισαγωγή.

3. Παράμετρος: -p / --password

$ ttl send -p mySecretPass file.zip
$ ttl get --password mySecretPass https://ttl.space/aBcDeFgHiJ
Το -p / --password είναι ορατό στην έξοδο του ps aux και μπορεί να αποθηκευτεί στο ιστορικό του κελύφους (~/.bash_history). Αποφύγετε τη χρήση σε κοινόχρηστα περιβάλλοντα και scripts. Χρησιμοποιήστε αντ' αυτού --password-stdin ή --password-file.

4. Stdin: --password-stdin

# Μέσω echo
$ echo "mySecretPass" | ttl send --password-stdin backup.tar.gz

# Από τον διαχειριστή κωδικών
$ pass show ttl/key | ttl send --password-stdin data.zip

# Από μεταβλητή περιβάλλοντος
$ printenv MY_SECRET | ttl get --password-stdin https://ttl.space/aBcDeFgHiJ

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

Διαβάζει την πρώτη γραμμή από το stdin. Χρήσιμο σε scripts, CI/CD pipelines και αυτοματισμό. Όταν το stdin δεν είναι τερματικό και δεν έχει οριστεί πηγή κωδικού, το CLI τερματίζεται με σφάλμα (εκτός αν χρησιμοποιείται --json, που δημιουργεί αυτόματα κωδικό).

5. Αρχείο: --password-file

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

Διαβάζει την πρώτη γραμμή του αρχείου (η τελική αλλαγή γραμμής αφαιρείται). Συμβατό με Docker Secrets (/run/secrets/), αρχεία Vault Agent και παρόμοια μοτίβα.

6. Αυτόματα ανιχνευμένο αρχείο: ttl.password

Αν δεν δοθεί ρητός κωδικός, το CLI αναζητά αρχείο ttl.password δίπλα στο πρόγραμμα, στη συνέχεια ~/.ttl/password. Η πρώτη γραμμή χρησιμοποιείται ως κωδικός.

Μόνο μία ρητή πηγή κωδικού μπορεί να χρησιμοποιηθεί κάθε φορά. Τα -p / --password, --password-stdin και --password-file δεν μπορούν να συνδυαστούν. Το αυτόματα ανιχνευμένο αρχείο ttl.password ελέγχεται μόνο όταν κανένα από αυτά δεν έχει δοθεί. Ελάχιστο μήκος: 8 χαρακτήρες.

Αναφορά επιλογών

Παράμετροι αποστολής

ΠαράμετροςΠεριγραφήΠροεπιλογή
-p, --password PΚωδικός κρυπτογράφησηςδιαδραστικά
--password-stdinΑνάγνωση κωδικού από stdin
--password-file FΑνάγνωση κωδικού από αρχείο
-t, --ttl DURΔιάρκεια ισχύος7d
-b, --burnΔιαγραφή μετά την ανάγνωση (μία λήψη)ανενεργό
-u, --uploader-onlyΜόνο το δικό σας κλειδί API μπορεί να κάνει λήψη (Orbit· ψευδώνυμο --private)ανενεργό
--timeout DURΧρονικό όριο μεταφοράςχωρίς όριο
--server URLURL διακομιστήhttps://ttl.space
-h3, --http3Δοκιμή HTTP/3 (QUIC), εναλλακτικά TCPανενεργό
--jsonΈξοδος JSON στο stdout (για scripts και AI agents)ανενεργό

Παράμετροι λήψης

ΠαράμετροςΠεριγραφήΠροεπιλογή
-p, --password PΚωδικός αποκρυπτογράφησηςδιαδραστικά
--password-stdinΑνάγνωση κωδικού από stdin
--password-file FΑνάγνωση κωδικού από αρχείο
-o, --output DIRΚατάλογος εξόδουτρέχων κατάλογος
--timeout DURΧρονικό όριο μεταφοράςχωρίς όριο
-h3, --http3Δοκιμή HTTP/3 (QUIC), εναλλακτικά TCPανενεργό
--jsonΈξοδος JSON στο stdout (για scripts και AI agents)ανενεργό

Τιμές TTL

Δωρεάν: 5m 10m 15m 30m 1h 2h 3h 6h 12h 24h 1d 2d 3d 4d 5d 6d 7d

Orbit προσθέτει: 14d 15d 28d 30d permanent

Χρονικό όριο

Προεπιλογή: χωρίς όριο. Μια μεταφορά που κολλάει συνεχίζεται μόνη της και σταματά αν δεν μπορεί να προχωρήσει. Ορισμός ορίου με --timeout 30m ή --timeout 2h.

Παραδείγματα

Script: Αντίγραφο ασφαλείας και ανέβασμα

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

Αντιγραφή συνδέσμου στο πρόχειρο (macOS)

$ ttl send -p mypass123 file.pdf | pbcopy

Αντιγραφή συνδέσμου στο πρόχειρο (Linux)

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

Μυστικό μίας χρήσης με αυτοδιαγραφή

$ echo "$DB_PASSWORD" | ttl send --password-stdin -b -t 5m credentials.env
# Ο σύνδεσμος λειτουργεί ακριβώς μία φορά, λήγει σε 5 λεπτά

Λειτουργία JSON (scripts & AI agents)

# αποστολή: ο κωδικός δημιουργείται αυτόματα σε λειτουργία 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"}

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

# τα σφάλματα επιστρέφουν ok:false
{"ok":false,"error":"Link not found"}

Σε λειτουργία --json, όλη η έξοδος είναι δομημένο JSON στο stdout. Εάν δεν δοθεί κωδικός κατά την αποστολή, δημιουργείται αυτόματα και συμπεριλαμβάνεται στην απάντηση. Ο κωδικός εξόδου είναι 0 σε επιτυχία και 1 σε σφάλμα.

Πλάνο Orbit

Orbit ξεκλειδώνει μεγαλύτερα αρχεία (10 GB), μεγαλύτερη διατήρηση (30 ημέρες ή μόνιμα), ιδιωτικά αρχεία (μόνο το κλειδί API σας μπορεί να τα κατεβάσει) και διαχείριση αρχείων (λίστα και διαγραφή). Πλήρης σύγκριση: Features.

Το κλειδί API ανιχνεύεται αυτόματα: μεταβλητή περιβάλλοντος TTL_API_KEY, ttl.key δίπλα στο πρόγραμμα ή ~/.ttl/key. Χρησιμοποιήστε ttl activate για αποθήκευση του κλειδιού ή γράψτε το χειροκίνητα σε μία από αυτές τις τοποθεσίες.

# ενεργοποίηση κλειδιού: ζητείται χωρίς να εμφανίζεται, ώστε να μη μένει στο ιστορικό του shell
$ ttl activate
Enter Orbit API key: ********
Orbit plan activated. Key saved to /usr/local/bin/ttl.key
# μη διαδραστικά: ttl activate --key-stdin  |  ttl activate --key-file F

# έλεγχος πλάνου και χρήσης
$ 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

# αποστολή με παρατεταμένο TTL
$ ttl send -t 30d large-backup.tar.gz
# μόνιμο αρχείο (μόνο Orbit): χωρίς λήξη, διατηρείται μέχρι να το διαγράψετε ή να τελειώσει η συνδρομή σας
$ ttl send -t permanent archive.tar.gz
# αποστολή ιδιωτικού αρχείου: μόνο το κλειδί API σας μπορεί να το κατεβάσει (μόνο Orbit)
$ ttl send -u payroll.xlsx

# λίστα πρόσφατων μεταφορτώσεων
$ 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

# διαγραφή αρχείου
$ ttl delete xK9mQ2vLpA
Deleted: xK9mQ2vLpA

# αφαίρεση αποθηκευμένου κλειδιού
$ ttl deactivate
Key file removed: /usr/local/bin/ttl.key

HTTP API

Η μεταφόρτωση και λήψη απαιτούν τον κρυπτογραφικό αγωγό του CLI (Argon2id + XChaCha20-Poly1305 + block-AEAD). Για scripts, χρησιμοποιήστε ttl send / ttl get ή τη λειτουργία --json. Τα παρακάτω endpoints είναι για τη διαχείριση αρχείων Orbit.

Λίστα αρχείων (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}

# επόμενη σελίδα: μόνο όταν το has_more είναι true· περάστε το next_cursor από την προηγούμενη απάντηση
$ curl "https://ttl.space/v1/files?cursor=1711800600123456" -H "X-API-Key: ttl_orbit_..."

Επιστρέφει τα αρχεία που μεταφορτώθηκαν με αυτό το κλειδί, από τα νεότερα προς τα παλαιότερα, 20 ανά σελίδα. Όταν το has_more είναι true, η απάντηση περιλαμβάνει επίσης next_cursor· περάστε το ως ?cursor= για να λάβετε την επόμενη σελίδα. Απαιτείται πλάνο Orbit.

Διαγραφή αρχείου (Orbit)

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

Επιστρέφει 204 No Content σε επιτυχία. Απαιτείται πλάνο Orbit. Το αρχείο πρέπει να ανήκει σε αυτό το κλειδί.

Απαντήσεις σφαλμάτων

ΚατάστασηΣημασία
401Μη έγκυρο ή ληγμένο κλειδί API
403Η λειτουργία απαιτεί πλάνο Orbit
404Το αρχείο δεν βρέθηκε ή δεν ανήκει σε αυτό το κλειδί
429Υπέρβαση ορίου αιτημάτων
500Εσωτερικό σφάλμα διακομιστή, δοκιμάστε ξανά αργότερα
502Ο αποθηκευτικός χώρος δεν είναι προσωρινά διαθέσιμος, δοκιμάστε ξανά αργότερα

Όρια

ΠεριορισμόςΔωρεάνOrbit
Μέγ. μέγεθος αρχείου2 GB10 GB
Μέγ. TTL7 ημέρες30 ημέρες ή μόνιμα
Μεταφορτώσεις ανά ημέρα10Απεριόριστα
Όγκος μεταφορτώσεων ανά ημέρα (ανά IP)10 GBΑπεριόριστα
Ταυτόχρονες μεταφορτώσεις1 ανά IP1 ανά IP και ανά κλειδί API
Ποσόστωση αποθήκευσης✗500 GB
Λίστα αρχείων✗✓
Πρόωρη διαγραφή✓✓
Ιδιωτικά αρχεία (λήψη μόνο από εσάς)✗✓
Ελάχ. μήκος κωδικού8 χαρακτήρες
Αιτήματα ανά IP30 ανά 10 δευτερόλεπτα
Συνδέσεις ανά IP10 ταυτόχρονες

Κρυπτογράφηση

Τα αρχεία κρυπτογραφούνται στη συσκευή σας πριν ανεβούν. Ο διακομιστής αποθηκεύει μόνο κρυπτογραφημένο κείμενο και δεν μπορεί να αποκρυπτογραφήσει τα αρχεία σας.

ΣτοιχείοΑλγόριθμος / Τιμή
Παραγωγή κλειδιούArgon2id (time=3, memory=64 MiB, parallelism=1)
ΚρυπτογράφησηXChaCha20-Poly1305 AEAD

Οποιαδήποτε τροποποίηση του κρυπτογραφημένου κειμένου προκαλεί αποτυχία αποκρυπτογράφησης. Ο διακομιστής επαληθεύει ότι ο χρήστης που κατεβάζει γνωρίζει τον σωστό κωδικό πριν αποδεσμεύσει το κρυπτογραφημένο κείμενο, χρησιμοποιώντας ένα μονόδρομο token που προέρχεται από το κλειδί κρυπτογράφησης.