Durcissement

compose.yaml fait tourner le conteneur de la façon recommandée :

Réglage

Effet

read_only: true

Le système de fichiers de l’image ne peut pas être modifié. Seuls /data et /tmp sont inscriptibles.

tmpfs: /tmp

Les fichiers temporaires (gros téléversements en cours) restent en mémoire, 64 Mo au plus, et disparaissent au redémarrage.

cap_drop: [ALL]

Aucune capacité Linux : l’application n’en a besoin d’aucune.

security_opt: no-new-privileges:true

Aucun processus ne peut gagner de privilèges, même par un binaire set-user-ID.

utilisateur 10001:10001

Défini dans l’image ; l’application ne tourne jamais en root.

Les mêmes réglages avec docker run :

docker run -d --name housecairn \
  --read-only --tmpfs /tmp:rw,noexec,nosuid,size=64m \
  --cap-drop ALL --security-opt no-new-privileges \
  --env-file deploy/production.env \
  -v housecairn-data:/data -p 127.0.0.1:8000:8000 \
  ghcr.io/housecairn/housecairn:X.Y.Z

/healthz répond {"status": "ok"} sans authentification et ne révèle rien d’autre ; le HEALTHCHECK de l’image l’appelle.

HouseCairn n’établit aucune connexion sortante que vous n’ayez configurée (authentification unique, plus tard les intégrations) et n’envoie aucune télémétrie.