# Variables de entorno

Vela utiliza variables de entorno para configurar el proyecto. Las variables de entorno se almacenan en el archivo `.env` local por defecto. La CLI de Vela y el backend PocketBase dependen de las siguientes variables de entorno:

```ts
POCKETBASE_URL=http://localhost:8090
POCKETBASE_SUPERUSER_EMAIL=admin@example.com
POCKETBASE_SUPERUSER_PASSWORD=password
```

El comando que le da su base de datos al proyecto te pedirá crear una cuenta de superusuario de PocketBase — [`vela create`](/es/docs/create) para un proyecto nuevo, [`vela bless`](/es/docs/bless) para un proyecto SvelteKit existente, o [`vela enable backend`](/es/docs/enable/backend) para un proyecto sin backend. Los detalles de inicio de sesión se guardan en el archivo `.env`. La cuenta de superusuario se utiliza por la CLI, la interfaz de administración y la API REST.

### Un modelo, tres entornos

Todo lo que difiere entre entornos es una variable de entorno, tanto para la aplicación como para PocketBase. Lo que es igual en todas partes — el nombre de la aplicación, su URL canónica — es código, en [`src/lib/site.ts`](/es/docs/cli/project-structure). La base de datos guarda solo lo que un administrador cambia en ejecución, como la programación de copias. No hay archivo de configuración del proyecto.

- **En local**, `.env`, ignorado por git. `.env.example` se versiona y documenta lo que la aplicación lee; es una pista, no un contrato — el ejemplo de un proyecto está lleno de claves que pretende dejar sin definir.
- **En un servidor**, tres capas por objetivo gestionadas con [`vela env`](/es/docs/env): una que comparten todos los objetivos (`-t all`), una que comparten todas las previsualizaciones (`-t preview`), y la propia de la instancia. Una capa superior gana. Los valores son secretos salvo que se definan con `--public`; las claves `PUBLIC_*` son públicas en cualquier caso.
- **Derivadas** por Vela, nunca escritas a mano: `ORIGIN`, `POCKETBASE_URL`, `PORT`, `VELA_ENV`, `VELA_APP_ID`, `VELA_RELEASE`, `VELA_DATA_DIR`, y la URL de aplicación de PocketBase.

El repositorio nunca lleva entorno salvo `.env.example`. Una compilación se ejecuta con el entorno del objetivo, no con tu `.env`: consulta [`vela deploy`](/es/docs/deploy).

### PocketBase

Con backend, PocketBase lee sus propios ajustes del mismo entorno y los muestra bloqueados en el [panel de administración](/es/docs/admin). `APP_NAME` y `APP_URL` van sin prefijo; el resto lleva `PB_` para que el `SMTP_HOST` o `S3_BUCKET` propio de una aplicación no pueda activar el correo ni el almacenamiento de PocketBase.

```ts
APP_NAME=My App                 # de src/lib/site.ts, definido por vela dev y vela deploy
APP_URL=https://example.com     # por defecto ORIGIN, la dirección en la que se sirve la instancia
PB_SENDER_NAME=My App
PB_SENDER_ADDRESS=hello@example.com
PB_SMTP_HOST=smtp.example.com   # definirlo activa SMTP
PB_SMTP_PORT=587
PB_SMTP_USERNAME=
PB_SMTP_PASSWORD=
PB_SMTP_TLS=true
PB_S3_ENDPOINT=                 # definirlo lleva las subidas al bucket
PB_S3_BUCKET=
PB_S3_REGION=
PB_S3_ACCESS_KEY=
PB_S3_SECRET=
PB_S3_FORCE_PATH_STYLE=false
PB_BACKUPS_S3_*                 # las mismas seis, para dónde se guardan las copias
```

El plugin de WhatsApp lee `WHATSAPP_MODE`, `VELASTACK_API_KEY`, `VELASTACK_RELAY_URL` y `WHATSAPP_PHONE_NUMBER_ID`, `WHATSAPP_WABA_ID`, `WHATSAPP_ACCESS_TOKEN`, `WHATSAPP_TEMPLATE_NAME`, `WHATSAPP_TEMPLATE_LANGUAGES`, `WHATSAPP_GRAPH_VERSION`. Sin `WHATSAPP_MODE`, las credenciales eligen el emisor: `VELASTACK_API_KEY` selecciona VelaStack, `WHATSAPP_ACCESS_TOKEN` la Cloud API directa. En local, `WHATSAPP_MODE=dev` registra los códigos en lugar de enviarlos.

Los booleanos aceptan `true`, `1` o `yes`. Una variable definida pero vacía cuenta como definida.