79 lines
3.4 KiB
YAML
79 lines
3.4 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}
|
|
|
|
# Clave Fernet compartida con a24c para cifrar la contraseña SQL de los nodos.
|
|
# DEBE ser idéntica a la SECRET_KEY del backend de a24c.
|
|
- SECRET_KEY=${SECRET_KEY}
|
|
# [LEGADO] Solo si existen credenciales en el formato antiguo `gcm:` por migrar. Hoy TODAS
|
|
# las de restore_targets siguen en ese formato, así que el instalador remoto de CRAS aún
|
|
# depende de esta clave para descifrar la contraseña SSH del destino.
|
|
- ENCRYPTION_KEY=${ENCRYPTION_KEY:-}
|
|
|
|
# Token de servicio que usan los agentes CloudRestoreAS en /api/restore/*. Obligatorio a
|
|
# propósito: service-auth.ts falla CERRADO con 500 si falta, así que sin `:?` el deploy
|
|
# arrancaría bien y los agentes recibirían 500 sin que nadie sepa por qué. Mismo patrón
|
|
# que MINIO_ROOT_USER en el compose de producción de a24c.
|
|
- 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
|