Configurar un bucket de Cloudflare R2 para Shareboxed
Shareboxed sube los archivos directamente a un bucket de R2 que es tuyo. Los archivos conservan su propio nombre y siguen visibles en tu dashboard. R2 se direcciona por cuenta y no por región, así que la conexión pide un account id en lugar de un endpoint.
1. Crea el bucket
npx wrangler r2 bucket create my-uploads
O en el dashboard: R2 → Create bucket. Deja el acceso público desactivado (es lo predeterminado).
2. Crea un API token
R2 → API → Manage API tokens → Create API Token, con el permiso Object Read & Write, limitado al bucket que acabas de crear. El Access Key ID y el Secret Access Key se muestran una sola vez.
Pégalos en la conexión en Shareboxed:
| Campo | Valor |
|---|---|
| Account ID | R2 → Overview, en el panel Account details |
| Bucket name | my-uploads |
| Credentials | el Access Key ID y el Secret Access Key del token |
| Folder | opcional, un prefix dentro del bucket |
También funciona pegar el endpoint S3 completo del token en el campo Account ID; la app saca de ahí el account id.
3. Opcional: aborta las subidas incompletas
Tu bucket → Settings → Object lifecycle rules → Add rule, activa Abort incomplete multipart uploads al cabo de 1 día.
4. Opcional: borra las subidas al cabo de 7 días
Una segunda lifecycle rule: Delete objects al cabo de 7 días, limitada al prefix que le diste a Shareboxed en Folder.
Activar los enlaces de descarga de Shareboxed
Desactivados por defecto. Con el interruptor activado (ajustes de la conexión
→ Sharing), al terminar una subida también se copia un enlace de
shareboxed.app desde el que cualquiera puede descargar. Un enlace vive siete
días, como todo lo que se comparte con Shareboxed; al desactivar el ajuste se
borra la clave guardada y todos los enlaces activos de esta conexión dejan de
funcionar a la vez.
El bucket necesita dos cosas para que esos enlaces funcionen.
1. El token tiene que poder volver a leer lo que ha escrito. Object Read & Write lo cubre. Un token de solo escritura firma bien las subidas y falla en todas las descargas.
2. Permite que la página de descarga lea los bytes (CORS). En tu bucket → Settings → CORS policy → Edit:
[
{
"AllowedOrigins": ["https://shareboxed.app"],
"AllowedMethods": ["GET", "HEAD"],
"AllowedHeaders": ["*"],
"MaxAgeSeconds": 3600
}
]
Cuando algo no funciona
Pulsa Test Connection primero. Esto es lo que puede decir:
| Test Connection dice | Solución |
|---|---|
| Missing credentials | Los campos Credentials están vacíos o no se guardaron. Vuelve a introducir la key y el secret. |
| Invalid credentials | El secret es incorrecto, el token se borró, o el Account ID no es el de la cuenta de este token. |
| Insufficient permissions | El token está limitado a otro bucket. |
| Bucket not found | Hay una errata en el nombre del bucket. En R2 los nombres distinguen mayúsculas y minúsculas. |
| Not reachable | El Account ID está mal formado, o no respondió nada. Cópialo de R2 → Overview. |
| Missing CORS rule | Los enlaces de descarga están activados, pero el bucket no tiene una regla CORS para https://shareboxed.app. |
| Server errored | Falló la propia Cloudflare. Inténtalo de nuevo y mira la página de estado de Cloudflare. |
Uno más que solo aparece después:
- Quien recibe el enlace ve "Connection refused, please ask the sender to check on the permissions": falta la regla CORS, o el token se creó de solo escritura y no puede volver a leer lo que escribió. Object Read & Write arregla las dos mitades.
¿Usas S3 también en otro sitio? La guía de S3 cubre AWS, Backblaze B2 y MinIO, y también R2 a través de ese mismo tipo de conexión S3.