Variables de entorno
En Dokploy configuras dos entornos: API y Web. El Compose de API reparte las
variables entre sus contenedores api y worker. Los valores de ejemplo son
marcadores: sustitúyelos por los de tu instalación.
API: entorno del Compose
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
FILES_VOLUME_NAME=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. |
FILES_VOLUME_NAME | Nombre del volumen compartido. Compose lo crea si no existe y lo reutiliza si ya existe. |
Activa Create Environment File en Dokploy. docker-compose.backend.yml usa el
mismo volumen y la ruta /var/lib/zapi/files para ambos contenedores. Mantén el nombre
para conservar los archivos al actualizar.
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.
Qué recibe el Worker
Compose le entrega automáticamente base de datos, Redis, clave de cifrado, ruta Files,
API_PUBLIC_ORIGIN y nivel de registros desde el entorno anterior. El Worker no tiene
otra tarjeta ni otro bloque Environment en Dokploy.
JWT_ACCESS_SECRET, cookies, WEB_ORIGIN y Unsplash quedan en el contenedor API.
API_PUBLIC_ORIGIN también llega a Worker 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. Se consume en ejecución desde el proxy y las rutas de servidor. |
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.
Si tu instalación ya define NEXT_SERVER_ACTIONS_ENCRYPTION_KEY, conserva su valor
al migrar Web. Es una clave propia de Next; no uses la clave de cifrado de proveedores.
Opcionales
| Variable | Servicio | Para qué |
|---|---|---|
UNSPLASH_ACCESS_KEY | API | Buscar imágenes de Unsplash desde la biblioteca. |
DEMO_MODE | API y Web | API limita acciones de escritura; Web muestra el aviso de demostración. |
WORKER_STOP_GRACE_PERIOD | Compose de API | Margen para finalizar trabajos al detener Worker. Por defecto 15m. |
Si no usas Unsplash, omite UNSPLASH_ACCESS_KEY; no la definas con un valor vacío.
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.