Files
homelab-infra/docs/REPO_MAP.md
T
2026-05-17 14:57:45 +02:00

22 KiB

Repository Map

Stand: 2026-05-04

Diese Datei ist eine technische Landkarte des Repositories. Sie wurde aus Markdown-Dokumenten, docker-compose.yml-Dateien, Env-Beispielen, Traefik-Dynamic-Configs, Komodo/Periphery-Dateien und Skripten abgeleitet. Sie beschreibt den Repo-Sollzustand, nicht zwingend den Live-Zustand auf dem Host.

Secret-Werte werden hier nicht dokumentiert. Aufgefuehrt werden nur Variablennamen, Secret-Namen und Pfade.

Ordnerstruktur

Pfad Zweck
apps/ Produktive Anwendungen und vorbereitete App-Stacks
core/ Basisdienste, aktuell Gitea
docs/ Betriebsdokumentation, Restore, Rollback, GitOps-Regeln
env/ globale nicht geheime Beispiel-Env-Dateien
host-services/ Host-nahe Dienste mit direkten Ports oder Host-Netz
infra/ technische Infrastruktur wie PostgreSQL, Redis, DDNS
ops/ Operations-, Backup-, Monitoring- und Admin-Tools
services/ Host-seitige Betriebsskripte und Recovery-kritische Service-Hilfen
security/ Identity/Security-Dienste wie Authelia und Vaultwarden
traefik/ Reverse Proxy Compose und dynamic File-Provider-Konfiguration

Wichtige Dokumente

Datei Bedeutung
README.md Einstieg und Kurzueberblick
HOMELAB_ARCHITECTURE_MASTER_V2.md operative Architektur-Quelle fuer Netzwerk, Zugriff und Ausnahmen
docs/WORKFLOW.md GitOps-/No-Drift-Arbeitsregeln
docs/GITOPS_DRIFT_RUNBOOK.md Pflichtmatrix fuer Git/Gitea/Komodo/Docker/Host-Drift
docs/DISASTER_RECOVERY.md Wiederanlauf nach Host-/Systemausfall
docs/RESTORE_MATRIX.md Restore-Quellen, Dump-Artefakte und Smoke-Tests je Dienst
docs/ALERTING_MAP.md ntfy Topic-Konvention und Sender-Mapping fuer Homelab-Alerts
docs/ROLLBACK.md Rueckweg bei Fehlern im GitOps-Betrieb
docs/SECRETS_MAP.md Secret-Namen, Pfade und Einbindungsarten ohne Werte
docs/HOME_ASSISTANT_INFLUXDB_ECOWITT.md Home Assistant -> InfluxDB 3 -> Grafana Ablauf
docs/AI_CONTEXT.md Gesamtverstaendnis fuer KI-Agenten
docs/SERVICE_CATALOG.md produktiver Service-Katalog

Relevante Nicht-Compose-Dateien

