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:
| Archivo | Papel |
|---|---|
compose/.env.example | Quickstart — 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í. |
.env vive en compose/, no en la raízCompose 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.
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
| Variable | Valor por defecto | Descripció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_ENV | production | production exige HTTPS/cookie segura; usa development para desarrollo local sin TLS. |
APP_COMPANY_NAME | Sua Empresa | Nombre mostrado en la interfaz. |
APP_COMPANY_PORTAL_NAME | Portal de Login | Subtítulo de la pantalla de inicio de sesión. |
Base de datos (Postgres)
| Variable | Valor por defecto | Descripción |
|---|---|---|
POSTGRES_PASSWORD | (vacío — obligatorio) | Contraseña de Postgres. Sin valor, el compose se niega a arrancar. |
POSTGRES_USER | centralops | Usuario de la base de datos. |
POSTGRES_DB | centralops | Nombre 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)
| Variable | Valor por defecto | Descripción |
|---|---|---|
ENABLE_HTTPS | 0 | 1 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
| Variable | Valor por defecto | Descripción |
|---|---|---|
SESSION_SECURE_COOKIE | true | Usa true cuando el acceso principal sea HTTPS (obligatorio con APP_ENV=production). |
DEBUG_REQUESTS | 0 | 1 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, nolatest. - 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_NAMEcon tu dominio. - Postgres gestionado en producción (backup, HA y parcheo a cargo del proveedor).