Files
homelab-infra/ops/policy-checks
Micha cbfbb8ca4f Add self-hosted Healthchecks stack for internal job monitoring (hybrid)
Self-hosted Healthchecks (ops/healthchecks/) as the hub for internal
cron/job heartbeats. The three host-down/backup watchdogs (Borg pre-hook,
baerchen nearline pull, monitoring watchdog #8) deliberately stay on
healthchecks.io cloud, since an on-host watcher cannot report a host outage.

- frontend_net + dedicated PostgreSQL 18 in healthchecks_internal
- native Healthchecks auth; ping/API exempt from Authelia (n8n/Komodo pattern)
- registered as middleware_exempt in ops/policy-checks/exceptions.json
- docs: DECISIONS, ARCHITECTURE (3.1/4.2/7.6/10), SERVICE_CATALOG,
  SECRETS_MAP, MASTER_TODO, README index

docker compose config validated (exit 0). Not yet deployed: host secret file,
appdata dir, Komodo stack + ENV and Gitea webhook remain operator steps.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 20:09:56 +02:00
..
2026-05-26 19:42:01 +02:00
2026-05-26 19:42:01 +02:00

Policy Checks

Manuelle, read-only Repo-Pruefungen fuer homelab-infra.

Ziel:

  • offensichtliche Fehler vor einem Push oder Deploy erkennen
  • dokumentierte Ausnahmen sichtbar halten, aber nicht als Fehlalarm behandeln
  • keine Container aendern, keine Deploys ausloesen, keine Dateien ausserhalb des Reports schreiben

Start

Aus dem Repo-Root:

powershell -ExecutionPolicy Bypass -File .\ops\policy-checks\check_repo.ps1

Mit Report-Datei:

powershell -ExecutionPolicy Bypass -File .\ops\policy-checks\check_repo.ps1 -ReportPath .\ops\policy-checks\last-report.md

Was geprueft wird

  • docker compose config --quiet fuer alle Compose-Dateien
  • SHA256-Digests nur dann, wenn ein Digest im Image steht
  • keine echten .env- oder stack.env-Dateien im Repo
  • Datenbank-/Cache-Dienste nicht im frontend_net
  • security_opt: no-new-privileges:true
  • Host-Port-Mappings
  • Traefik-Router mit Host(...) und Middleware-Standard fuer geschuetzte Admin-/Ops-Dienste
  • sichtbare Report-Punkte fuer dokumentierte Ausnahmen wie user: "0", privileged: true oder network_mode: host
  • digest-gepinnte mutable Tags bleiben sichtbar; nur explizit dokumentierte Ausnahmen werden als Info statt Warning gewertet

Wichtige Betriebsregel

Dieses Script ist absichtlich erstmal nur ein manuelles Werkzeug.

  • kein Cronjob
  • keine taegliche Automatik
  • keine CI-Pflicht im ersten Schritt

Empfohlene Nutzung:

  • vor Pushes mit Compose-/Traefik-/Netzwerk-Aenderungen
  • vor neuen Stacks
  • vor groesseren Hardening-Sprints

Exit-Code

  • 0: keine kritischen Findings
  • 1: mindestens ein kritisches Finding

Warnings brechen den Lauf nicht.