Español
Instalación
Variables de entorno

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
VariablePara qué sirve
API_PUBLIC_ORIGINDominio al que vuelven los callbacks OAuth. Debe ser HTTPS público.
WEB_ORIGINÚnico origen que CORS acepta con cookies.
COOKIE_DOMAINComparte 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_KEYCifra los tokens OAuth y las claves de proveedores guardadas en la base.
FILES_VOLUME_NAMENombre 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
VariablePara qué sirve
INTERNAL_API_ORIGINCómo llega Web a la API. Se consume en ejecución desde el proxy y las rutas de servidor.
PORTAL_HOSTNombre 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

VariableServicioPara qué
UNSPLASH_ACCESS_KEYAPIBuscar imágenes de Unsplash desde la biblioteca.
DEMO_MODEAPI y WebAPI limita acciones de escritura; Web muestra el aviso de demostración.
WORKER_STOP_GRACE_PERIODCompose de APIMargen 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.