Installer avec Docker Compose

HouseCairn est livré sous la forme d’une seule image de conteneur, ghcr.io/housecairn/housecairn, pour linux/amd64 et linux/arm64. Elle contient le serveur web, le worker de tâches de fond et les fichiers statiques. Tout ce qu’elle écrit va dans un seul volume, /data. Les décisions de conception de l’image sont dans l”ADR 0015.

Prérequis

  • Docker Engine 25.0 ou plus récent, avec le plugin Compose (docker compose) 2.24.0 ou plus récent.

  • Un reverse proxy qui termine le HTTPS devant HouseCairn (Caddy, Traefik, nginx…). HouseCairn écoute en HTTP simple, port 8000, et redirige chaque requête vers HTTPS ; il attend du proxy qu’il pose X-Forwarded-Proto. Voir Reverse proxy.

Installation

  1. Récupérez compose.yaml et deploy/production.env.example depuis le dépôt, avec la même arborescence :

    mkdir -p housecairn/deploy && cd housecairn
    curl -fsSLO https://raw.githubusercontent.com/HouseCairn/housecairn/main/compose.yaml
    curl -fsSL -o deploy/production.env \
      https://raw.githubusercontent.com/HouseCairn/housecairn/main/deploy/production.env.example
    
  2. Modifiez deploy/production.env : définissez ALLOWED_HOSTS et CSRF_TRUSTED_ORIGINS avec votre nom d’hôte (voir Variables d’environnement). Laissez SECRET_KEY vide : une clé est générée au premier démarrage. HOUSECAIRN_FORWARDED_ALLOW_IPS désigne le reverse proxy dont HouseCairn accepte les en-têtes : gardez 192.0.2.1 pour un proxy sur cet hôte, la passerelle du réseau fixé dans compose.yaml.

  3. Dans compose.yaml, remplacez l’étiquette edge par une version publiée, idéalement avec son condensat (ghcr.io/housecairn/housecairn:X.Y.Z@sha256:...). Vérifiez l’image avant le premier démarrage.

  4. Démarrez-le, puis vérifiez son état :

    docker compose up -d
    docker compose ps          # STATUS shows "healthy" after a few seconds
    docker compose logs -f housecairn
    
  5. Pointez votre reverse proxy vers http://127.0.0.1:8000. Pour faire tourner le proxy lui-même dans Compose (Caddy ou Traefik), voyez l’exemple de Reverse proxy, qui donne aussi la valeur de HOUSECAIRN_FORWARDED_ALLOW_IPS pour chaque cas.

À chaque démarrage, le conteneur crée la clé secrète si elle manque, applique les migrations de la base, puis lance le serveur web (gunicorn, deux processus par défaut) et le worker de tâches (django-q2). Si l’un des deux s’arrête, le conteneur s’arrête, et Compose le redémarre.

Ensuite : créer le premier administrateur.