Was läuft, und warum

Ein Rundgang durch die Dienste des Rechenzentrums in der Wohnung, sortiert nach ihrem Zweck statt nach Hersteller — mit dem Grund, warum jeder da ist, und den Dingen, die bewusst weggelassen wurden. Das ist, was Stand 2026-09-08 läuft, keine Empfehlung; jeder hier genannte Gast wurde an diesem Datum in der Proxmox-API laufend gesehen, und jeder Container stammt aus einer Compose-Datei in Git.

Zwei Rechner unter einem Schreibtisch in Köln betreiben das, was ein Haushalt sonst bei Google, Apple oder Amazon mietet. Nichts davon kam als Paket: Jeder Dienst auf der Liste steht dort, weil etwas in der Wohnung ihn gebraucht hat, und alles, was sich auf eine Version festpinnen, neu bauen und zurückrollen lässt, ist festgepinnt.

Die Form

Im Alltag gesprochenZwei Rechner tun die Arbeit, eine Speicherbox hält die Kopien und entscheidet bei Gleichstand, und jeder Dienst läuft in seinem eigenen kleinen Container — wie Mieter in einem Haus, jeder mit eigener Tür.

Zwei physische Proxmox-Knoten tragen alles. Ein Synology-NAS — jene Speicherbox — steht daneben für geteilten Speicher, Backups, die Stimme bei Gleichstand im Cluster und eine Handvoll eigener Dienste. Alles, was auf den Knoten läuft, ist ein Gast: eine virtuelle Maschine oder ein Container. Gäste kommen in zwei Arten: eine Handvoll Docker-VMs für Stacks, die zusammen komponiert sein wollen, und kleine LXC-Container für Einzweck-Dienste, die nichts brauchen außer einem Betriebssystem und einem Daemon.

Was wo läuft, nach Rolle — zuerst die Gästeliste mit Stand 2026-09-08, danach die eigenen Dienste des NAS:

RolleWas läuft
Edgezwei OPNsense-VMs, eine pro Knoten — das Firewall-Paar, dem die WAN-Anschlüsse gehören
Smart Homeeine Docker-VM (tychome) mit Home Assistant und dem Sprach-Stack
Kamerasein Erkennungsgast auf dem zweiten Knoten, neben dem Rekorder auf dem NAS
Websites und Ingresseine Docker-VM (tycfront) für die Traefik-Eingangstür und die statischen Websites
Beobachtbarkeit + CIeine Docker-VM (tycdocker) mit dem Grafana-Stack, dazu tycops, die VM, auf die der Stack umzieht
Geheimnisseein OpenBao-LXC (tycbao)
Medienein Plex-LXC
Netzdiensteder UniFi-Controller-LXC, ein mDNS-Reflektor-LXC, ein USV-Monitor-LXC
Backupeine Backup-Server-VM, seit September das nächtliche Ziel für jeden Gast bis auf zwei
Entwicklungeine VM für Entwicklungsarbeit
CI-Runnerzwei Allzweck-Runner auf dem Docker-Host, vier Runner-Container auf den Knoten, plus einer auf dem NAS als Wiederherstellungspfad
NAS-Dienstedie Fotobibliothek und die Dateisynchronisation des Haushalts, der Identitätsanbieter hinter dem Proxmox-Login, ein Netzboot-Container und die beiden Backup-Anwendungen — auf dem NAS selbst, nicht als Gäste

Ein Gast läuft noch doppelt: Der Host, der Beobachtbarkeit und Ingress zugleich trägt, steht neben den beiden neuen Gästen, die seine Hälften übernehmen. Das ist die Migration, kein Versehen: Jeder Ersatz läuft neben seinem Vorgänger, bis eine eigene, geprüfte Außerdienststellung folgt, und die Architekturnotiz erklärt, warum der Cutover so gestaffelt ist.

Das Zimmer bei Nacht: ein Holzschreibtisch mit Ultrawide-Monitor und Fernseher darüber, zwei leuchtende Drahtgitter-Dodekaeder auf den Lautsprechern links und rechts, die Wand in Magenta und Blau getaucht.

Das Zimmer, in dem all das läuft — echtes Licht, echte Hardware, kein Render.

Der aktuelle Stand des Racks in Magenta-Licht: die weißen MikroTik-Switches senkrecht gestapelt in der Lücke zwischen Schreibtisch und Lautsprecher, lose hängende Kabel, davor ein dunkles Mini-PC-Gehäuse auf dem Boden.

