01 Ziele
Domus ist ein Home-System für ein Haus in Stäfa. Es läuft auf einem kleinen Intel NUC mit Ubuntu Server und bündelt Hausautomation, Photovoltaik-Monitoring, Strompreise und Benachrichtigungen an einem Ort. Die gesamte Konfiguration liegt versioniert im Git-Repository patbiber/domus; Geheimnisse und Betriebsdaten bleiben lokal.
- Ein zentrales System für das Haus statt vieler Hersteller-Apps: Home Assistant als Herzstück.
- Energie verstehen: Was produziert die Solaranlage, was verbraucht das Haus, was kostet oder bringt das gerade?
- Nachvollziehbar und reproduzierbar: Jeder Dienst in einem eigenen Ordner mit eigener
compose.yml, jede Änderung als Git-Commit mit deutscher Commit-Message. - Sicher: Keine Secrets im Repo, keine Portfreigaben ohne bewusste Entscheidung, Backups vor jeder Änderung an Home Assistant.
02 Hardware und Grundsystem
| Komponente | Details |
|---|---|
| Rechner | Intel NUC, Intel Core i3-4010U, 7 GB RAM |
| Betriebssystem | Ubuntu Server 26.04 LTS |
| Container | Docker mit Docker Compose |
| Zeitzone | Europe/Zurich |
| DNS | Cloudflare 1.1.1.1 / 1.0.0.1 (per Netplan statt Router) |
| Netzwerk | eno1 mit DHCP-Adresse und zusätzlicher statischer IP |
Geräte im Haus
| Gerät | Anbindung |
|---|---|
| Fronius-Wechselrichter (Datamanager, Solar API v1) | HTTP im LAN, nur tagsüber erreichbar |
| Fronius Smart Meter TS 65A-3 | über den Wechselrichter, Einbauort Verbrauchszweig |
03 Architektur
Ein Router leitet die Ports 80/443 an den NUC weiter. Dort verteilt nginx die beiden öffentlichen Hostnamen an Home Assistant bzw. den Energie-Dienst; der Energie-Dienst wiederum fragt den Fronius-Wechselrichter im LAN ab und holt sich einmal im Monat die aktuellen Stromtarife von den Gemeindewerken Stäfa (GWS).
Daneben laufen auf dem NUC noch der Mailversand (msmtp → Proton SMTP) und eine dauerhafte Claude-Code-Session mit Remote Control.
Dienste
| Ordner | Dienst | Erreichbar |
|---|---|---|
homeassistant/ | Home Assistant (stable) | https://domus.biber.solar |
proxy/ | nginx + certbot (Let's Encrypt) | Ports 80/443 |
energie/ | Energie-API und Retro-Webseite | https://home.biber.solar |
strompreise/ | Monatliches Archiv der GWS-Stromtarife | – |
claude-remote/ | Dauerhafte Claude-Code-Session | claude.ai/code, Claude-App |
Geplant: MQTT (mosquitto/), Zigbee2MQTT (Zigbee-Stick folgt), Philips Hue über die Hue Bridge.
04 Komponenten im Detail
Home Assistant
- Container
ghcr.io/home-assistant/home-assistant:stable, Konfiguration versioniert (Betriebsdaten per.gitignoreausgeschlossen). - Zugriff von aussen über nginx, mit IP-Sperre nach 5 Fehlversuchen.
- 2-Faktor-Login (TOTP) für alle Benutzer.
- SMTP-Benachrichtigungen über Proton SMTP.
Energie-Sensoren, die per REST vom Energie-Dienst gefüttert werden:
| Entität | Einheit | Bedeutung |
|---|---|---|
sensor.strompreis_bezug | CHF/kWh | aktueller Bezugspreis inkl. MWST |
sensor.ruckliefervergutung | CHF/kWh | aktuelle Rückliefervergütung (Sommer/Winter) |
sensor.stromkosten_aktuell | CHF/h | was der Netzbezug gerade kostet |
sensor.einspeiseerlos_aktuell | CHF/h | was die Einspeisung gerade bringt |
Reverse Proxy und Zertifikate
nginx terminiert TLS für beide Hostnamen. Unbekannte Hostnamen und direkte IP-Zugriffe werden verworfen. certbot prüft alle 12 h die Erneuerung, nginx lädt alle 6 h neu. home.biber.solar erlaubt nur GET/HEAD, hat ein Rate-Limit auf /api/ und eine strenge Content-Security-Policy.
Tarifarchiv GWS
Ein systemd-Timer lädt jeden Monatsersten die maschinenlesbaren Tarife und alle Tarif-PDFs der Gemeindewerke Stäfa herunter, mit Prüfsummen und Quellenangabe archiviert. Bei geänderten Dateien oder Fehlern kommt automatisch eine E-Mail.
Energie-Dienst
- Reines Python (Standardbibliothek), fragt alle 5 Sekunden den Fronius-Wechselrichter ab.
- Berechnet den aktuellen Strompreis aus den archivierten GWS-Tarifen (Gemeindeabgabe, MWST, Rückliefervergütung).
- Endpunkte:
/api/status(live) und/api/history(Minutenwerte der letzten 24 h, nur im Speicher). - Nachts ist der Wechselrichter aus – die API meldet das sauber statt einen Fehler zu werfen.
Die Retro-Webseite home.biber.solar
Eine Live-Ansicht im Stil der klassischen SCUMM-Adventures der 80er-Jahre – Details und Screenshot dazu im Blogartikel. Technisch: eine einzige HTML-Datei ohne externe Ressourcen, die live vom Energie-Dienst gefüttert wird.
E-Mail-Versand
msmtp als sendmail-Ersatz auf dem Host, Konfiguration mit restriktiven Dateirechten. Alle lokalen Systemmails landen automatisch bei patrick@biber.solar.
Claude Code Remote Control
Eine dauerhafte Claude-Code-Session läuft als systemd-User-Dienst und lässt sich über claude.ai/code oder die Claude-App fernsteuern. Feste Arbeitsregeln: deutsch antworten und committen, keine Secrets, keine Portfreigaben ohne Rückfrage, keine Datenträger formatieren, Backup vor Änderungen an Home Assistant.
05 Sicherheit und Datenschutz
| Thema | Umsetzung |
|---|---|
| Secrets | Nur eine Beispieldatei im Repo; echte Zugangsdaten bleiben lokal |
| Betriebsdaten | Home-Assistant-Konfiguration, Tarifarchiv und Backups per .gitignore ausgeschlossen |
| Öffentliche Ports | Nur 80/443; alle anderen Dienste nur im LAN erreichbar |
| Home Assistant | TLS, IP-Sperre nach Fehlversuchen, 2-Faktor-Login |
| Energie-Seite | Nur lesend, Rate-Limit, Content-Security-Policy |
06 Betrieb
# Dienst starten / aktualisieren (vorher Backup bei Home Assistant!)
cd <dienst> && docker compose pull && docker compose up -d
# Backup Home Assistant
tar czf backups/homeassistant-$(date +%F-%H%M).tar.gz -C homeassistant config
# Tarife sofort abrufen, Timer ansehen
systemctl --user start strompreise.service
systemctl --user list-timers
# Energie-API prüfen
curl -s http://127.0.0.1:8099/api/status | jq
07 Projektverlauf
| Datum | Meilenstein |
|---|---|
| 26.09.2026 | Grundstruktur, Home Assistant, DNS, Zeitzone, Netzwerk |
| 26.09.2026 | nginx + Let's Encrypt, domus.biber.solar |
| 26.09.2026 | Claude Code Remote Control als dauerhafter Dienst |
| 27.09.2026 | Fronius-Wechselrichter und Smart Meter gefunden und dokumentiert |
| 27.09.2026 | E-Mail-Versand über Proton SMTP |
| 27.09.2026 | Monatliches Archiv der GWS-Stromtarife |
| 27.09.2026 | Energie-Dienst, Strompreis-Sensoren, Retro-Webseite home.biber.solar |
08 Offene Punkte
- Fronius-Integration direkt in Home Assistant einrichten.
- Energie-Dashboard mit den neuen Strompreis-Sensoren aufsetzen.
- Rückliefervergütung 2027 nachtragen, sobald die GWS sie veröffentlicht.
- Entscheiden, ob home.biber.solar öffentlich bleibt oder ein Passwort bekommt.
- MQTT, Zigbee2MQTT und Hue einbinden.