Saltar al contenido principal

Despliegue con Docker Compose

La forma más rápida de ejecutar CentralOps es con Docker Compose. Levanta todo lo que la plataforma necesita — API, workers de recolección (Celery), planificador, Redis, Postgres y el frontend (Nginx) — en un único host. Ideal para evaluación, desarrollo y producción en single-host.

Cuándo usar
  • Docker Compose (esta página): 1 servidor, empezar rápido.
  • Kubernetes / Helm: producción a escala, multi-nodo, HA.

Requisitos previos​

  • Docker 24+ y el plugin Docker Compose v2 (docker compose version).
  • ~2 vCPU / 4 GB de RAM para empezar.
  • Puertos libres en el host: 3000 (HTTP) y 3443 (HTTPS).

Paso a paso​

1. Obtén el código​

git clone https://github.com/SEGARK-oficial/CentralOps.git
cd CentralOps

2. Configura el entorno​

El docker compose lee el .env del directorio del archivo compose (compose/) — no de la raíz del repositorio. Copia el ejemplo allí y ajusta los secretos:

cp compose/.env.example compose/.env

Define en compose/.env (el compose se niega a levantar sin los dos primeros):

  • POSTGRES_PASSWORD — contraseña de Postgres (obligatoria).
  • REDIS_PASSWORD — contraseña de Redis; el AUTH de Redis se exige siempre (obligatoria).
  • APP_MASTER_KEY — clave maestra de cifrado (≥ 32 caracteres). Obligatoria con APP_ENV=production (valor por defecto del ejemplo): sin ella el contenedor aborta el arranque. Genérala con openssl rand -hex 32 (abajo). La generación automática (persistida en /app/data/app_master_key) solo existe en dev/test, con APP_ENV=development.

Genera secretos fuertes:

openssl rand -base64 24 # POSTGRES_PASSWORD y REDIS_PASSWORD
openssl rand -hex 32 # APP_MASTER_KEY

Para producción con HTTPS, mantén APP_ENV=production (valor por defecto del ejemplo — fuerza SESSION_SECURE_COOKIE=true). La referencia completa está en Configuración.

3. Levanta el stack​

Desde la raíz del repositorio, apuntando al archivo en compose/:

docker compose -f compose/docker-compose.yml up --build -d

El primer build compila el backend y el frontend — los siguientes arranques son casi instantáneos.

4. Accede​

  • HTTP: http://localhost:3000
  • HTTPS: https://localhost:3443

Si certs/tls.crt y certs/tls.key no existen, el contenedor genera un certificado autofirmado automáticamente (el navegador te avisará; acéptalo para probar). Para un certificado propio, monta los archivos en certs/.

5. Verifica el estado​

La preparación real (Postgres + Redis) la verifica el healthcheck del contenedor — el /readyz de la API no se publica en el borde. Comprueba el estado de los servicios:

docker compose -f compose/docker-compose.yml ps

Los servicios centralops (API) y frontend deben aparecer como healthy. Para leer el JSON de preparación directo en la API:

docker compose -f compose/docker-compose.yml exec centralops \
curl -fsS http://127.0.0.1:8000/readyz
# {"status":"ready","checks":{"db":"ok","redis":"ok"}}

Con todo healthy, continúa hacia el Primer Inicio de Sesión para crear la cuenta de administrador.

Ejecutar imágenes listas (sin build)​

Las imágenes oficiales se publican en GitHub Container Registry en cada release: ghcr.io/segark-oficial/centralops (API) y ghcr.io/segark-oficial/centralops-frontend (frontend). Para levantar sin compilar localmente, apunta el compose hacia ellas en compose/.env:

IMAGE_NAME=ghcr.io/segark-oficial/centralops
IMAGE_TAG=v1.0.0 # fija una tag de release; evita `latest` en producción

Y levanta descargando las imágenes en vez de compilar:

docker compose -f compose/docker-compose.yml pull
docker compose -f compose/docker-compose.yml up -d
nota

El stack necesita varios servicios (API, frontend, workers, Postgres, Redis) — no hay una imagen única que ejecute todo en un solo contenedor. El compose/docker-compose.yml es el que orquesta el conjunto, sea compilando (paso 3) o descargando las imágenes listas.

Operación básica​

Ejecutando desde la raíz del repositorio (todos los comandos apuntan a compose/docker-compose.yml):

¿Instalación Enterprise? Incluye la overlay en TODOS los comandos

Si tu stack ejecuta la edición Enterprise (Upgrade a Enterprise), todo comando docker compose de esta página debe incluir también -f compose/docker-compose.ee.yml — por ejemplo: docker compose -f compose/docker-compose.yml -f compose/docker-compose.ee.yml up -d. Un up -d/pull solo con el archivo base degrada la stack a Community silenciosamente (la imagen EE y el mount del keyring de la licencia se eliminan). Alternativa: haz la overlay permanente con COMPOSE_FILE=docker-compose.yml:docker-compose.ee.yml en compose/.env y ejecuta los comandos desde dentro de compose/, sin -f.

AcciónComando
Ver logs de la APIdocker compose -f compose/docker-compose.yml logs -f centralops
Ver logs del frontenddocker compose -f compose/docker-compose.yml logs -f frontend
Detenerdocker compose -f compose/docker-compose.yml down
Actualizar imágenesdocker compose -f compose/docker-compose.yml pull && docker compose -f compose/docker-compose.yml up -d
Backup de la base de datosdocker compose -f compose/docker-compose.yml exec postgres pg_dump -U centralops centralops > backup.sql

Próximos pasos​