Ir al contenido

Instalar Selega

Selega se self-hostea con Docker. El docker-compose.yml provisto levanta dos contenedores — Selega y su propio PostgreSQL — más un volumen para los datos. No necesitas instalar ni aprovisionar una base por separado.

  • Docker con el plugin Compose (docker compose).
  • Un puerto del host para la interfaz web (por defecto 8088).
  • Para producción: un reverse proxy con HTTPS/TLS (Caddy, nginx, o el TLS propio de tu panel).

La imagen del contenedor se construye desde node:22-slim y trae integrados Tesseract OCR (con el paquete de idioma español) y poppler-utils para PDF escaneados. Corre como usuario no-root.

Ventana de terminal
git clone https://github.com/diegoparras/selega.git && cd selega
cp .env.example .env # edita POSTGRES_PASSWORD (usa algo fuerte)
docker compose up -d --build
docker compose logs selega # aquí se imprime la contraseña de admin generada (una vez)
# → http://localhost:8088

Eso es todo: dos contenedores (selega + selega-db) y un volumen para los datos.

Selega se publica en GHCR en cada push como ghcr.io/diegoparras/selega:latest, y el docker-compose.yml también declara build: .. Por eso puedes construir desde el repo o descargar la imagen publicada:

Ventana de terminal
git clone https://github.com/diegoparras/selega.git && cd selega
cp .env.example .env
docker compose up -d --build

Copia .env.example a .env y pon valores reales. Nunca subas .env a git.

VariableDefaultPara qué
POSTGRES_PASSWORD— (obligatoria)Contraseña de la base. Usa algo fuerte.
SELEGA_ADMIN_EMAILadmin@selega.localUsuario del primer superadmin.
SELEGA_ADMIN_PASS(vacío)Déjala vacía → se genera una contraseña y se imprime una vez en los logs.
SELEGA_SECURE_COOKIE0Pon 1 detrás de HTTPS/TLS (la cookie de sesión viaja solo por HTTPS).
SELEGA_PORT8088Puerto del host (la app escucha en 8080 dentro del contenedor).
OPENROUTER_KEY(vacío)API key de IA nube, opcional. Mejor cargarla desde Admin (queda write-only).
POSTGRES_USER / POSTGRES_DBselegaUsuario / nombre de la base.
  1. Ejecuta docker compose logs selega (o lee los logs de tu panel) y copia la contraseña de admin generada. Se imprime una sola vez.
  2. Inicia sesión con SELEGA_ADMIN_EMAIL y esa contraseña. Eres superadmin.
  3. Abre el menú kebab (⋮) → Sistema: elige qué jurisdicciones atiende esta instalación y configura los motores.
  4. Abre el menú kebab (⋮) → Administración: crea usuarios (agente / supervisor / auditor / admin) y edita las reglas.

Dokploy, Easypanel, Coolify y Portainer soportan Docker Compose. El camino recomendado es conectar este repo de GitHub para que el panel construya la imagen por ti; si tu panel solo acepta un compose pegado, usa el bloque image-only de arriba.

La única variable obligatoria es POSTGRES_PASSWORD. Deja SELEGA_ADMIN_PASS vacía para que Selega genere la contraseña de admin y la imprima una vez en los logs del contenedor. Cuando el panel provee TLS (Dokploy, Easypanel y Coolify lo hacen automáticamente), pon SELEGA_SECURE_COOKIE=1.

Ventana de terminal
git pull && docker compose up -d --build # construir desde el repo
# o, con la imagen publicada:
docker compose pull && docker compose up -d
  • TLS: pon Selega detrás de un reverse proxy con HTTPS y configura SELEGA_SECURE_COOKIE=1.
  • Secretos fuertes en .env; nunca subas .env. SELEGA_ADMIN_PASS vacía → autogenerada.
  • Cierra el puerto de Postgres — no expongas el servicio db al host en producción.
  • Respalda el volumen selega-pg — es el registro de las legalizaciones.

El contenedor corre como usuario no-root, con CSP y cabeceras de seguridad, hash de contraseñas con scrypt, sesiones HMAC, lockout de login y queries parametrizadas. Está auditado con semgrep, OWASP ZAP, Trivy y gitleaks.