9.4 KiB
9.4 KiB
Audit Report - KalliLab CORE
Datum: 2026-05-16 Gepruefte Compose-Dateien: 30
Kritische Befunde
Keine kritischen Befunde im Repo-Sollzustand gefunden.
- Keine Datenbank und kein Cache haengt in
frontend_net. - Keine produktive Compose-Datei ohne explizites
networks:-Feld gefunden. - Keine produktive
.env- oderstack.env-Datei ohne.example-Suffix im Repository gefunden. - Keine Klartext-Passwoerter, Tokens oder API-Keys in Compose-
environment:-Bloecken gefunden.
Mittlere Befunde
- Docker-Socket ausserhalb der im Audit-Prompt genannten Allowlist:
traefikmountet/var/run/docker.sock:/var/run/docker.sock:rointraefik/docker-compose.yml:34. Der Socket ist fuer den Docker-Provider fachlich nachvollziehbar, aber inHOMELAB_ARCHITECTURE_MASTER_V2.mdAbschnitt 10 nicht explizit als Docker-Socket-Ausnahme aufgefuehrt. - Docker-Socket ausserhalb der im Audit-Prompt genannten Allowlist:
alloymountet/var/run/docker.sock:/var/run/docker.sock:roinops/loki/docker-compose.yml:26. [AUSNAHME - dokumentiert] inHOMELAB_ARCHITECTURE_MASTER_V2.mdAbschnitt 10 alsalloyDocker-Socket read-only, aber nicht in der Prompt-Allowlist genannt. komodo-peripheryhaengt ohne Web-UI imfrontend_netinops/komodo/docker-compose.yml:92-94. Die Compose-Datei dokumentiert anops/komodo/docker-compose.yml:77-79den Grund als Git-Zugriff auf internes Gitea und Docker-Agent-Sonderfall. [AUSNAHME - lokal in Compose dokumentiert]hermes_netist ein app-internes Netz ohneinternal: true:ops/hermes-agent/docker-compose.yml:91-93. Das ist nicht Teil der explizit geforderteninternal: true-Liste, aber strukturell auffaellig, weil Gateway und Dashboard intern ueber dieses Netz sprechen.grafananutzt zusaetzlichbackend_netinops/grafana-influxdb/docker-compose.yml:27-30, obwohl die Architektur das Grafana/Influx-Paar primaer alsfrontend_net+grafana_influx_internalbeschreibt. Grund ist vermutlich Loki-Datasource-Zugriff;docs/REPO_MAP.mdnenntbackend_netfuer Grafana-Loki-Datasource. [AUSNAHME - dokumentiert]paperless-gptverwendetPAPERLESS_API_TOKENals Stack-ENV inapps/paperless-gpt/docker-compose.yml:15, taucht aber indocs/SECRETS_MAP.mdnicht als eigener aktiver Secret-Eintrag auf.
Hinweise
- Direkte Host-Ports sind nur bei dokumentierten Ausnahmen vorhanden:
- [AUSNAHME - dokumentiert]
traefik:80:80,443:443intraefik/docker-compose.yml:30-32. - [AUSNAHME - dokumentiert]
gitea:222:22incore/gitea/docker-compose.yml:17-18. - [AUSNAHME - dokumentiert]
adguard:53:53/tcp,53:53/udp,8082:80inhost-services/Adguard/docker-compose.yml:13-16. - [AUSNAHME - dokumentiert]
influxdb3-core:${INFLUXDB_BIND_IP:-127.0.0.1}:8181:8181inops/grafana-influxdb/docker-compose.yml:54-55.
- [AUSNAHME - dokumentiert]
backend_netwird in allen Compose-Dateien alsexternal: truereferenziert, z. B.infra/postgresql17/docker-compose.yml:25-26,infra/redis/docker-compose.yml:22-23,traefik/docker-compose.yml:59-60. Ob das externe Docker-Netz live wirklichinternal: trueist, ist aus dem Repo allein nicht verifizierbar.grafana_influx_lanhat bewusst keininternal: true:ops/grafana-influxdb/docker-compose.yml:88-89. [AUSNAHME - dokumentiert]- Mutable Tags sind mit Digests gepinnt, aber semantisch weiterhin mutable:
immich-server:release@sha256inapps/immich/docker-compose.yml:4.immich-machine-learning:release@sha256inapps/immich/docker-compose.yml:35.tailscale:stable@sha256inhost-services/tailscale/docker-compose.yml:3.ddns-updater:latest@sha256ininfra/ddns-updater/docker-compose.yml:3.komodo-core: Major-Tag2@sha256inops/komodo/docker-compose.yml:36.komodo-periphery: Major-Tag2@sha256inops/komodo/docker-compose.yml:82.uptime-kuma: Major-Tag1@sha256inops/uptime-kuma/docker-compose.yml:3.
- Reines
image: name:latestohne Digest wurde in produktiven Compose-Dateien nicht gefunden. - Alle Services haben
restart: unless-stopped. - Alle Services haben
security_opt: no-new-privileges:true. - [AUSNAHME - dokumentiert]
scrutinynutztprivileged: trueinops/scrutiny/docker-compose.yml:6. - [AUSNAHME - dokumentiert]
tailscalenutztnetwork_mode: hostinhost-services/tailscale/docker-compose.yml:6.
Dokumentations-Abweichungen
- Service-Namen in Compose vs.
docs/SERVICE_CATALOG.mdweichen bei Immich ab: Compose nutztimmich-server,immich-machine-learning,database,redisinapps/immich/docker-compose.yml:2,:33,:44,:53; der Katalog dokumentiertimmich_server,immich_machine_learning,immich_postgres,immich_redis. - Service-Name in Compose vs.
docs/SERVICE_CATALOG.mdweicht bei Paperless ab: Compose nutztpaperlessinapps/paperless/docker-compose.yml:2; der Katalog dokumentiertpaperless-ngx. - Service-Name in Compose vs.
docs/SERVICE_CATALOG.mdweicht bei Redis ab: Compose nutztredisininfra/redis/docker-compose.yml:2; der Katalog dokumentiertRedis. - Traefik-Host bei Hermes ist im Compose variabel:
Host(${HERMES_DASHBOARD_HOST})inops/hermes-agent/docker-compose.yml:81;docs/REPO_MAP.mddokumentiert konkrethermes.kaleschke.info. Das ist plausibel, aber maschinell nicht eindeutig abgleichbar. docs/REPO_MAP.mdVolumes-Tabelle ist fuer mehrere Mounts nur zusammenfassend, nicht pfadgenau. Beispiele mit Compose-Pfaden, die dort nicht wortgleich auftauchen:/mnt/user/appdata/unbound/configinapps/unbound/docker-compose.yml:7./mnt/user/appdata/ddns-updaterininfra/ddns-updater/docker-compose.yml:17./mnt/user/appdata/filebrowser/databaseund/mnt/user/appdata/filebrowser/configinops/filebrowser/docker-compose.yml:15-16./mnt/user/appdata/borg-ui/restoreinops/borg-ui/docker-compose.yml:27.
- Netzwerke in Compose sind alle in
docs/REPO_MAP.mdaufgefuehrt. - Traefik-Hosts aus Compose sind in
docs/REPO_MAP.mdaufgefuehrt; einzige Besonderheit ist der variable Hermes-Host. .example-Dateien haben passende Gegenspieler in.gitignore:.env,*.env,!*.env.example,**/stack.env,!**/stack.env.example.- Keine
.keep-Platzhalter-Dateien gefunden.
Offene Architektur-Punkte: aktueller Stand
immich_redis: weiterhin kein named volume. Compose-Serviceredisinapps/immich/docker-compose.yml:44-50hat aktuell gar keinenvolumes:-Block. Architekturpunkt bleibt offen.AdGuard Home: Admin-Port ist weiterhin direkt veroeffentlicht:8082:80inhost-services/Adguard/docker-compose.yml:15; keine Traefik-Labels vorhanden. Block F bleibt offen.filebrowser: Appdata-Breitmount ist entfernt; aktuelle Mounts sind/mnt/user/documents,/mnt/user/photos,/mnt/user/projekteplus eigene DB/Config inops/filebrowser/docker-compose.yml:12-16. Langfristiges Hardening bleibt moeglich, aber der groesste alte Breitmount ist erledigt.bentopdf: Compose ist vorhanden und Traefik-abgesichert inapps/bentopdf/docker-compose.yml:2-27. Runtime-Deploy und fachliche Abnahme koennen aus dem Repo allein nicht bestaetigt werden; Architekturpunkt bleibt als Live-Pruefung offen.grafanaundinfluxdb3-core: laufen weiterhin alsuser: "0"inops/grafana-influxdb/docker-compose.yml:6undops/grafana-influxdb/docker-compose.yml:53. [AUSNAHME - dokumentiert]plex-media-server: keine Compose-Datei im Repo gefunden; bleibt Dockerman-/Host-Sonderfall laut Architektur.
Bestanden
- 30 produktive
docker-compose.ymlwurden geprueft. - Keine Datenbanken oder Caches im
frontend_net:postgresql17nurbackend_netininfra/postgresql17/docker-compose.yml:18; sharedredisnurbackend_netininfra/redis/docker-compose.yml:15;mealie-postgresnurmealie_internalinapps/mealie/docker-compose.yml:56; Immichdatabaseundredisnurimmich_defaultinapps/immich/docker-compose.yml:48und:64; Nextcloud DB/Redis nurnextcloud_internalinapps/nextcloud/docker-compose.yml:61und:73;komodo-mongonurkomodo_netinops/komodo/docker-compose.yml:16. - App-interne Pflichtnetze sind korrekt
internal: true:immich_defaultinapps/immich/docker-compose.yml:73-75,mealie_internalinapps/mealie/docker-compose.yml:66-68,nextcloud_internalinapps/nextcloud/docker-compose.yml:82-84,grafana_influx_internalinops/grafana-influxdb/docker-compose.yml:90-91. frontend_netundbackend_netwerden in Compose-Dateien alsexternal: truereferenziert.- Alle Services mit
traefik.enable=truesetzen explizittraefik.docker.network=frontend_net,entrypoints=websecure,tls=trueundtls.certresolver=le. - Kein Traefik-Label mit
yourdomain.tldgefunden. - Admin-/Ops-Router haben Middleware
authelia@file,secure-headers@file, u. a.homepageinapps/homepage/docker-compose.yml:31,filebrowserinops/filebrowser/docker-compose.yml:27,scrutinyinops/scrutiny/docker-compose.yml:32,grafanainops/grafana-influxdb/docker-compose.yml:46. [AUSNAHME - dokumentiert]komodo-corehat keine ForwardAuth-Middleware inops/komodo/docker-compose.yml:64-71; [AUSNAHME - dokumentiert]nextcloudnutzt native Auth und nur Redirect-Middleware inapps/nextcloud/docker-compose.yml:42-46. - Web-UIs ohne Traefik-Labels wurden nur als dokumentierte Sonderfaelle gefunden:
adguardmit LAN-Admin-Port inhost-services/Adguard/docker-compose.yml:13-16;ddns-updaterhat keine Web-UI und braucht Internet ininfra/ddns-updater/docker-compose.yml:8;komodo-peripheryist Agent ohne Traefik-Route inops/komodo/docker-compose.yml:81-103.