August 2026: die Switches senkrecht montiert in der Lücke zwischen Schreibtisch und Lautsprecherturm; die endgültige Verkabelung steht noch aus.

Smart Home

Im Alltag gesprochenLicht, Heizung und Sensoren gehorchen einer Zentrale in der Wohnung, nicht den Servern einer Firma. Die Zentrale kann zuhören und antworten, ohne dass etwas das Haus verlässt — die Echo-Boxen, die weiter in den Zimmern stehen, können das nicht: Alles, was man ihnen sagt, geht zu Amazon und kommt zurück.

Home Assistant ist die Zentrale, und es läuft als schlichter Container statt als Home Assistant OS. Der Grund ist das Festpinnen: HAOS-Add-ons lassen sich nicht wie jeder andere Dienst auf eine Version pinnen, neu bauen und zurückrollen, und alles andere hier kann das. Der Preis ist, dass die „Add-ons“ als gewöhnliche Container daneben laufen müssen — was genau der Sprach-Stack ist.

  • Mosquitto — der Broker für MQTT, das kleine Nachrichtenprotokoll, mit dem Geräte ihre Messwerte veröffentlichen, damit alles Interessierte sie abonnieren kann. Nur eine Handvoll Geräte und Brücken hier braucht es; das Zigbee-Funkmodul und die selbstgebauten Sensoren sprechen direkt mit der Zentrale.
  • Matter-Server — das Matter-Fabric für die Geräte, die es sprechen.
  • Zigbee und Thread — das Zigbee-Funkmodul wird von der Zentrale selbst angesteuert, und Thread hat gar keinen eigenen Stack: Es läuft über den Border-Router, der im selben Koordinator steckt, und die Ausrollung weigert sich, einen zweiten daneben zu stellen. Ausführlich in der Notiz über die vier Funknetze im Haus.
  • ESPHome — der Firmware-Builder für die selbstgebauten Sensoren; sein Dashboard ist der Git-Checkout, Gerätekonfigurationen sind also versioniert wie alles andere.
  • tycwled — die eigene Firmware für die beiden Dodekaeder-Lampen auf dem Foto oben. Der Hersteller liefert eine geschlossene WLED-Abwandlung, deren Effekte ohne Quelltext kommen; sie wurden aus dem Werksabbild zurückgelesen und auf normalem WLED neu umgesetzt, veröffentlicht unter der MIT-Lizenz. Jede Änderung muss sich gegen eine zweite Lampe beweisen, die noch die Werksfirmware trägt.
  • Whisper und Piper — Sprache-zu-Text und Text-zu-Sprache, lokal. Was der lokale Assistent hört, verlässt die Maschine nicht. Angesprochen wird im Alltag aber etwas anderes: Die Amazon-Echo-Boxen in der Wohnung tragen die gesprochenen Befehle des Haushalts, und sie sind bauartbedingt Cloud-Geräte.
  • Music Assistant — die Multiroom-Audio-Schicht für die Lautsprecher.
  • govee2mqtt — die Brücke, die die Govee-Lampen am lokalen Broker hält statt an einer Cloud-App.

Was das Haus mit alledem tut, hängt an einer einzigen Variablen. Ein Hauszustand wird aus der Wohnungstür, dem Telefon und den Präsenzmeldern abgeleitet — nie aus einer Uhr —, und Willkommenslicht, Schloss, Klimaanlage, Kameras, Sauger und Badlüfter lesen ihn alle. Das hat eine eigene Notiz: Das Haus entscheidet, und keine Uhr.

Home Assistant ist auch der eine Dienst, der sich selbst ausrollt — und die eine Stelle im Haus, an der eine Änderung ohne Review auf den Branch kommt: Dashboards, die in der Oberfläche der Zentrale bearbeitet werden, werden direkt nach main zurück-committet, weil es schlimmer erschien, jede Änderung in der Oberfläche beim nächsten Abgleich zu verlieren, als auf das Review zu verzichten. Der Fail-closed-Check, den der Container fährt, bevor er einen Commit annimmt, steht an der Stelle des Reviewers. Der ganze Ablauf steht in der Notiz über Konfiguration, die sich selbst ausrollt.

Kameras und Erkennung

Im Alltag gesprochenDer Rekorder nimmt weiter auf. Der neue Teil schaut nur ins Bild und sagt „das ist ein Mensch“ — was daraus folgt, entscheidet die Zentrale in der Wohnung.

