Einen Amazon-S3-Bucket für Shareboxed einrichten
Shareboxed lädt direkt in einen Bucket hoch, der dir gehört. Dateien behalten ihre eigenen Namen und bleiben in deiner Console sichtbar. Diese Anleitung richtet einen Bucket mit der AWS CLI ein und zeigt dasselbe für Cloudflare R2, Backblaze B2 und MinIO.
AWS S3
1. Den Bucket anlegen
aws s3api create-bucket --bucket my-uploads --region eu-west-1 \
--create-bucket-configuration LocationConstraint=eu-west-1
Lass Block Public Access an (der Standard).
2. Einen IAM-User anlegen
Speichere das als shareboxed-policy.json:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListForTheConnectionTest",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::my-uploads"
},
{
"Sid": "WriteAndTakeBack",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:DeleteObject",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts"
],
"Resource": "arn:aws:s3:::my-uploads/*"
}
]
}
aws iam create-user --user-name shareboxed
aws iam put-user-policy --user-name shareboxed \
--policy-name shareboxed-uploads \
--policy-document file://shareboxed-policy.json
3. Den Access Key erstellen
aws iam create-access-key --user-name shareboxed
Die Ausgabe zeigt AccessKeyId und SecretAccessKey ein einziges Mal. Füge
sie in die Credentials-Felder der Verbindung in Shareboxed ein:
| Feld | Wert |
|---|---|
| Endpoint | https://s3.eu-west-1.amazonaws.com |
| Region | eu-west-1 |
| Credentials | die AccessKeyId und der SecretAccessKey |
4. Optional: unvollständige Uploads abbrechen
Shareboxed bricht einen fehlgeschlagenen Multipart-Upload selbst ab, ein Absturz oder ein Stromausfall kann das nicht:
aws s3api put-bucket-lifecycle-configuration --bucket my-uploads \
--lifecycle-configuration '{"Rules":[{"ID":"abort-incomplete","Status":"Enabled","Filter":{},"AbortIncompleteMultipartUpload":{"DaysAfterInitiation":7}}]}'
5. Optional: Uploads nach 7 Tagen löschen
aws s3api put-bucket-lifecycle-configuration --bucket my-uploads \
--lifecycle-configuration '{"Rules":[{"ID":"expire","Status":"Enabled","Filter":{"Prefix":""},"Expiration":{"Days":7}}]}'
Cloudflare R2
R2 hat in Shareboxed einen eigenen Verbindungstyp, der nach einer Account-ID statt nach einem Endpoint fragt, siehe die Anleitung zu Cloudflare R2. Wenn du es trotzdem als normale S3-Verbindung nutzen willst:
npx wrangler r2 bucket create my-uploads
Erstelle unter R2 → Manage R2 API Tokens ein Token mit Object Read & Write für diesen Bucket.
| Feld | Wert |
|---|---|
| Endpoint | https://<account-id>.r2.cloudflarestorage.com |
| Region | auto |
| Credentials | Access Key ID und Secret Access Key des Tokens |
Backblaze B2
b2 bucket create my-uploads allPrivate
b2 key create --bucket my-uploads shareboxed \
listBuckets,listFiles,readFiles,writeFiles,deleteFiles
Der zweite Befehl gibt keyID und applicationKey ein einziges Mal aus.
| Feld | Wert |
|---|---|
| Endpoint | https://s3.us-west-004.backblazeb2.com (die Region, die bei deinem Bucket steht) |
| Region | die passende Region, z. B. us-west-004 |
| Credentials | die keyID und der applicationKey |
MinIO, auf deinem eigenen Rechner oder NAS
docker run -d --name minio -p 9000:9000 -p 9001:9001 \
-e MINIO_ROOT_USER=admin -e MINIO_ROOT_PASSWORD=change-me-please \
-v ~/minio-data:/data quay.io/minio/minio:latest server /data --console-address ":9001"
| Feld | Wert |
|---|---|
| Endpoint | http://127.0.0.1:9000 |
| Region | us-east-1 |
| Credentials | der Root-User samt Passwort, oder ein Key aus der Console auf :9001 |
Über einfaches http ist der Verkehr unverschlüsselt. Im eigenen Netz kann das
in Ordnung sein, über das Internet gehört TLS davor.
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. Lass den Key zurücklesen, was er geschrieben hat. Ergänze s3:GetObject
im zweiten Statement in shareboxed-policy.json und schiebe die Policy erneut
hoch:
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts"
]
aws iam put-user-policy --user-name shareboxed \
--policy-name shareboxed-uploads \
--policy-document file://shareboxed-policy.json
2. Erlaube der Download-Seite, die Bytes zu lesen (CORS):
aws s3api put-bucket-cors --bucket my-uploads \
--cors-configuration '{"CORSRules":[{"AllowedOrigins":["https://shareboxed.app"],"AllowedMethods":["GET","HEAD"],"AllowedHeaders":["*"],"MaxAgeSeconds":3600}]}'
R2, B2 und MinIO haben eine gleichwertige CORS-Einstellung, die Regel ist dieselbe.
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 endpoint | Der Endpoint ist keine Adresse. Nimm die vollständige https://-URL. |
| Not reachable | Am Endpoint hat nichts geantwortet. Prüfe die Adresse und den Port. |
| Incorrect region | Das Feld Region passt nicht zur Region des Buckets. |
| Invalid credentials | Der Access Key oder das Secret ist falsch. |
| Insufficient permissions | Der Key funktioniert, aber die Policy erlaubt s3:ListBucket auf diesem Bucket nicht. |
| Bucket not found | Tippfehler im Bucket-Namen, oder der Endpoint zeigt auf die falsche Region. |
| Missing CORS rule | Download-Links sind an, aber der Bucket hat keine CORS-Regel für https://shareboxed.app. |
| Server errored | Der Storage-Dienst selbst hat versagt. Versuch es noch einmal und sieh auf der Statusseite des Anbieters nach. |
Zwei weitere, die erst später auftauchen:
- Der Test läuft durch, Uploads scheitern mit Check the access key, the
secret and its permissions: Test Connection liest immer nur, es kann einen
Key also nicht erkennen, der zwar auflisten, aber nicht schreiben darf. Prüfe,
ob das zweite Statement in der Policy
arn:aws:s3:::my-uploads/*nennt, mit dem/*und demselben Bucket-Namen wie das erste. Bei R2 ist die übliche Ursache ein Token, das als Object Read only erstellt wurde, bei B2 ein Key ohnewriteFiles. - Ein Empfänger sieht "Connection refused, please ask the sender to check on
the permissions": Die CORS-Regel fehlt oder erlaubt kein
GETvonhttps://shareboxed.app. Wer "Unable to access these files" sieht, hat eine Datei angeklickt, die die Aufräumregel aus Schritt 5 schon gelöscht hat. Der Link selbst ist in Ordnung.