# 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`](/es/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.