Datei Zweck / Hinweis
traefik/dynamic/middlewares.yml zentrale secure-headers und authelia ForwardAuth Middleware; manuelle Host-Sync-Ausnahme
traefik/dynamic/dashboards.yml leer; File-Provider-Platzhalter
traefik/dynamic/tls.yml leer; File-Provider-Platzhalter
security/authelia/configuration.yml versionierte Authelia-Baseline fuer nicht geheime ACL-/Session-/Storage-Einstellungen; manuelle Host-Merge-Pflicht, User-Daten, OIDC-Client-Konfiguration und Secret-Werte bleiben ausserhalb von Git
ops/grafana-influxdb/provisioning/datasources/influxdb.yml Grafana Datasource Provisioning fuer InfluxDB 3 Core und Loki
ops/grafana-influxdb/provisioning/dashboards/*.json Grafana Dashboards fuer Container-Logs, Restart-Events und Error-Rate
ops/loki/config/loki-config.yml Loki Filesystem/Retention-Konfiguration fuer internen Logspeicher
ops/loki/config/config.alloy Alloy Docker-Log-Collector-Konfiguration
monitoring/prometheus/prometheus.yml Prometheus Scrape-Konfiguration fuer dedizierten Monitoring-Stack
monitoring/loki/loki-config.yml Loki Filesystem/Retention-Konfiguration fuer dedizierten Monitoring-Stack
monitoring/promtail/promtail-config.yml Promtail Docker-Socket-Discovery fuer dedizierten Monitoring-Stack
monitoring/grafana/provisioning/* Grafana Datasource-/Dashboard-Provisioning fuer Prometheus und Loki
ops/borg-ui/scripts/pre-backup-dumps.sh Host-seitiges Dump-Skript fuer PostgreSQL, SQLite-Container-Dumps und Komodo Mongo
services/posture-check/posture-check.sh Host-seitiger Posture-Check fuer Filesystem, Mover-Drift, NVMe-SMART, Fuellstand und ntfy-Alarmierung
services/posture-check/docker-critical-events.sh Host-seitiger Docker-Event-Watcher fuer kritische ntfy-Alarme
services/posture-check/posture_check.sh Kompatibilitaets-Wrapper fuer die Schreibweise aus STORAGE_LAYOUT.draft.md
ops/hermes-agent/config/hermes/config.yaml Hermes Agent Konfiguration mit Env-Platzhaltern
ops/hermes-agent/hermes.env.example Beispiel fuer Hermes .env; echte Datei liegt auf Host-Appdata
ops/hermes-agent/stack.env.example Beispiel fuer Hermes Stack-ENV; echte stack.env bleibt host-/komodoseitig und ist per .gitignore ausgeschlossen
ops/grafana-influxdb/stack.env.example INFLUXDB_BIND_IP Default 127.0.0.1; auf Unraid fuer Home Assistant auf LAN-IP setzen
monitoring/stack.env.example INFLUXDB_BIND_IP Default 127.0.0.1; im Zielzustand fuer Home Assistant auf LAN-IP setzen
ops/komodo/stack.env.example Komodo Stack-ENV-Beispiel, Secret-Werte nicht enthalten

Stack-Inventar

Apps

Stack Compose Services / Images Traefik Hosts Networks Ports Abhaengigkeiten
BentoPDF apps/bentopdf/docker-compose.yml bentopdf -> bentopdfteam/bentopdf:2.8.4 pdf.kaleschke.info frontend_net keine Traefik + Authelia; COOP/COEP Middleware
Homepage apps/homepage/docker-compose.yml homepage -> ghcr.io/gethomepage/homepage:v1.12.3@sha256:... home.kaleschke.info frontend_net keine Docker-Socket read-only fuer Widgets; viele HOMEPAGE_VAR_* Env-Keys
Immich apps/immich/docker-compose.yml immich-server, immich-machine-learning, database, redis immich.kaleschke.info frontend_net, immich_default keine immich-server depends on database, redis
Mail Archiver apps/mail-archiver/docker-compose.yml mail-archiver -> s1t5/mailarchiver@sha256:... mail.kaleschke.info frontend_net, backend_net keine shared PostgreSQL via env connection string; Internet fuer IMAP
Mealie apps/mealie/docker-compose.yml mealie, mealie-postgres mealie.kaleschke.info frontend_net, mealie_internal keine eigene PostgreSQL im internen Netz
Nextcloud apps/nextcloud/docker-compose.yml nextcloud, nextcloud-postgres, nextcloud-redis cloud.kaleschke.info frontend_net, nextcloud_internal keine native Nextcloud-Auth; eigene DB und Redis
ntfy apps/ntfy/docker-compose.yml ntfy -> binwiederhier/ntfy:latest@sha256:... ntfy.kaleschke.info frontend_net keine mobile Push via upstream ntfy.sh
Paperless-ngx apps/paperless/docker-compose.yml paperless -> ghcr.io/paperless-ngx/paperless-ngx:2.20.10 paperless.kaleschke.info frontend_net, backend_net keine shared PostgreSQL + Redis; DB/Redis via Stack ENV
Paperless-GPT apps/paperless-gpt/docker-compose.yml paperless-gpt -> icereed/paperless-gpt:v0.24.0 paperless-gpt.kaleschke.info frontend_net keine Paperless API, Ollama/LLM config
Unbound apps/unbound/docker-compose.yml unbound -> shaanmajid/unbound:latest@sha256:... keine dns_net keine Upstream Resolver fuer AdGuard

Core / Security / Infra

Stack Compose Services / Images Traefik Hosts Networks Ports Abhaengigkeiten
Gitea core/gitea/docker-compose.yml gitea -> docker.gitea.com/gitea:1.25.4@sha256:... git.kaleschke.info frontend_net 222:22/tcp SQLite in /data; SSH-Port ist dokumentierte Ausnahme
Authelia security/authelia/docker-compose.yml authelia -> authelia/authelia:latest@sha256:... auth.kaleschke.info frontend_net, backend_net keine PostgreSQL 17 Storage, Traefik ForwardAuth; bewusst ohne Redis-Session-Backend
Vaultwarden security/vaultwarden/docker-compose.yml vaultwarden -> vaultwarden/server:latest@sha256:... vault.kaleschke.info frontend_net keine Datei-Persistenz, ADMIN_TOKEN_FILE
ddns-updater infra/ddns-updater/docker-compose.yml ddns-updater -> ghcr.io/qdm12/ddns-updater:latest@sha256:... keine frontend_net keine Cloudflare/API-Internetbedarf
PostgreSQL 17 infra/postgresql17/docker-compose.yml postgresql17 -> postgres:17.9@sha256:... keine backend_net keine shared DB-Cluster
Redis infra/redis/docker-compose.yml Redis -> redis:7.4-alpine@sha256:... keine backend_net keine shared Cache, Passwort-Datei

Host Services

Stack Compose Services / Images Hosts Networks Ports / Mode Abhaengigkeiten
AdGuard Home host-services/Adguard/docker-compose.yml adguard -> adguard/adguardhome:v0.107.52 keine Traefik-Route dns_net, frontend_net 53/tcp, 53/udp, 8082:80/tcp Unbound in dns_net; direkte Ports sind dokumentierte Ausnahme
Tailscale host-services/tailscale/docker-compose.yml Tailscale-Docker -> tailscale/tailscale:stable@sha256:... keine network_mode: host host network VPN/Remote-Zugang

Operations

Stack Compose Services / Images Traefik Hosts Networks Ports Abhaengigkeiten
Borg UI ops/borg-ui/docker-compose.yml borg-ui -> ainullcode/borg-ui:latest@sha256:... borg.kaleschke.info frontend_net keine Borg repo, Dump-Scope, Restore-Ziel
code-server ops/code-server/docker-compose.yml code-server -> lscr.io/linuxserver/code-server:4.116.0@sha256:... code.kaleschke.info frontend_net keine Passwort-Datei, Workspace-Mounts
Filebrowser ops/filebrowser/docker-compose.yml filebrowser -> filebrowser/filebrowser:v2.63.2@sha256:... files.kaleschke.info frontend_net keine Documents/Photos/Projekte-Mounts, Admin-UI hinter Authelia
Glances ops/glances/docker-compose.yml glances -> nicolargo/glances:latest-full@sha256:... glances.kaleschke.info frontend_net keine Rootfs/Docker-Socket fuer Monitoring
Grafana/InfluxDB ops/grafana-influxdb/docker-compose.yml grafana, influxdb3-core grafana.kaleschke.info frontend_net, grafana_influx_internal, grafana_influx_lan influxdb3-core: ${INFLUXDB_BIND_IP:-127.0.0.1}:8181:8181 abgeloester Altstand; nach erfolgreicher Migration durch monitoring/ ersetzen
Loki/Alloy ops/loki/docker-compose.yml loki, alloy keine backend_net keine abgeloester Altstand; nach erfolgreicher Migration durch monitoring-loki/monitoring-promtail ersetzen
Monitoring monitoring/docker-compose.yml monitoring-prometheus, monitoring-alertmanager, monitoring-alertmanager-ntfy-bridge, monitoring-blackbox-exporter, monitoring-loki, monitoring-promtail, monitoring-grafana, monitoring-node-exporter, monitoring-cadvisor, monitoring-influxdb3-core, optional monitoring-grafana-dashboard-importer monitoring.kaleschke.info frontend_net, monitoring_net, monitoring_influx_lan monitoring-influxdb3-core: ${INFLUXDB_BIND_IP:-127.0.0.1}:8181:8181 zentraler Zielstack fuer Prometheus/Loki/Grafana/InfluxDB; Alertmanager sendet via ntfy-Bridge nach homelab-alerts; Blackbox ersetzt Uptime-Kuma-Checks nach Parallelphase; Promtail nutzt Docker socket read-only; Dashboard-Importer nur via bootstrap-Profil
Hermes Agent ops/hermes-agent/docker-compose.yml hermes-gateway, hermes-dashboard -> local build from Dockerfile hermes.kaleschke.info via ${HERMES_DASHBOARD_HOST} hermes_net, dashboard zusaetzlich frontend_net 8642 nur expose intern SSH runner, Home Assistant optional, LLM provider env; Dashboard hinter Authelia
Komodo ops/komodo/docker-compose.yml komodo-core, komodo-mongo, komodo-periphery komodo.kaleschke.info frontend_net, komodo_net keine Mongo, Docker socket, /mnt/user/services workspace mount, Gitea DNS override
Scrutiny ops/scrutiny/docker-compose.yml scrutiny -> ghcr.io/starosdev/scrutiny:latest-omnibus@sha256:... scrutiny.kaleschke.info frontend_net keine privileged: true, device mounts fuer SMART
Speedtest Tracker ops/speedtest/docker-compose.yml speedtest-tracker -> lscr.io/linuxserver/speedtest-tracker:1.13.12@sha256:... speedtest.kaleschke.info frontend_net keine App key/admin env, SQLite/config path
Uptime Kuma ops/uptime-kuma/docker-compose.yml UptimeKuma -> louislam/uptime-kuma:1@sha256:... uptime.kaleschke.info frontend_net keine Monitor-State in Appdata

Traefik

Stack Compose Service / Image Hosts Networks Ports Abhaengigkeiten
Traefik traefik/docker-compose.yml traefik -> traefik:v3.6 traefik.kaleschke.info frontend_net, backend_net 80:80/tcp, 443:443/tcp Docker provider, Cloudflare DNS token secret, dynamic config

Traefik Hosts

Host Service Zugriff
auth.kaleschke.info Authelia Auth provider / bypass fuer eigene Domain
borg.kaleschke.info Borg UI Traefik + Authelia
cloud.kaleschke.info Nextcloud Traefik, native App-Auth
code.kaleschke.info code-server Traefik + Authelia
files.kaleschke.info Filebrowser Traefik + Authelia
git.kaleschke.info Gitea Web Traefik
glances.kaleschke.info Glances Traefik + Authelia
grafana.kaleschke.info Grafana Traefik + Authelia
hermes.kaleschke.info Hermes Dashboard Traefik + Authelia
home.kaleschke.info Homepage Traefik + Authelia; faellt in Authelia unter die 1FA-Wildcard-Regel
immich.kaleschke.info Immich Traefik, native App-Auth
komodo.kaleschke.info Komodo Traefik, native Komodo-Auth; keine pauschale ForwardAuth
mail.kaleschke.info Mail Archiver Traefik + Authelia + App-Auth
mealie.kaleschke.info Mealie Traefik
monitoring.kaleschke.info Monitoring Grafana Traefik + Authelia
ntfy.kaleschke.info ntfy Traefik
paperless.kaleschke.info Paperless-ngx Traefik
paperless-gpt.kaleschke.info Paperless-GPT Traefik + Authelia
pdf.kaleschke.info BentoPDF Traefik + Authelia + COOP/COEP
scrutiny.kaleschke.info Scrutiny Traefik + Authelia
speedtest.kaleschke.info Speedtest Tracker Traefik + Authelia
traefik.kaleschke.info Traefik Dashboard Traefik + Authelia
uptime.kaleschke.info Uptime Kuma Traefik + Authelia
vault.kaleschke.info Vaultwarden Traefik

Networks

Network Typ / Status Nutzer
frontend_net external bridge Web-/Proxy-Netz fuer Traefik und alle gerouteten UIs
backend_net external/internal laut Architektur PostgreSQL 17, Redis, Authelia, Paperless, Mail Archiver, Traefik, Loki, Alloy, Grafana-Loki-Datasource
dns_net App-/Host-Netz AdGuard Home und Unbound
immich_default Compose-intern, internal: true Immich Server, ML, Postgres, Redis
mealie_internal Compose-intern; Laufzeitname mit Compose-Projektpraefix typischerweise mealie_mealie_internal Mealie und Mealie Postgres
nextcloud_internal Compose-intern Nextcloud, Nextcloud Postgres, Nextcloud Redis
grafana_influx_internal Compose-intern, internal: true Grafana und InfluxDB
grafana_influx_lan Compose-intern bridge InfluxDB Host-Port-Publishing fuer LAN Writer
monitoring_net Compose-/Stack-Netz bridge Prometheus, Loki, Promtail, Monitoring-Grafana, node-exporter, cAdvisor; Traefik fuer Metrics-Scrape
monitoring_influx_lan Compose-intern bridge InfluxDB Host-Port-Publishing fuer LAN Writer im zentralen Monitoring-Stack
komodo_net Compose-intern, internal: true Komodo Core, Mongo, Periphery
hermes_net Compose-intern bridge Hermes Gateway/Dashboard
host Host-Netz Tailscale; Plex historisch ausserhalb Repo

Volumes und Datenpfade

Bereich Wichtige Pfade
Traefik /mnt/user/appdata/traefik/dynamic, /mnt/user/appdata/traefik/letsencrypt, Cloudflare Secret
Gitea /mnt/user/services/gitea/data
Authelia /mnt/user/appdata/authelia/config, Authelia Secret-Dateien
Vaultwarden /mnt/user/appdata/vaultwarden, Admin-Token-Datei
PostgreSQL 17 /mnt/user/appdata/postgresql17, postgres_password.txt
Redis /mnt/user/appdata/redis, redis_password.txt
Paperless /mnt/user/appdata/paperless-ngx/data, /mnt/user/documents/paperless, /mnt/user/documents/scans_inbox
Immich /mnt/user/photos/immich, /mnt/user/photos/family_archive, /mnt/user/appdata/immich_postgres, model-cache
Mealie /mnt/user/appdata/mealie/data, /mnt/user/appdata/mealie/postgres
Mail Archiver /mnt/user/appdata/mailarchiver/data-protection-keys
Nextcloud /mnt/user/appdata/nextcloud/html, /mnt/user/documents/nextcloud-data, /mnt/user/appdata/nextcloud/postgres, /mnt/user/appdata/nextcloud/redis
Homepage /mnt/user/appdata/homepage, /mnt/user/appdata/homepage/images, Docker socket read-only
ntfy /mnt/user/appdata/ntfy
Paperless-GPT /mnt/user/appdata/paperless-gpt/data, /mnt/user/appdata/paperless-gpt/prompts
AdGuard /mnt/user/appdata/adguard/work, /mnt/user/appdata/adguard/conf
Tailscale /mnt/user/appdata/tailscale
Borg UI /mnt/user/appdata/borg-ui/data, /mnt/user/appdata/borg-ui/cache, /mnt/user/backups/borg/dumps, selected restore/source mounts
code-server /mnt/user/appdata/code-server, /mnt/user/services/dev, Homepage production mount
Filebrowser /mnt/user/documents, /mnt/user/photos, /mnt/user/projekte, Filebrowser database/config paths
Glances /, Docker socket, /etc/os-release
Scrutiny /mnt/user/appdata/scrutiny/*, /run/udev, selected /dev/... disks
Speedtest /mnt/user/appdata/speedtest-tracker/config
Uptime Kuma /mnt/user/appdata/uptime-kuma
Grafana/InfluxDB /mnt/user/appdata/grafana, Grafana provisioning, /mnt/user/appdata/influxdb3/data, /mnt/user/appdata/influxdb3/plugins
Loki/Alloy /mnt/user/appdata/loki/config, /mnt/user/appdata/loki/data, /mnt/user/appdata/alloy/config, /mnt/user/appdata/alloy/data
Monitoring named volumes prometheus_data, loki_data, promtail_positions, grafana_data; InfluxDB-Persistenz unter /mnt/user/appdata/influxdb3/data und /mnt/user/appdata/influxdb3/plugins; Provisioning im Repo unter monitoring/grafana/provisioning; Dashboards unter monitoring/grafana/dashboards
Hermes Agent /mnt/user/appdata/hermes-agent/data, /mnt/user/appdata/hermes-agent/ssh, SSH private key path
Komodo komodo_keys, /mnt/user/appdata/komodo/core, /mnt/user/appdata/komodo/mongo, /mnt/user/appdata/komodo/periphery, /mnt/user/services

Secrets und Env-Hinweise

Dienst / Stack Secret-/Env-Hinweise ohne Werte
Traefik cloudflare_dns_api_token als Docker Secret / CF_DNS_API_TOKEN_FILE
Authelia JWT, Session, Storage Encryption, Postgres Password via _FILE
Vaultwarden ADMIN_TOKEN_FILE
PostgreSQL 17 POSTGRES_PASSWORD_FILE
Redis Passwort-Datei und Startkommando
Paperless PAPERLESS_DBPASS, PAPERLESS_REDIS als Komodo Stack ENV
Immich IMMICH_DB_PASSWORD Stack ENV; immich_postgres_password.txt fuer Postgres
Mail Archiver MAILARCHIVER_DB_CONNECTION, MAILARCHIVER_AUTH_PASSWORD als Stack ENV
Homepage viele HOMEPAGE_VAR_* Stack ENV Keys fuer Tokens/Logins
Speedtest APP_KEY, ADMIN_PASSWORD als Stack ENV
Nextcloud Admin User, Admin Password, Postgres Password via Secret-Dateien
Komodo KOMODO_SECRET_KEY, KOMODO_WEBHOOK_SECRET, KOMODO_JWT_SECRET, KOMODO_MONGO_PASSWORD, KOMODO_PERIPHERY_PASSKEY; Mongo Passwort-Datei
Borg UI Borg Credentials, Admin Login, SSH Keys in persistentem Appdata, nicht im Git
Hermes Agent provider keys, API server key, messaging tokens, Home Assistant token in Host .env; SSH private key als Host-Secret
Grafana/InfluxDB Grafana Admin Password, InfluxDB Admin Token JSON, Grafana Datasource Token
Loki/Alloy keine zusaetzlichen Secrets; Zugriff nur intern ueber backend_net
Monitoring monitoring_grafana_admin_password.txt, monitoring_grafana_influxdb_token.txt, influxdb3_admin_token.json fuer zentrale Grafana-/InfluxDB-Funktionen

Skripte

Skript Ausfuehrungsort Zweck
ops/borg-ui/scripts/pre-backup-dumps.sh Unraid Host, nicht Borg-UI Inline-Hook erzeugt aktuelle Dumps unter /mnt/user/backups/borg/dumps/latest
services/posture-check/posture-check.sh Unraid Host schreibt /mnt/user/services/posture-check/last.json und alarmiert via ntfy bei Warning/Critical
services/posture-check/docker-critical-events.sh Unraid Host beobachtet Docker die/oom/kill Events und alarmiert via homelab-alerts

Das Skript liest Secret-Dateien auf dem Host und schreibt Dump-Artefakte. Bei Analyse niemals Secret-Inhalte ausgeben.

Unsicherheiten / TODOs aus Repo-Sicht

  • Echte stack.env- und .env-Dateien sind per .gitignore ausgeschlossen; nur *.example-Dateien gehoeren ins Repo.
  • Authelia configuration.yml ist Repo-Baseline fuer nicht geheime Einstellungen, wird aber nicht automatisch von Komodo auf den Host kopiert. Die produktive Host-Datei kann zusaetzliche OIDC-/Secret-Konfiguration enthalten; Aenderungen muessen manuell gemerged und validiert werden.
  • backend_net ist in der Architektur als internal: true beschrieben; einzelne Compose-Dateien referenzieren es external. Live-Netz-Attribute bei Drift-Fragen pruefen.
  • Einige Images bleiben trotz Digest-Pin semantisch auf mutable Tags (latest@sha256, release@sha256). Das ist bewusst dokumentiert, aber bei Updates gesondert pruefen.
  • Stateful Datenhalter sind seit 2026-05-05 bevorzugt mit Minor-/Patch-Tag plus Digest gepinnt; Redis-Caches wurden im Hardening-Sprint 2026-05-16 auf redis:7.4-alpine@sha256:... vereinheitlicht.
  • scrutiny bleibt privileged: true; dokumentierte Ausnahme, aber weiterhin pruefenswert.
  • tailscale nutzt Host-Netz, NET_ADMIN, NET_RAW und /dev/net/tun als dokumentierte VPN-Ausnahme.
  • grafana, influxdb3-core und monitoring-influxdb3-core laufen aktuell als user: "0"; UID/GID-Hardening nur als eigener Sprint.
  • Leere .keep-Platzhalter wurden entfernt; neue Verzeichnisse sollen erst mit konkretem Inhalt ins Repo.
  • Plex-Media-Server ist als historischer Host-Sonderfall dokumentiert, aber nicht als Repo-Compose-Stack enthalten.
  • BentoPDF kann je nach Live-Stand vorbereitet statt produktiv sein; Hermes Dashboard ist produktiv unter hermes.kaleschke.info.