Skip to main content
Voir en Markdown

Déployer Sovrium avec Docker Compose et PostgreSQL

Vous voulez que l'app et sa base PostgreSQL démarrent ensemble comme une seule stack, la base étant reliée par un unique DATABASE_URL.

Définir la stack

app.yaml
# compose.yaml
services:
  db:
    image: postgres:17
    environment:
      POSTGRES_PASSWORD: sovrium
      POSTGRES_DB: sovrium
    volumes: ['db-data:/var/lib/postgresql/data']
  app:
    image: ghcr.io/sovrium/sovrium:latest
    command: start /app/app.ts
    depends_on: [db]
    ports: ['3000:3000']
    volumes: ['./app.ts:/app/app.ts:ro']
    environment:
      DATABASE_URL: postgres://postgres:sovrium@db:5432/sovrium
      NODE_ENV: production
      SOVRIUM_ENCRYPTION_KEY: change-me-to-32-byte-hex
      BASE_URL: http://localhost:3000
volumes:
  db-data:

Générez la clé avec openssl rand -hex 32 et sortez-la du fichier compose en production — Compose lit un .env voisin, ou utilisez le coffre à secrets de votre orchestrateur. C'est le seul secret dont cette stack a besoin : le secret de signature des sessions en dérive.

Définissez-la ici plutôt que de laisser Sovrium en générer une. Cette stack ne donne aucun volume au conteneur applicatif : une clé générée vivrait dans la couche du conteneur et disparaîtrait à sa prochaine recréation — pendant que db-data conserve les identifiants qu'elle avait chiffrés. Fixez la valeur et ce décalage devient impossible. Voir Secrets.

Cette stack publie le port de l'application directement : aucun TRUSTED_PROXY_HOPS n'est donc défini et Sovrium indexe les limites de débit sur l'adresse de connexion — ce qui est correct ici. Dès que vous placez un reverse proxy ou un CDN devant, ajoutez TRUSTED_PROXY_HOPS avec le nombre de proxies sur le trajet, sinon tous les visiteurs se retrouvent dans le budget de limitation unique du proxy. La définir avant que ce proxy n'existe est pire que de l'omettre : le compteur atteindrait alors un en-tête que n'importe quel appelant peut écrire. Voir Reverse proxy en amont.

Lancer et vérifier

>_ terminal
docker compose up -d
curl -fsS http://localhost:3000/ >/dev/null && echo "up"

Comme DATABASE_URL est défini, Sovrium tourne sur Postgres et applique son schéma au démarrage.

Suite

Dernière mise à jour 1 septembre 2026

Cette documentation a été rédigée avec de l'IA : des erreurs ou du contenu obsolète sont donc possibles. Sovrium est en bêta. Les contributions et corrections sont les bienvenues.

Construit avec Sovrium