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:

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 para un proyecto nuevo, vela bless para un proyecto SvelteKit existente, o vela 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. 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: 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.

PocketBase

Con backend, PocketBase lee sus propios ajustes del mismo entorno y los muestra bloqueados en el panel de administración. 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.

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.