Files
PANEL_BASES_ANEXO24/docker-compose.prod.yml

74 lines
3.0 KiB
YAML

services:
app:
image: dev.aduanasoft.com:8443/panel-bases-anexo24/app:latest
restart: unless-stopped
ports:
- "3000:3000"
environment:
# SQL Server: credenciales globales (server_name/database_name vienen de a24c.database_nodes en Postgres)
- PANEL_MSSQL_USER=${PANEL_MSSQL_USER}
- PANEL_MSSQL_PASSWORD=${PANEL_MSSQL_PASSWORD}
- PANEL_MSSQL_DOCKER=true
- IN_DOCKER=true
# PostgreSQL: BD externa (ControlDesk), accesible desde el host
- DB_POSTGRES_HOST=host.docker.internal
- DB_POSTGRES_PORT=${DB_POSTGRES_PORT:-5432}
- DB_POSTGRES_USER=${DB_POSTGRES_USER}
- DB_POSTGRES_PASS=${DB_POSTGRES_PASS}
- DB_POSTGRES_DB=${DB_POSTGRES_DB}
# JWT
- JWT_SECRET=${JWT_SECRET}
# Cifrado en reposo de las credenciales SQL/SSH de restore_targets (AES-256-GCM).
# Sin esta clave el panel no puede descifrar la contraseña SSH y por lo tanto no puede
# instalar CRAS en un servidor.
- ENCRYPTION_KEY=${ENCRYPTION_KEY:?ENCRYPTION_KEY es obligatoria}
# Token de servicio que usan los agentes CloudRestoreAS en /api/restore/*. Los endpoints
# fallan cerrado (500) sin él, y el instalador remoto lo siembra en el .env del agente.
- CLOUDRESTORE_API_TOKEN=${CLOUDRESTORE_API_TOKEN:?CLOUDRESTORE_API_TOKEN es obligatorio}
# Ruta de respaldos montada desde el host
- BACKUP_PATH=/data/backups
# --- Distribución de versiones de CloudRestoreAS -----------------------
# Gitea es la fuente de verdad de los binarios; el panel solo LEE (scope read:package).
- GITEA_BASE_URL=${GITEA_BASE_URL:-https://git.aduanasoft.com}
- GITEA_OWNER=${GITEA_OWNER:-ADUANASOFT}
- GITEA_TOKEN=${GITEA_TOKEN:-}
- CRAS_PACKAGE_NAME=${CRAS_PACKAGE_NAME:-cloudrestoreas}
# Caché local de artefactos (~270 MB cada uno, 2 por versión).
- CRAS_RELEASES_DIR=/data/cras-releases
- CRAS_CACHE_KEEP_VERSIONS=${CRAS_CACHE_KEEP_VERSIONS:-3}
# URL con la que el agente instalado reportará al panel. Debe ser alcanzable desde los
# servidores de restauración, no localhost.
- PANEL_PUBLIC_URL=${PANEL_PUBLIC_URL:-${ORIGIN}}
- PORT=3000
- ORIGIN=${ORIGIN}
- NODE_ENV=production
# SMTP para avisos (opcional — vacío deshabilita el envío sin errores)
- SMTP_HOST=${SMTP_HOST:-}
- SMTP_PORT=${SMTP_PORT:-587}
- SMTP_USER=${SMTP_USER:-}
- SMTP_PASSWORD=${SMTP_PASSWORD:-}
- SMTP_FROM=${SMTP_FROM:-}
- SMTP_USE_TLS=${SMTP_USE_TLS:-true}
volumes:
- ${BACKUP_HOST_PATH}:/data/backups
# Caché de artefactos de CRAS. Va en un bind-mount del host (no en un volumen anónimo)
# para que sobreviva a los redeploy: re-descargar cientos de MB en cada actualización
# del panel sería desperdicio.
- ${CRAS_RELEASES_HOST_PATH:-./data/cras-releases}:/data/cras-releases
extra_hosts:
- "host.docker.internal:host-gateway"
networks:
- aduanasoft-network
networks:
aduanasoft-network:
external: true