Kurz gesagt
- Keine Portfreigabe, kein DynDNS. Das Relay öffnet nichts ins Internet; alle Verbindungen nach draußen baut es selbst auf.
- Die Zugangsdaten deiner Poolsteuerung bleiben auf dem Relay. Sie werden nicht an die Cloud geschickt.
- Unterwegs Ende-zu-Ende-verschlüsselt. Ab App-Version 1.2 mit aktualisiertem Relay ist, was die App durch den Tunnel mit deinem Relay austauscht, zwischen deinem Handy und deinem Relay verschlüsselt – die Cloud leitet nur Daten weiter, die sie nicht lesen kann.
- Die PoolPilot Cloud läuft bei Hetzner in Deutschland – die verschlüsselten Backups liegen ebenfalls in Deutschland.
- Signierte Updates und offener Quellcode (MIT) – du musst uns nicht blind vertrauen.
Worauf das Relay läuft
Auf jedem dauerhaft laufenden Linux mit systemd im selben Netzwerk wie deine Poolsteuerung. Der Installer erkennt die Architektur selbst:
| Architektur | Zum Beispiel |
|---|---|
arm64 (64-Bit-ARM) |
Raspberry Pi 3, 4 und 5 mit 64-Bit-System, Raspberry Pi Zero 2 W |
armv7 (32-Bit-ARM) |
Raspberry Pi 2 und 3 mit 32-Bit-System, viele andere Einplatinenrechner |
amd64 (64-Bit-x86) |
ein Mini-PC oder ein alter Laptop |
386 (32-Bit-x86) |
ältere x86-Rechner |
riscv64 |
RISC-V-Boards |
Nicht unterstützt ist 32-Bit-ARMv6 – also der erste Raspberry Pi, der Pi Zero und der Pi Zero W. Der Installer bricht dort mit einer Meldung ab. Der Pi Zero 2 W ist dagegen ein 64-Bit-Gerät und funktioniert.
Home Assistant: Als App braucht das Relay Home Assistant OS oder Supervised auf einem 64-Bit-System (aarch64 oder amd64) – siehe Home Assistant.
Der Tunnel in einfachen Worten
Zu Hause läuft alles über dein WLAN. Unterwegs geht es über den Tunnel: eine Verbindung, die das Relay von zu Hause zur PoolPilot Cloud aufbaut und offen hält.
- Verschlüsselt. Der Tunnel läuft über TLS. Bevor das Relay sich anmeldet, prüft es das Zertifikat des Tunnelservers gegen das, das ihm die PoolPilot Cloud beim Koppeln gegeben hat – so meldet es sich nicht bei einem Betrüger an.
- Nur für gekoppelte Handys. Auch eine Anfrage durch den Tunnel braucht den Zugangsschlüssel eines Handys, das du gekoppelt hast. Ohne lehnt das Relay sie ab – die Adresse deines Relays zu kennen reicht nicht. Das gilt auch für die Weboberfläche deiner Poolsteuerung. Einzige Ausnahme ist eine kleine öffentliche Info-Seite (etwa Version und Kennung des Relays, ob es gekoppelt ist, und sein öffentlicher Fingerabdruck) – sie verrät nichts, womit jemand hineinkäme.
- Das Heikle bleibt zu Hause. Koppeln, Werksreset und das Zurücksetzen des Haushalts funktionieren nur im Heimnetz. Durch den Tunnel lehnt das Relay sie ab, selbst von einem gekoppelten Handy.
- Ende-zu-Ende-verschlüsselt. Alles, was die App durch den Tunnel mit deinem Relay austauscht – die Relay-Verwaltung, deine Poolwerte und die Weboberfläche deiner Poolsteuerung im eingebauten Browser der App –, ist Ende-zu-Ende-verschlüsselt zwischen deinem Handy und deinem Relay. Das Relay nimmt die verschlüsselte Verbindung selbst an, mit demselben Zertifikat wie im Heimnetz, und die App akzeptiert nur den Fingerabdruck, den sie beim Koppeln gelernt hat. Die Cloud leitet verschlüsselte Daten weiter, die sie nicht lesen kann. Das letzte Stück, vom Relay zu deiner Poolsteuerung im Heimnetz, bleibt unverändert und läuft oft unverschlüsselt per HTTP, weil viele Steuerungen nur das sprechen.
- Was die Cloud trotzdem sieht. Dass eine Verbindung zur Adresse deiner Steuerung aufgebaut wurde (die Kennung der Steuerung ist Teil dieser Adresse), wann, von welcher IP-Adresse (bei normalen Verbindungen nicht protokolliert – siehe unten) und wie viele Daten geflossen sind. Nutzt eine Verbindung das ältere TLS 1.2, kann die Cloud außerdem das Zertifikat des Relays sehen, das die Kennung des Relays und den Hostnamen des Geräts enthält (so, wie er beim ersten Start des Relays hieß). Was du abfragst, die Zugangsdaten deiner Steuerung und deine Werte sieht sie nicht.
- Getrennt vom Tunnel. Für Koppeln, deinen Haushalt und die Push-Einrichtung spricht die App direkt mit der PoolPilot Cloud, und das Relay schickt deine Warnungen an die Cloud, damit sie Push-Nachrichten zustellen kann (siehe Was wo gespeichert ist). Auch diese Verbindungen sind verschlüsselt, enden aber bei der Cloud.
- Ältere App-Versionen. Das gilt ab PoolPilot-App-Version 1.2 mit Relay 0.11 oder neuer. Ältere App-Versionen nutzen weiterhin die bisherige Verbindung: Das Handy spricht verschlüsselt mit der PoolPilot Cloud, und die Cloud entschlüsselt jede Anfrage und reicht sie, neu verschlüsselt, durch den Tunnel weiter. Deine Anfragen und die Antworten der Steuerung sind in der Cloud nur für diesen Moment des Weiterleitens sichtbar – sie werden weder gespeichert noch ausgewertet. Mit App 1.2 und einem Relay älter als 0.11 gibt es keinen Rückfall auf diese Verbindung: Der Fernzugriff über das Relay pausiert, bis das Relay aktualisiert ist, und zu Hause funktioniert alles weiter.
- Kein Verkehrsprotokoll. Der Web-Eingang des Tunnels führt kein Zugriffsprotokoll, es entsteht also keine Spur, was du wann mit deinem Pool gemacht hast. Der Tunnelserver meldet der Cloud nur, dass sich ein Relay verbunden hat, noch online ist oder offline gegangen ist – nie, was hindurchgeht –, und die Cloud behält davon nur jeweils den letzten Zeitpunkt, für die Online-Anzeige in der App. Protokolliert werden nur Warnungen und Fehler – normale Anmeldungen und der Verkehr selbst nicht. Eine Warnung zu einer abgelehnten oder fehlerhaften Verbindung kann die IP-Adresse enthalten, von der sie kam; die Logs sind in der Größe begrenzt und rotieren.
Im Heimnetz spricht die App ebenfalls verschlüsselt mit dem Relay und prüft sein Zertifikat: Beim Koppeln lernt die App den Fingerabdruck des Relays und vertraut ab dann nur diesem einen Relay.
Netzwerk und Ports
Im Heimnetz
| Port | Wofür |
|---|---|
| TCP 8443 (HTTPS), eingehend | Die lokale Schnittstelle des Relays – fürs Koppeln und für die App. Änderbar mit LAN_LISTEN bzw. in Home Assistant mit lan_port. |
| UDP 5353 (mDNS) | Das Relay kündigt sich als _poolpilot-relay._tcp an, damit die App es ohne IP-Adresse findet. |
Außerdem spricht das Relay im Heimnetz mit deiner Poolsteuerung – per HTTP oder HTTPS, je nachdem, was die Steuerung nutzt.
Ins Internet – nur ausgehend
| Ziel | Wofür |
|---|---|
api.poolpilot.eu, HTTPS (443) |
Koppeln, Anmelden der Poolsteuerungen, Warnungen, Update-Prüfung. |
| Tunnelserver, TCP 7000 (TLS) | Fernzugriff von unterwegs. Die Cloud nennt den Server beim Koppeln – derzeit connect.poolpilot.eu. |
| GitHub Releases, HTTPS (443) | Updates herunterladen. |
get.poolpilot.eu, HTTPS (443) |
Nur, wenn du den Installer ausführst. |
Heimrouter lassen ausgehende Verbindungen normalerweise zu – an deinem Router musst du also nichts einstellen.
Was wo gespeichert ist
Auf dem Relay
Alles, was das Relay über einen Neustart retten muss, liegt in einer Datei: /var/lib/poolpilot-relay/state.json (in Home Assistant /data/state.json). Darin stehen vor allem:
- die TLS-Identität des Relays – aus ihr ergibt sich der Fingerabdruck, den du beim Koppeln siehst,
- die gekoppelten Handys mit Name und Rolle – von ihren Zugangsschlüsseln nur ein Hash, nie der Schlüssel selbst,
- deine Poolsteuerungen mit Adresse, Name und Typ – und ihrem Benutzernamen und Passwort,
- deine Warnregeln und eine kurze Warteschlange noch nicht zugestellter Warnungen,
- die Zugangsdaten für den Tunnel,
- Einstellungen wie den Update-Schalter und das Abfrage-Intervall.
Daneben liegen die Konfigurationsdatei /etc/poolpilot-relay/config und die Logs im systemd-Journal.
In der PoolPilot Cloud
Die Cloud kennt das Relay und den Haushalt, zu dem es gehört, Typ, Adresse und Namen deiner Poolsteuerungen und die Tunnel-Zugangsdaten, die sie ausgegeben hat. Sie bekommt deine Warnungen (welche Regel ausgelöst hat, den Wert, den Namen des Pools), um sie als Push zu verschicken, und bewahrt sie bis zu 30 Tage auf, damit du sie in der App nachlesen kannst. Deine laufenden Messwerte lädt das Relay nicht hoch.
Die PoolPilot Cloud läuft bei Hetzner in Deutschland, und ihre verschlüsselten Backups liegen ebenfalls in Deutschland. Was genau wofür und wie lange verarbeitet wird, steht in der Datenschutzerklärung.
Signierte Releases und Updates
Jede Version erscheint unter GitHub Releases mit einer Liste von SHA-256-Prüfsummen, signiert mit minisign.
- Der Installer prüft die Prüfsumme jedes Downloads und bricht bei einer Abweichung ab. Ist minisign installiert (der Installer bietet es an), prüft er zusätzlich die Signatur.
- Das Selbst-Update prüft immer die Signatur – gegen einen fest ins Relay eingebauten Schlüssel – und danach die Prüfsumme jeder Datei. Auch die Download-Adresse ist fest eingebaut, sodass nicht einmal die PoolPilot Cloud das Relay auf einen anderen Server umleiten kann. Mehr unter Updates & Einstellungen.
- Der Installer läuft als dein normaler Benutzer und zeigt dir die
sudo-Schritte, bevor er nach dem Passwort fragt. Er richtet keine Telemetrie, keine Cronjobs und keine Änderungen an deinem Shell-Profil ein. Lesen kannst du ihn vorher im Repository:deploy/relay/install.sh.
Einen Download selbst prüfen
Hol sha256sums.txt und sha256sums.txt.minisig aus derselben Version und den öffentlichen Schlüssel deploy/relay/minisign.pub aus dem Repository, dann:
minisign -Vm sha256sums.txt -p minisign.pub # die Signatur
sha256sum -c --ignore-missing sha256sums.txt # die heruntergeladenen Dateien
Open Source
Das Relay ist quelloffen unter der MIT-Lizenz. Für den Tunnel steckt frp im Programm, das unter der Apache-2.0-Lizenz steht (siehe NOTICE im Repository). Den ganzen Quellcode findest du auf GitHub.