S3

Almacena los archivos subidos en un bucket S3 en lugar del sistema de archivos local del servidor.

Sintaxis

$ vela enable s3                    # la base de datos de desarrollo
$ vela enable s3 -t production      # un despliegue

Se te pedirán el endpoint, el bucket, la región y las credenciales. Todos los valores pueden pasarse como flags para uso no interactivo, y el secreto se lee de VELA_S3_SECRET si está definido — un secreto en la línea de comandos queda en el historial del shell y en ps.

Una vez configurado, la recuperación de archivos se maneja automáticamente; nada cambia en la aplicación.

Objetivos

A diferencia de los comandos de despliegue, vela enable s3 usa -t local por defecto. Los ajustes de S3 viven en la base de datos de la copia que configures, y deliberadamente no se copian de desarrollo a un despliegue nuevo — nombrar el objetivo es como llegan a producción.

Opciones

  • --backups - Configurar dónde se guardan las copias, en vez de dónde van las subidas
  • --endpoint <url>, --bucket <name>, --region <region>, --access-key <key>, --secret <secret>
  • --force-path-style / --no-force-path-style - Cómo se direcciona el bucket
  • --force - Activarlo aunque ya existan archivos subidos en disco
  • -t, --target <target> - Sobre qué copia de la aplicación actuar, por defecto local

Estilo de ruta

AWS y Cloudflare R2 direccionan el bucket como un subdominio. MinIO, Ceph, Garage y la mayoría de gateways autoalojados lo necesitan en la ruta, y fallan con un error de conexión poco útil cuando no lo reciben. El valor correcto se deduce del endpoint, y la prueba de conexión se ejecuta de inmediato para que un error salga a la luz al momento y no en la primera subida.

Los archivos existentes no se mueven

Activar S3 cambia de dónde lee PocketBase. No migra nada, así que todos los archivos que ya están en disco dejan de resolverse.

vela enable s3 se niega cuando encuentra subidas ya almacenadas localmente. La estructura es idéntica en ambos lados — <collection>/<record>/<file> — así que copiarlos es una sincronización directa:

$ rclone copy /var/lib/vela/apps/<instance>/shared/pb_data/storage/ <remote>:<bucket>/

Después vuelve a ejecutarlo con --force.

Efecto sobre las copias de seguridad

Con el almacenamiento S3 activo, PocketBase deja storage/ fuera de los archivos que genera, así que vela backup create captura las bases de datos pero no las subidas. A partir de ahí, el versionado de tu bucket es lo que las protege.

vela enable s3 --backups es un ajuste distinto que envía los propios archivos de copia a un bucket, para que dejen de estar en el mismo disco que los datos que protegen.