Saltar al contenido principal

Configuración

CentralOps se configura mediante variables de entorno. En Docker Compose provienen de compose/.env; en Kubernetes, de un Secret/ConfigMap.

El repositorio incluye dos archivos de ejemplo, con papeles distintos:

ArchivoPapel
compose/.env.exampleQuickstart — el que copias y editas para levantar la stack.
.env.example (raíz)Referencia completa — para consulta. Las variables que no llegan al compose (rate limit, bloqueo de auth, PII, Vault/KMS, sesiones, proxies de confianza) solo están documentadas aquí.
precaución
El .env vive en compose/, no en la raíz

Compose lee el .env del directorio del archivo compose. Un .env creado en la raíz del repositorio se ignora en silencio — la stack arranca con los valores por defecto como si el archivo no existiera. Cópialo siempre con cp compose/.env.example compose/.env.

Mínimo obligatorio

Para desplegar en producción solo necesitas POSTGRES_PASSWORD e, idealmente, una APP_MASTER_KEY definida por ti. El resto tiene un valor por defecto seguro.

Esenciales

VariableValor por defectoDescripción
APP_MASTER_KEY(generada y persistida en /app/data/app_master_key)Clave maestra de cifrado de los secretos (≥ 32 caracteres). Defínela tú en producción y guárdala de forma segura — perderla vuelve los secretos ilegibles.
APP_ENVproductionproduction exige HTTPS/cookie segura; usa development para desarrollo local sin TLS.
APP_COMPANY_NAMESua EmpresaNombre mostrado en la interfaz.
APP_COMPANY_PORTAL_NAMEPortal de LoginSubtítulo de la pantalla de inicio de sesión.

Base de datos (Postgres)

VariableValor por defectoDescripción
POSTGRES_PASSWORD(vacío — obligatorio)Contraseña de Postgres. Sin valor, el compose se niega a arrancar.
POSTGRES_USERcentralopsUsuario de la base de datos.
POSTGRES_DBcentralopsNombre de la base de datos.
DATABASE_URL(derivada de las variables anteriores)Sobrescríbela solo para usar un Postgres externo/gestionado (RDS, Neon…) o volver a SQLite en desarrollo: sqlite:////app/data/app.db.

Docker Compose levanta un Postgres 16 con volumen nombrado por defecto. En producción seria, prefiere un Postgres gestionado y apunta DATABASE_URL hacia él.

HTTPS y red (Nginx)

VariableValor por defectoDescripción
ENABLE_HTTPS01 habilita Nginx con TLS. Sin un certificado provisto en certs/, se genera uno autofirmado.
NGINX_SERVER_NAME_Valor de server_name en Nginx (usa tu dominio en producción, ej.: centralops.suaempresa.com).

Sesión y seguridad

VariableValor por defectoDescripción
SESSION_SECURE_COOKIEtrueUsa true cuando el acceso principal sea HTTPS (obligatorio con APP_ENV=production).
DEBUG_REQUESTS01 registra debug_requests.log con las llamadas a APIs externas (diagnóstico; desactívalo en producción).

Secretos de las integraciones

Las credenciales de cada integración se cifran en reposo. El proveedor de cifrado por defecto es local_fernet (AES derivado de la APP_MASTER_KEY). Detalles y rotación en Secretos y clave maestra.

Buenas prácticas

  • Fija las versiones: usa una etiqueta inmutable de imagen (ej.: v1.0.0) en producción, no latest.
  • APP_MASTER_KEY externa: defínela mediante Secret y haz copia de seguridad — es la clave de todo.
  • HTTPS siempre: ENABLE_HTTPS=1 + SESSION_SECURE_COOKIE=true + NGINX_SERVER_NAME con tu dominio.
  • Postgres gestionado en producción (backup, HA y parcheo a cargo del proveedor).