Variables de entorno
Cada servicio recibe solo lo que usa. Web nunca recibe credenciales de base de datos ni claves de proveedores.
API
NODE_ENV=production
API_HOST=0.0.0.0
API_PORT=3001
API_PUBLIC_ORIGIN=https://api.zapisocial.com
WEB_ORIGIN=https://app.zapisocial.com
DATABASE_URL=postgresql://USUARIO:CLAVE@HOST:5432/zapi_v2
JWT_ACCESS_SECRET=UN_SECRETO_LARGO
COOKIE_SECURE=true
COOKIE_DOMAIN=.zapisocial.com
REDIS_HOST=HOST_REDIS
REDIS_PORT=6379
REDIS_USERNAME=default
REDIS_PASSWORD=CLAVE_REDIS
PROVIDER_INTEGRATIONS_ENCRYPTION_KEY=CLAVE_BASE64_DE_32_BYTES
FILES_STORAGE_PATH=/var/lib/zapi/files
LOG_LEVEL=info| Variable | Para qué sirve |
|---|---|
API_PUBLIC_ORIGIN | Dominio al que vuelven los callbacks OAuth. Debe ser HTTPS público. |
WEB_ORIGIN | Único origen que CORS acepta con cookies. |
COOKIE_DOMAIN | Comparte la sesión entre el apex y app.. Sin él, los botones «Ir al panel» del sitio público no detectan la sesión. |
PROVIDER_INTEGRATIONS_ENCRYPTION_KEY | Cifra los tokens OAuth y las claves de proveedores guardadas en la base. |
PROVIDER_INTEGRATIONS_ENCRYPTION_KEY debe mantenerse estable y ser idéntica en
API y Worker. Si la cambias, dejan de poder descifrarse los canales ya conectados.
Worker
NODE_ENV=production
DATABASE_URL=postgresql://USUARIO:CLAVE@HOST:5432/zapi_v2
REDIS_HOST=HOST_REDIS
REDIS_PORT=6379
REDIS_USERNAME=default
REDIS_PASSWORD=CLAVE_REDIS
PROVIDER_INTEGRATIONS_ENCRYPTION_KEY=LA_MISMA_QUE_LA_API
FILES_STORAGE_PATH=/var/lib/zapi/files
API_PUBLIC_ORIGIN=https://api.zapisocial.com
LOG_LEVEL=infoEl Worker no recibe JWT_ACCESS_SECRET, ni WEB_ORIGIN, ni dominio público. Necesita
API_PUBLIC_ORIGIN porque Instagram exige una URL HTTPS temporal para recoger la media.
Web
NODE_ENV=production
INTERNAL_API_ORIGIN=https://api.zapisocial.com
PORTAL_HOST=app.zapisocial.com| Variable | Para qué sirve |
|---|---|
INTERNAL_API_ORIGIN | Cómo llega Web a la API. Debe estar disponible en build y en ejecución. |
PORTAL_HOST | Nombre de host, sin esquema ni puerto, que entra al panel. En ese host la raíz lleva al Portal; en el resto, al sitio público. |
Si olvidas PORTAL_HOST no falla nada visible: simplemente app.zapisocial.com
empieza a mostrar el sitio público en vez de llevar al panel.
Web no recibe: DATABASE_URL, REDIS_*, JWT_ACCESS_SECRET, COOKIE_SECURE ni
PROVIDER_INTEGRATIONS_ENCRYPTION_KEY.
Opcionales
| Variable | Servicio | Para qué |
|---|---|---|
UNSPLASH_ACCESS_KEY | API | Buscar imágenes de Unsplash desde la biblioteca. |
DEMO_MODE | Web | Muestra un aviso de demostración. Útil para una instancia de prueba. |
Lo que no va en variables
Meta, WhatsApp, Google Drive, Pexels, Polar, OpenAI y AtlasCloud no se configuran con variables de entorno. Se configuran desde Admin y se guardan cifrados en la base. Así el comprador no necesita redesplegar para cambiar una clave.