Einen Cloudflare-R2-Bucket für Shareboxed einrichten
Shareboxed lädt direkt in einen R2-Bucket hoch, der dir gehört. Dateien behalten ihre eigenen Namen und bleiben in deinem Dashboard sichtbar. R2 wird pro Account adressiert statt pro Region, deshalb fragt die Verbindung nach einer Account-ID statt nach einem Endpoint.
1. Den Bucket anlegen
npx wrangler r2 bucket create my-uploads
Oder im Dashboard: R2 → Create bucket. Lass den öffentlichen Zugriff aus (der Standard).
2. Ein API-Token erstellen
R2 → API → Manage API tokens → Create API Token, Berechtigung Object Read & Write, begrenzt auf den eben angelegten Bucket. Access Key ID und Secret Access Key werden ein einziges Mal angezeigt.
Füge sie in die Verbindung in Shareboxed ein:
| Feld | Wert |
|---|---|
| Account ID | R2 → Overview, im Panel Account details |
| Bucket name | my-uploads |
| Credentials | Access Key ID und Secret Access Key des Tokens |
| Folder | optional, ein Prefix innerhalb des Buckets |
Du kannst auch den kompletten S3-Endpoint des Tokens in das Feld Account ID einfügen, die App holt sich die Account-ID daraus.
3. Optional: unvollständige Uploads abbrechen
Dein Bucket → Settings → Object lifecycle rules → Add rule, aktiviere Abort incomplete multipart uploads nach 1 Tag.
4. Optional: Uploads nach 7 Tagen löschen
Eine zweite Lifecycle-Regel: Delete objects nach 7 Tagen, begrenzt auf das Prefix, das du Shareboxed unter Folder gegeben hast.
Shareboxed-Download-Links einschalten
Standardmäßig aus. Ist der Schalter an (Verbindungseinstellungen → Sharing),
kopiert ein fertiger Upload zusätzlich einen shareboxed.app-Link, von dem
jeder herunterladen kann. Ein Link lebt sieben Tage, wie jeder Shareboxed-Share.
Schaltest du die Einstellung aus, wird der gespeicherte Key gelöscht und jeder
aktive Link dieser Verbindung endet auf einen Schlag.
Damit diese Links funktionieren, braucht der Bucket zwei Dinge.
1. Das Token muss zurücklesen dürfen, was es geschrieben hat. Object Read & Write deckt das ab. Ein Token, das nur schreiben darf, signiert Uploads einwandfrei und scheitert an jedem Download.
2. Erlaube der Download-Seite, die Bytes zu lesen (CORS). Dein Bucket → Settings → CORS policy → Edit:
[
{
"AllowedOrigins": ["https://shareboxed.app"],
"AllowedMethods": ["GET", "HEAD"],
"AllowedHeaders": ["*"],
"MaxAgeSeconds": 3600
}
]
Wenn etwas nicht funktioniert
Drücke zuerst Test Connection. Was dort stehen kann:
| Test Connection meldet | Lösung |
|---|---|
| Missing credentials | Die Credentials-Felder sind leer oder wurden nicht gespeichert. Gib Key und Secret erneut ein. |
| Invalid credentials | Das Secret ist falsch, das Token wurde gelöscht, oder die Account ID gehört nicht zu diesem Token. |
| Insufficient permissions | Das Token ist auf einen anderen Bucket begrenzt. |
| Bucket not found | Tippfehler im Bucket-Namen. Bei R2 wird zwischen Groß- und Kleinschreibung unterschieden. |
| Not reachable | Die Account ID ist fehlerhaft, oder es hat nichts geantwortet. Kopiere sie aus R2 → Overview. |
| Missing CORS rule | Download-Links sind an, aber der Bucket hat keine CORS-Regel für https://shareboxed.app. |
| Server errored | Cloudflare selbst hat versagt. Versuch es noch einmal und sieh auf der Statusseite von Cloudflare nach. |
Eine weitere, die erst später auftaucht:
- Ein Empfänger sieht "Connection refused, please ask the sender to check on the permissions": Die CORS-Regel fehlt, oder das Token wurde nur zum Schreiben erstellt und kann nicht zurücklesen, was es geschrieben hat. Object Read & Write behebt beide Hälften.
Nutzt du auch anderswo S3? Die S3-Anleitung behandelt AWS, Backblaze B2 und MinIO, und R2 über denselben S3-Verbindungstyp.