Een Amazon S3-bucket instellen voor Shareboxed
Shareboxed uploadt rechtstreeks naar een bucket die van jou is. Bestanden houden hun eigen naam en blijven zichtbaar in je console. Deze handleiding zet er een op met de AWS CLI, en laat hetzelfde zien voor Cloudflare R2, Backblaze B2 en MinIO.
AWS S3
1. Maak de bucket
aws s3api create-bucket --bucket my-uploads --region eu-west-1 \
--create-bucket-configuration LocationConstraint=eu-west-1
Laat Block Public Access aan staan (de standaard).
2. Maak een IAM-user
Sla dit op 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. Maak de access key
aws iam create-access-key --user-name shareboxed
De uitvoer toont AccessKeyId en SecretAccessKey één keer. Plak ze in de
Credentials-velden van de connectie in Shareboxed:
| Veld | Waarde |
|---|---|
| Endpoint | https://s3.eu-west-1.amazonaws.com |
| Region | eu-west-1 |
| Credentials | de AccessKeyId en SecretAccessKey |
4. Optioneel: onvolledige uploads afbreken
Shareboxed breekt een mislukte multipart-upload zelf af, maar bij een crash of een stroomuitval kan dat niet:
aws s3api put-bucket-lifecycle-configuration --bucket my-uploads \
--lifecycle-configuration '{"Rules":[{"ID":"abort-incomplete","Status":"Enabled","Filter":{},"AbortIncompleteMultipartUpload":{"DaysAfterInitiation":7}}]}'
5. Optioneel: uploads na 7 dagen verwijderen
aws s3api put-bucket-lifecycle-configuration --bucket my-uploads \
--lifecycle-configuration '{"Rules":[{"ID":"expire","Status":"Enabled","Filter":{"Prefix":""},"Expiration":{"Days":7}}]}'
Cloudflare R2
R2 heeft een eigen connectietype in Shareboxed dat om een account id vraagt in plaats van om een endpoint; zie de Cloudflare R2-handleiding. Wil je het toch als gewone S3-connectie gebruiken:
npx wrangler r2 bucket create my-uploads
Maak een token onder R2 → Manage R2 API Tokens met Object Read & Write op die bucket.
| Veld | Waarde |
|---|---|
| Endpoint | https://<account-id>.r2.cloudflarestorage.com |
| Region | auto |
| Credentials | de Access Key ID en Secret Access Key van het token |
Backblaze B2
b2 bucket create my-uploads allPrivate
b2 key create --bucket my-uploads shareboxed \
listBuckets,listFiles,readFiles,writeFiles,deleteFiles
Het tweede commando toont de keyID en applicationKey één keer.
| Veld | Waarde |
|---|---|
| Endpoint | https://s3.us-west-004.backblazeb2.com (de region die bij je bucket staat) |
| Region | de bijbehorende region, bijv. us-west-004 |
| Credentials | de keyID en applicationKey |
MinIO, op je eigen machine of 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"
| Veld | Waarde |
|---|---|
| Endpoint | http://127.0.0.1:9000 |
| Region | us-east-1 |
| Credentials | de root user en het wachtwoord, of een key uit de console op :9001 |
Over gewoon http is het verkeer onversleuteld. Op een LAN kan dat prima
zijn; over het internet zet je het achter TLS.
Shareboxed-downloadlinks aanzetten
Standaard uit. Met de schakelaar aan (connectie-instellingen → Sharing)
kopieert een voltooide upload ook een shareboxed.app-link waar iedereen
vanaf kan downloaden. Een link leeft zeven dagen, net als elke share van
Shareboxed; de instelling uitzetten verwijdert de opgeslagen sleutel en
beëindigt in één keer elke levende link van deze connectie.
De bucket heeft twee dingen nodig om die links te laten werken.
1. Laat de key teruglezen wat hij geschreven heeft. Voeg s3:GetObject
toe aan het tweede statement in shareboxed-policy.json en zet de policy
opnieuw door:
"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. Geef de downloadpagina toegang tot de bytes (CORS):
aws s3api put-bucket-cors --bucket my-uploads \
--cors-configuration '{"CORSRules":[{"AllowedOrigins":["https://shareboxed.app"],"AllowedMethods":["GET","HEAD"],"AllowedHeaders":["*"],"MaxAgeSeconds":3600}]}'
R2, B2 en MinIO hebben een gelijkwaardige CORS-instelling; de regel is dezelfde.
Als iets niet werkt
Druk eerst op Test Connection. Wat het kan zeggen:
| Test Connection zegt | Oplossing |
|---|---|
| Missing credentials | De Credentials-velden zijn leeg of zijn niet opgeslagen. Vul de key en het secret opnieuw in. |
| Invalid endpoint | De Endpoint is geen adres. Gebruik de volledige https://-URL. |
| Not reachable | Er antwoordde niets op het endpoint. Controleer het adres en de poort. |
| Incorrect region | Het Region-veld komt niet overeen met de region van de bucket. |
| Invalid credentials | De access key of het secret is verkeerd. |
| Insufficient permissions | De key werkt, maar de policy staat s3:ListBucket op deze bucket niet toe. |
| Bucket not found | Typefout in de bucketnaam, of het endpoint wijst naar de verkeerde region. |
| Missing CORS rule | Downloadlinks staan aan, maar de bucket heeft geen CORS-regel voor https://shareboxed.app. |
| Server errored | De opslagdienst zelf ging fout. Probeer het opnieuw en bekijk de statuspagina van de provider. |
Nog twee die pas later opduiken:
- Test slaagt, uploads mislukken met Check the access key, the secret and
its permissions: Test Connection leest alleen, dus het kan een key die wel
mag listen maar niet mag schrijven niet zien. Controleer of het tweede
statement in de policy
arn:aws:s3:::my-uploads/*noemt, met de/*en dezelfde bucketnaam als het eerste. Op R2 is de gebruikelijke oorzaak een token dat als Object Read only is aangemaakt, op B2 een key zonderwriteFiles. - Een ontvanger ziet "Connection refused, please ask the sender to check on
the permissions": de CORS-regel ontbreekt of staat
GETvanafhttps://shareboxed.appniet toe. Een ontvanger die "Unable to access these files" ziet, klikte op een bestand dat de opruimregel uit stap 5 al verwijderd heeft; de link zelf is in orde.