Files
ObsiGate/docs/GUIDES/DEPLOIEMENT_DOCKER.md
T
bruno 705f755b6b
CI / lint (push) Successful in 2m2s
CI / security (push) Successful in 1m25s
CI / test (push) Successful in 4m13s
CI / build (push) Successful in 1m16s
CI / e2e (push) Successful in 11m56s
docs: guides d'utilisation, capture reelle et README ameliores
2026-09-22 22:40:51 -04:00

6.7 KiB

🐳 Guide de déploiement Docker

Ce guide couvre l'installation, la configuration et l'exploitation d'ObsiGate avec Docker / Docker Compose, y compris le reverse proxy HTTPS et les mises à jour.

Public : administrateurs, ops Voir aussi : Prise en main · Authentification & sécurité · DEVELOPMENT_AND_RELEASES.md


1. Prérequis

Composant Version minimale
Docker ≥ 20.10
docker-compose ≥ 2.0
Espace disque ~200 Mo pour l'image

Systèmes supportés : Linux (Ubuntu, Debian…), macOS (Intel & Apple Silicon), Windows (Docker Desktop), NAS compatibles Docker (Synology, QNAP…).


2. Configuration de docker-compose.yml

services:
  obsigate:
    build:
      context: .
    image: obsigate:latest
    container_name: obsigate
    restart: unless-stopped
    ports:
      - "2020:8080"          # port local 2020 → conteneur 8080
    volumes:
      - /home/user/Documents/Obsidian-Recettes:/vaults/Recettes:ro
      - /home/user/Documents/Obsidian-IT:/vaults/IT:ro
      - ./data:/app/data     # persistance auth/config/backups
    environment:
      - VAULT_1_NAME=Recettes
      - VAULT_1_PATH=/vaults/Recettes
      - VAULT_2_NAME=IT
      - VAULT_2_PATH=/vaults/IT
      - OBSIGATE_AUTH_ENABLED=true
      - OBSIGATE_ADMIN_USER=admin
    env_file:
      - .env                 # secrets (mot de passe admin…)

Important : les chemins de vaults doivent être absolus et montés en lecture seule (:ro) sauf si vous voulez autoriser l'édition depuis ObsiGate. Le dossier ./data doit être persistant.

Variables de vault

Variable Description Exemple
VAULT_N_NAME Nom affiché Recettes
VAULT_N_PATH Chemin dans le conteneur /vaults/Recettes
VAULT_N_ATTACHMENTS_PATH Dossier d'attachements (optionnel) Assets/Images
VAULT_N_SCAN_ATTACHMENTS Scanner les images au démarrage true

Nommage : lettres, chiffres et tirets uniquement ; le nom doit correspondre au chemin interne.


3. Construire et lancer

3.1 Script build.sh (recommandé)

chmod +x build.sh   # une seule fois
./build.sh

Le script :

  1. vérifie Docker et Docker Compose (versions) ;
  2. valide docker-compose.yml (présence + syntaxe) ;
  3. contrôle chaque volume monté (avertit si la source n'existe pas) ;
  4. construit l'image (multi-stage, ~180 Mo) ;
  5. démarre le conteneur ;
  6. affiche le statut puis les logs en temps réel.
Option Description
--help, -h Aide complète
--build-only Construire sans démarrer
--no-cache Rebuild complet sans cache (défaut)
--cache Utiliser le cache Docker (plus rapide)
--progress=plain / --progress=tty Sortie verbeuse / interactive

3.2 Alternative manuelle

docker compose build --no-cache
docker compose up -d

3.3 Exploitation

docker compose down      # arrêter
docker compose up -d     # redémarrer sans rebuild
docker compose logs -f   # logs temps réel
docker compose logs --tail=100 obsigate

Compatibilité Docker : l'image utilise une variante uvicorn minimale et fastapi 0.110.3 pour éviter des dépendances natives optionnelles (watchfiles, uvloop, httptools, fastapi-cli…) qui échouent sur Alpine, ARM ou i386.


4. Reverse proxy & HTTPS

ObsiGate sert du HTTP en clair ; placez un reverse proxy devant pour TLS.

4.1 Nginx (exemple)

server {
    listen 443 ssl http2;
    server_name obsigate.example.com;

    ssl_certificate     /etc/letsencrypt/live/obsigate.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/obsigate.example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:2020;
        proxy_http_version 1.1;
        proxy_set_header Host              $host;
        proxy_set_header X-Real-IP         $remote_addr;
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Upgrade           $http_upgrade;   # WebSocket collab
        proxy_set_header Connection        "upgrade";
        proxy_read_timeout 3600s;                            # SSE / WebSocket
    }
}

4.2 Variables à activer derrière un proxy

OBSIGATE_SECURE_COOKIES=true   # cookie Secure (HTTPS uniquement)
OBSIGATE_TRUST_PROXY=true      # confiance à X-Forwarded-For / Host

N'activez OBSIGATE_TRUST_PROXY que derrière un proxy de confiance, sinon l'adresse IP client peut être usurpée (rate limiting, audit).

Cloudflare Tunnel, Caddy et Traefik fonctionnent de la même façon (pensez au support WebSocket et aux longs timeouts pour le SSE).


5. Healthcheck & supervision

L'image intègre un healthcheck sur /api/health (statut, version, stats). Vous pouvez aussi l'interroger depuis l'hôte :

curl -s http://localhost:2020/api/health
curl -s http://localhost:2020/api/health/detailed   # admin

/api/admin/stream fournit un flux d'administration (admin uniquement).


6. Mises à jour

git pull
./build.sh            # reconstruit et redémarre

Vos données (./data) et vos vaults (volumes :ro) sont conservées. Pour un rebuild propre sans cache : ./build.sh --no-cache.

Version : le fichier VERSION à la racine est la source unique de vérité ; l'image et l'UI affichent la même version. Voir DEVELOPMENT_AND_RELEASES.md.


7. Sauvegardes

  • Données applicatives : sauvegardez ./data (utilisateurs, clés, partages, webhooks, jetons).
  • Vos notes : ObsiGate n'écrit dans les vaults que si elles sont montées en écriture. Un backup automatique interne est créé dans .obsigate-backup/ avant chaque modification (rotation 10 Mo d'audit).
  • Backups desktop : voir Desktop.

8. Multi-plateforme

L'image est publiée pour linux/amd64, linux/arm64, linux/arm/v7 et linux/386. Sur un NAS ou un Raspberry Pi, choisissez la variante correspondante (Buildx / platform: dans le compose).


9. Dépannage

Symptôme Piste
Port déjà utilisé sudo netstat -tulpn | grep 2020 puis changer ports: "2021:8080"
Vault introuvable Chemin absolu, permissions de lecture, redémarrer après modif
Build qui échoue docker system prune -f puis ./build.sh --progress=plain
Logs docker compose logs -f obsigate
Widgets temps réel inopérants derrière un proxy Autoriser les upgrades WebSocket et augmenter proxy_read_timeout
Login « insecure cookie » Passer en HTTPS ou retirer OBSIGATE_SECURE_COOKIES