Salta ai contenuti

Installa Selega

Selega è in self-hosting con Docker. Il file docker-compose.yml fornito avvia due container — Selega e il suo PostgreSQL — più un volume per i dati. Non è necessario installare o predisporre un database separatamente.

  • Docker con il plugin Compose (docker compose).
  • Una porta host per l’interfaccia web (predefinita 8088).
  • Per la produzione: un reverse proxy con HTTPS/TLS (Caddy, nginx o il TLS integrato del tuo pannello).

L’immagine del container è costruita da node:22-slim e integra Tesseract OCR (con il language pack spagnolo) e poppler-utils per i PDF scansionati. Gira come utente non-root.

Terminal window
git clone https://github.com/diegoparras/selega.git && cd selega
cp .env.example .env # modifica POSTGRES_PASSWORD (usa qualcosa di robusto)
docker compose up -d --build
docker compose logs selega # la password amministratore generata viene stampata qui (una sola volta)
# → http://localhost:8088

Questo è tutto: due container (selega + selega-db) e un volume per i dati.

Selega viene pubblicata su GHCR a ogni push come ghcr.io/diegoparras/selega:latest, e il docker-compose.yml dichiara anche build: .. Puoi quindi sia costruire dal repo sia scaricare l’immagine pubblicata:

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

Copia .env.example in .env e imposta valori reali. Non committare mai .env su git.

VariabilePredefinitoScopo
POSTGRES_PASSWORD— (obbligatoria)Password del database. Usa qualcosa di robusto.
SELEGA_ADMIN_EMAILadmin@selega.localUtenza del primo superamministratore.
SELEGA_ADMIN_PASS(vuoto)Lascia vuoto → una password viene generata e stampata una sola volta nei log.
SELEGA_SECURE_COOKIE0Imposta a 1 dietro HTTPS/TLS (cookie di sessione inviato solo su HTTPS).
SELEGA_PORT8088Porta host (l’app ascolta su 8080 all’interno del container).
OPENROUTER_KEY(vuoto)Chiave IA cloud opzionale. Preferibile caricarla dall’Amministrazione (memorizzata in sola scrittura).
POSTGRES_USER / POSTGRES_DBselegaUtente / nome del database.
  1. Esegui docker compose logs selega (o leggi i log del tuo pannello) e copia la password amministratore generata. Viene stampata una sola volta.
  2. Accedi con SELEGA_ADMIN_EMAIL e quella password. Ora sei superamministratore.
  3. Apri il menu kebab (⋮) → Sistema: scegli quali giurisdizioni serve questa installazione e configura i motori.
  4. Apri il menu kebab (⋮) → Amministrazione: crea gli utenti (operatore / supervisore / revisore / amministratore) e modifica le regole.

Dokploy, Easypanel, Coolify e Portainer supportano tutti Docker Compose. Il percorso consigliato è connettere questo repo GitHub affinché il pannello costruisca l’immagine al posto tuo; se il tuo pannello accetta solo un compose incollato, usa il blocco con sola immagine qui sopra.

L’unica variabile obbligatoria è POSTGRES_PASSWORD. Lascia SELEGA_ADMIN_PASS vuota affinché Selega generi la password amministratore e la stampi una sola volta nei log del container. Quando il pannello fornisce TLS (Dokploy, Easypanel e Coolify lo fanno automaticamente), imposta SELEGA_SECURE_COOKIE=1.

Terminal window
git pull && docker compose up -d --build # costruisci dal repo
# oppure, con l'immagine pubblicata:
docker compose pull && docker compose up -d
  • TLS: metti Selega dietro un reverse proxy con HTTPS e imposta SELEGA_SECURE_COOKIE=1.
  • Segreti robusti in .env; non committare mai .env. SELEGA_ADMIN_PASS vuota → generata automaticamente.
  • Chiudi la porta di Postgres — non esporre il servizio db all’host in produzione.
  • Esegui il backup del volume selega-pg — è il registro delle legalizzazioni.

Il container gira come utente non-root, con CSP e header di sicurezza, hashing delle password con scrypt, sessioni HMAC, blocco del login e query parametrizzate. È auditato con semgrep, OWASP ZAP, Trivy e gitleaks.