Die Kameras zeichnen wie bisher in der Überwachungssoftware auf dem NAS auf. Daneben läuft eine zweite, lokale Erkennungsebene: eine Objekterkennung in einem eigenen Gast auf dem zweiten Knoten, die die integrierte Grafikeinheit dieser Maschine für die Inferenz nutzt und selbst nichts aufzeichnet. Die Trennung ist gewollt. Die Erkennung erkennt, Home Assistant entscheidet, was eine Erkennung bedeutet, und die Überwachungssoftware nimmt weiter auf und alarmiert.

Inzwischen sind alle Kameras der Wohnung eingebunden, die Fischaugenkamera an der Wohnungstür eingeschlossen, und die Erkennung erkennt auf demselben Bildstrom auch Gesichter — ein Alarm aus der leeren Wohnung kann also sagen, wer es war, statt nur, dass jemand da war. Was die Zentrale aus einer Erkennung macht, und warum der Home Mode des Rekorders bewusst unangetastet bleibt, steht in Das Haus entscheidet.

Energie

Im Alltag gesprochenDie Wohnung misst ihren eigenen Strom dort, wo er hereinkommt, und an den Steckdosen — so ist die Rechnung nie die erste Nachricht davon, dass etwas angeblieben ist.

Der Hausverbrauch wird vom Stromzähler selbst gelesen: Ein kleiner Funkleser sitzt an der optischen Schnittstelle des Zählers, fährt in der Wohnung gebaute Firmware und veröffentlicht an den Haus-Broker, ohne Herstellerkonto irgendwo im Weg. Die drei Stromklemmen, die diese Rolle bisher trugen, sind nur noch ein Gegencheck. Die Verbraucher, auf die es ankommt, melden weiterhin pro Steckdose oder pro Stromkreis, alles innerhalb der Zentrale. Ehrlich bleibt das Bild durch die Regel, dass kein Verbraucher zweimal gezählt wird — die Messregeln, und was noch aussteht, stehen in der Notiz über die vier Funknetze im Haus. Die Zahlen selbst stehen nicht auf dieser Seite.

Medien

Plex liefert die Mediathek des Haushalts aus einem LXC; die Mediendateien bleiben auf dem NAS und werden eingebunden. Synology Photos läuft auf dem NAS selbst und hält die Fotobibliothek des Haushalts — die Bilder bleiben in der Wohnung statt auf den Servern eines Fotodienstes.

Websites und Ingress

Im Alltag gesprochenEine Eingangstür für alles Öffentliche, auch diese Seite. Dahinter ist jede Website ein versiegeltes Paket, das sich nur ändert, wenn das neue Paket schriftlich freigegeben wurde.

Traefik ist die öffentliche Web-Eingangstür. Es routet diese Website, eine zweite Hugo-Website und ein paar Pro-bono-Websites. Jede davon ist ein Container-Image, gepinnt per Tag und Digest — die zweite Website ist von einem kopierten Ordner auf denselben Image-Pfad umgezogen, sodass jetzt alle auf dieselbe Weise ausgeliefert werden. Was ausgeliefert wird, ändert sich nur, wenn sich der Pin in Git ändert und das gesicherte Apply läuft. Öffentlicher Ingress läuft ausschließlich über IPv4, und das ist inzwischen eine Entscheidung und keine Zwischenstufe: Diese Namen auch über IPv6 zu veröffentlichen wurde im September verworfen.

Homepage ist das interne Dashboard — die Seite, die „wo war das noch mal“ für den Haushalt beantwortet.

Die Eingangstür ist mitten in einem Umzug: tycfront ist die neue Ingress-VM in der veröffentlichten Zone. Während der Koexistenz werden die Websites von beiden ausgeliefert; die Kopien gehen außer Dienst, sobald der Umzug geprüft ist.

Identität und Geheimnisse

Im Alltag gesprochenKein Generalschlüssel am Haken neben der Tür: Jeder Auftrag bekommt einen Einmalschlüssel, der Minuten später abläuft und nur seinen eigenen Raum öffnet.

