Aller au contenu

Installer Selega

Selega s’auto-héberge avec Docker. Le fichier docker-compose.yml fourni démarre deux conteneurs — Selega et sa propre base PostgreSQL — plus un volume pour les données. Vous n’avez pas besoin d’installer ou de provisionner une base de données séparément.

  • Docker avec le plugin Compose (docker compose).
  • Un port hôte pour l’interface web (par défaut 8088).
  • Pour la production : un reverse proxy avec HTTPS/TLS (Caddy, nginx, ou le TLS intégré de votre panneau).

L’image du conteneur est construite à partir de node:22-slim et embarque Tesseract OCR (avec le pack de langue espagnol) et poppler-utils pour les PDF scannés. Elle s’exécute en utilisateur non-root.

Fenêtre de terminal
git clone https://github.com/diegoparras/selega.git && cd selega
cp .env.example .env # modifier POSTGRES_PASSWORD (utilisez quelque chose de robuste)
docker compose up -d --build
docker compose logs selega # le mot de passe admin généré est affiché ici (une seule fois)
# → http://localhost:8088

C’est tout : deux conteneurs (selega + selega-db) et un volume pour les données.

Selega est publiée sur GHCR à chaque push sous ghcr.io/diegoparras/selega:latest, et le docker-compose.yml déclare aussi build: .. Vous pouvez donc soit construire depuis le dépôt, soit récupérer l’image publiée :

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

Copiez .env.example vers .env et définissez des valeurs réelles. Ne commitez jamais .env dans git.

VariablePar défautRôle
POSTGRES_PASSWORD— (requis)Mot de passe de la base de données. Utilisez quelque chose de robuste.
SELEGA_ADMIN_EMAILadmin@selega.localUtilisateur du premier superadmin.
SELEGA_ADMIN_PASS(vide)Laisser vide → un mot de passe est généré et affiché une seule fois dans les logs.
SELEGA_SECURE_COOKIE0Mettre à 1 derrière HTTPS/TLS (cookie de session envoyé en HTTPS uniquement).
SELEGA_PORT8088Port hôte (l’application écoute sur 8080 à l’intérieur du conteneur).
OPENROUTER_KEY(vide)Clé d’IA cloud optionnelle. Préférez la charger depuis l’Admin (stockée en écriture seule).
POSTGRES_USER / POSTGRES_DBselegaUtilisateur / nom de la base de données.
  1. Exécutez docker compose logs selega (ou lisez les logs de votre panneau) et copiez le mot de passe admin généré. Il est affiché une seule fois.
  2. Connectez-vous avec SELEGA_ADMIN_EMAIL et ce mot de passe. Vous êtes désormais superadmin.
  3. Ouvrez le menu kebab (⋮) → Système : choisissez quelles juridictions cette installation dessert et configurez les moteurs.
  4. Ouvrez le menu kebab (⋮) → Administration : créez des utilisateurs (agent / superviseur / auditeur / admin) et modifiez les règles.

Dokploy, Easypanel, Coolify et Portainer prennent tous en charge Docker Compose. La voie recommandée est de connecter ce dépôt GitHub pour que le panneau construise l’image à votre place ; si votre panneau n’accepte qu’un compose collé, utilisez le bloc image seule ci-dessus.

La seule variable obligatoire est POSTGRES_PASSWORD. Laissez SELEGA_ADMIN_PASS vide pour que Selega génère le mot de passe admin et l’affiche une seule fois dans les logs du conteneur. Lorsque le panneau fournit le TLS (Dokploy, Easypanel et Coolify le font automatiquement), mettez SELEGA_SECURE_COOKIE=1.

Fenêtre de terminal
git pull && docker compose up -d --build # construire depuis le dépôt
# ou, avec l'image publiée :
docker compose pull && docker compose up -d
  • TLS : placez Selega derrière un reverse proxy avec HTTPS et mettez SELEGA_SECURE_COOKIE=1.
  • Secrets robustes dans .env ; ne commitez jamais .env. SELEGA_ADMIN_PASS vide → auto-généré.
  • Fermez le port Postgres — n’exposez pas le service db à l’hôte en production.
  • Sauvegardez le volume selega-pg — c’est le registre des légalisations.

Le conteneur s’exécute en utilisateur non-root, avec CSP et en-têtes de sécurité, hachage de mots de passe scrypt, sessions HMAC, verrouillage à la connexion et requêtes paramétrées. Il est audité avec semgrep, OWASP ZAP, Trivy et gitleaks.