Pular para o conteúdo

Instalar Selega

A Selega faz self-host com Docker. O docker-compose.yml fornecido sobe dois contêineres — a Selega e seu próprio PostgreSQL — mais um volume para os dados. Você não precisa instalar ou provisionar um banco de dados à parte.

  • Docker com o plugin Compose (docker compose).
  • Uma porta do host para a UI web (padrão 8088).
  • Para produção: um proxy reverso com HTTPS/TLS (Caddy, nginx, ou o TLS embutido do seu painel).

A imagem do contêiner é construída a partir de node:22-slim e embute Tesseract OCR (com o pacote de idioma espanhol) e poppler-utils para PDFs escaneados. Roda como usuário não-root.

Terminal window
git clone https://github.com/diegoparras/selega.git && cd selega
cp .env.example .env # edite POSTGRES_PASSWORD (use algo forte)
docker compose up -d --build
docker compose logs selega # a senha de admin gerada é impressa aqui (uma vez)
# → http://localhost:8088

É só isso: dois contêineres (selega + selega-db) e um volume para os dados.

A Selega é publicada no GHCR a cada push como ghcr.io/diegoparras/selega:latest, e o docker-compose.yml também declara build: .. Você pode portanto construir a partir do repo ou baixar a imagem publicada:

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

Copie .env.example para .env e defina valores reais. Nunca faça commit do .env no git.

VariávelPadrãoFinalidade
POSTGRES_PASSWORD— (obrigatória)Senha do banco de dados. Use algo forte.
SELEGA_ADMIN_EMAILadmin@selega.localUsuário do primeiro superadmin.
SELEGA_ADMIN_PASS(vazio)Deixe vazio → uma senha é gerada e impressa uma vez nos logs.
SELEGA_SECURE_COOKIE0Defina como 1 atrás de HTTPS/TLS (cookie de sessão enviado apenas por HTTPS).
SELEGA_PORT8088Porta do host (o app escuta em 8080 dentro do contêiner).
OPENROUTER_KEY(vazio)Chave de IA na nuvem opcional. Prefira carregá-la a partir do Admin (armazenada como write-only).
POSTGRES_USER / POSTGRES_DBselegaUsuário / nome do banco de dados.
  1. Rode docker compose logs selega (ou leia os logs do seu painel) e copie a senha de admin gerada. Ela é impressa uma vez.
  2. Faça login com SELEGA_ADMIN_EMAIL e essa senha. Você agora é superadmin.
  3. Abra o menu kebab (⋮) → Sistema: escolha quais jurisdições esta instalação atende e configure os motores.
  4. Abra o menu kebab (⋮) → Administração: crie usuários (agente / supervisor / auditor / admin) e edite as regras.

Todos — Dokploy, Easypanel, Coolify e Portainer — suportam Docker Compose. O caminho recomendado é conectar este repo do GitHub para que o painel construa a imagem para você; se o seu painel só aceita um compose colado, use o bloco somente-imagem acima.

A única variável obrigatória é POSTGRES_PASSWORD. Deixe SELEGA_ADMIN_PASS vazio para que a Selega gere a senha de admin e a imprima uma vez nos logs do contêiner. Quando o painel fornece TLS (Dokploy, Easypanel e Coolify fazem automaticamente), defina SELEGA_SECURE_COOKIE=1.

Terminal window
git pull && docker compose up -d --build # construir a partir do repo
# ou, com a imagem publicada:
docker compose pull && docker compose up -d
  • TLS: coloque a Selega atrás de um proxy reverso com HTTPS e defina SELEGA_SECURE_COOKIE=1.
  • Segredos fortes no .env; nunca faça commit do .env. SELEGA_ADMIN_PASS vazio → gerada automaticamente.
  • Feche a porta do Postgres — não exponha o serviço db ao host em produção.
  • Faça backup do volume selega-pg — ele é o registro das legalizações.

O contêiner roda como usuário não-root, com CSP e cabeçalhos de segurança, hashing de senha com scrypt, sessões HMAC, bloqueio de login e queries parametrizadas. É auditado com semgrep, OWASP ZAP, Trivy e gitleaks.