OpenBao hält jedes Zugangsgeheimnis, das die Flotte benutzt. Keine Merge-Request-Pipeline hält je ein langlebiges Token. Jeder Job weist sich mit einer OIDC-Identität aus — einer signierten Bestätigung von GitLab, dass dieser Job dieser Job ist — gegen eine nur lesende Rolle pro Repository und erhält ein kurzlebiges Zugangsgeheimnis, das genau auf diesen Job begrenzt ist. Plan-Material und Apply-Material sind getrennte Rollen. Die wenigen langlebigen Token, die bleiben — die, die mit der Forge und den Paket-Hosts sprechen statt mit einer Maschine — liegen im Tresor und werden Jobs auf geschützten Branches als maskierte Variablen übergeben, nie von Hand getippt. Der Tresor nimmt jede Nacht einen Snapshot auf das NAS, und sein Wiederherstellungsjob ist tatsächlich gelaufen; nur die Smart-Home-Zentrale kann dasselbe sagen, das meiste auf dieser Seite nicht.

Synology SSO Server auf dem NAS ist der Identitätsanbieter hinter dem Proxmox-Login: Der Cluster führt einen Realm, der die Administratorengruppe des NAS auf eine begrenzte Admin-Rolle abbildet, und diese Abbildung ist im Infrastruktur-Code deklariert wie der Rest des Clusters. Die Anwendung selbst wird von Hand in der Oberfläche des NAS eingerichtet — die Abbildung geht durch das Review, die Anwendung dahinter nicht.

Beobachtbarkeit

Im Alltag gesprochenJede Maschine schreibt an einer Stelle auf, was sie tut und wie es ihr geht — so wie auf einer Station am Fußende jedes Bettes eine Kurve hängt, damit niemand herumlaufen und fragen muss.

Grafana, Loki und Prometheus, mit Alloy, das Logs und Metriken von den Hosts verschickt, die die Konfigurationsverwaltung erreicht, plus die üblichen Exporter (Node, Proxmox). Die Firewalls, die Switches und das Modem haben keinen Agenten zum Installieren und schicken ihre Logs auf dem alten Weg. Die Grafana-Alarmregeln werden aus Git bereitgestellt wie alles andere. Die Abdeckung ist unvollständig: Die Abdeckung der Flotte ist ein verfolgtes Arbeitspaket, kein fertiger Zustand.

Netzdienste

Im Alltag gesprochenDas Netz hat seinen eigenen Pförtner und sein eigenes Telefonbuch: Der eine gibt jedem ankommenden Gerät seine Zimmernummer, das andere schlägt die Namen nach und verweigert die, die auf der Hausliste stehen. Beide wohnen in der Wohnung, also kann kein Gerät stillschweigend ein fremdes Telefonbuch fragen.

Der größte Teil des Netzes ist gar kein Dienst — es ist das RouterOS-Fabric und das OPNsense-Paar, beide aus Git gesteuert und in der Architekturnotiz beschrieben. Die Teile, die als eigene Dienste laufen:

  • Kea DHCP und Unbound DNS auf dem Edge-Paar — Kea vergibt die Adressen, Unbound beantwortet die Namensabfragen — je Zone ein Satz, mit dem Host-Register, das aus demselben Netzmodell generiert wird wie die Switch-Konfiguration. Der Resolver filtert für die Zonen, die das haben sollen, außerdem Werbe- und Schadsoftware-Domains. Filtern wirkt nur, wenn es sich nicht umgehen lässt: Die Firewall schickt diese Clients zum Resolver zurück, verweigert die verschlüsselten Abfrageprotokolle rundheraus, und der Resolver sperrt die öffentlichen Dienste, die sie beantworten. Ein Filter, um den ein Gerät herumgehen kann, ist Theater. Es gibt kein Pi-hole; der Resolver wohnt dort, wo die Policy wohnt.
  • Ein WireGuard-Tunnel — der eigene Fernzugang des Haushalts in die Wohnung endet auf dem Edge-Paar.
  • UniFi-Controller — ein LXC für das eine überlebende UniFi-Gerät, den Access Point.
  • mDNS-Reflektor — damit Casting und Geräteerkennung die Zonengrenze dort überqueren, wo es ausdrücklich erlaubt ist.
  • USV-Monitor — eine kleine Web-Oberfläche über NUT, dem Dienst, der die unterbrechungsfreie Stromversorgung ausliest; die Knoten lesen ihn ebenfalls, um bei Stromausfall sauber herunterzufahren.
  • netboot.xyz — Netzboot: Eine Maschine, die kein Installationsmedium zur Hand hat, holt sich eines über die Leitung. Es ist ein Container auf dem NAS statt ein Gast auf den Knoten, als Compose-Datei eingecheckt und von Hand im Container-Manager des NAS gestartet — dieselbe Form wie der Runner, der dort für die Wiederherstellung bereitsteht.
  • Cloudflare ist die DNS-Hoheit, als Code verwaltet; die Registrare sind nur Registrare.

CI

Im Alltag gesprochenDie Roboter, die freigegebene Änderungen ausführen, wohnen in der Wohnung; einer wohnt in der Speicherbox, damit noch etwas funktioniert, wenn beide Server ausgefallen sind.

CI ist die Pipeline, die eine Änderung prüft und sie dann ausführt; GitLab-Runner sind die Maschinen, auf denen sie läuft, und sie sitzen dort, wo die Arbeit ist. Allzweck-Runner übernehmen Merge-Request- und Build-Arbeit. Eigene Runner laufen als Container auf den Knoten: einer für die Infrastruktur-Applies, einer für das Smart-Home-Repository und je einer pro Edge-Knoten, weil die eigene Identität jeder Firewall — ihre Schnittstellen, ihre Adressen, ihre Einwahlsitzung — von dem Knoten aus geschrieben werden muss, auf dem sie läuft. Ein weiterer ist ein Container auf dem NAS, für einen einzigen Zweck behalten — der Pfad zu sein, der noch funktioniert, wenn beide Knoten ausgefallen sind. Apply-Jobs sind manuell, umgebungsgebunden und pro OpenTofu-State serialisiert; Merge-Request-Pipelines sind nur lesend.

Speicher und Backup

Im Alltag gesprochenEin Schrank in der Wohnung hält, worauf jede Maschine zugreifen muss, und jede Maschine hält ein eigenes kleines Regal für das, was man braucht, um diesen Schrank wieder aufzustellen. Was den Schrank rettet, darf nicht im Schrank liegen.

Das NAS teilt Speicher auf zwei Wegen über das Netz: NFS, das die Gäste für geteilten Speicher einhängen, und SMB, über das die Home-Assistant-Backups geschrieben werden. Die Knoten halten die Gäste des Reparaturpfads stattdessen auf eigenen Platten, auf ZFS — einem Dateisystem, das prüfsummt, was es speichert —, damit das NAS nicht auf dem Pfad liegt, das NAS wiederherzustellen.

Auf dem NAS liegen auch die eigenen Dateien des Haushalts. Synology Drive hält sie auf allen Maschinen, die sie benutzen, auf demselben Stand. Active Backup for Business sichert den Arbeitsplatzrechner des Haushalts, und Hyper Backup repliziert vom NAS auf ein Ziel in einem anderen Gebäude — die Kopie außer Haus. Alle drei werden von Hand in der Oberfläche des NAS eingerichtet, nicht über die geprüfte Pipeline, auf der der Rest dieser Seite läuft. Was diese Kopien abdecken und was noch aussteht, ist die Frage der Backup-Notiz und nicht die dieser Seite: Backups: drei Kopien, ein fehlender Beweis.

Was bewusst weggelassen wurde

  • Kubernetes. Keine Workload hier braucht es; es kommt an dem Tag zurück, an dem eine es tut.
  • Home Assistant OS. Siehe oben — Festpinnen schlägt Bequemlichkeit.
  • Ein Cloud-Backup-Ziel. Noch nicht, und nicht, bevor eine Wiederherstellung gegen die vorhandenen Kopien bewiesen wurde.
  • Sponsoring. Nichts auf dieser Seite ist bezahlt oder steht zum Verkauf.

Das sind vier Entscheidungen, keine Lücken, und die meisten nennen die Bedingung, unter der sie fallen. Nichts auf dieser Seite läuft, weil es erwartet wurde: Es läuft, weil etwas in der Wohnung es gebraucht hat — und an dem Tag, an dem das nicht mehr stimmt, verschwindet es von der Liste.


Gästeinventar, Speicher und die nächtlichen Backup-Jobs am 2026-09-08 aus der Proxmox-API gelesen, die Haushaltsautomationen am selben Tag aus der laufenden Zentrale; die Container gegen die Compose-Dateien in Git und die Runner-Liste gegen die Deklarationen, die sie registrieren. Der Realm des Identitätsanbieters auf dem Cluster ist im Infrastruktur-Code deklariert und dort nachlesbar; die übrigen Anwendungen des NAS sind so, wie der Betreiber sie am 2026-09-09 angegeben hat, und wurden weder vom NAS noch aus dem Code gelesen. Geplante Punkte sind als geplant markiert.

Tiefer: die Architektur →