Das Problem, Home Assistant von außen zu erreichen
Home Assistant steuert hier das Haus: das Licht, die Heizung, die Klimaanlage, die Ladestation fürs Auto, die Alarme. Über die App auf dem Telefon wird all das unterwegs benutzt, und über sie weiß das Haus auch, wo die Telefone sind, weil die App im Hintergrund Standort und Sensoren meldet.
Also muss es funktionieren, wenn niemand zu Hause ist. Die Frage ist, wie.
Die übliche Antwort ist, Home Assistant mit einem Hostnamen und einer Anmeldeseite ins Internet zu stellen. Das funktioniert. Es heißt auch, dass jeder auf dem Planeten die Anmeldeseite erreichen, Passwörter dagegen ausprobieren und abklopfen kann, was dahinter sitzt. Eine Anmeldeseite ist ein Passwort zwischen dem Internet und den Schlössern deiner Haustür.
Das wollte ich nicht. Die Anforderungen waren kurz:
- Keine öffentlich erreichbare Anmeldeseite. Nichts antwortet, wenn das Gerät nicht eins von unseren ist.
- Die Home-Assistant-App muss im Hintergrund weiterlaufen, ohne dass jemand sich durch eine Anmeldung tippt.
- Nichts Zusätzliches auf den Telefonen. Kein VPN-Agent.
- Cloudflares kostenloser Tarif. Der Tunnel ist schon da.
Diese vier schließen die meisten üblichen Optionen aus, bevor du überhaupt anfängst.
Was jede Option tatsächlich bringt
Die Doku von Home Assistant selbst nennt die Wege hinein: Home Assistant Cloud, ein VPN, einen Reverse Proxy oder Portweiterleitung1. Cloudflare fügt eigene Varianten der letzten beiden hinzu. So schneiden sie gegen diese vier Anforderungen ab, das kann bei jeder schiefgehen, und so viel Akku kostet jede.
| Option | Wer die Anmeldeseite erreicht | App läuft im Hintergrund | Zusätzlich auf dem Telefon | Was es wirklich kostet | Risiken | Akkukosten | IPv4 und IPv6 |
|---|---|---|---|---|---|---|---|
| Portweiterleitung zu Home Assistant | Jeder | Ja | Nichts | Kostenlos auf der Rechnung. Jeder Scan und jeder Passwortversuch läuft auf Home Assistant, und ein DDoS landet auf deiner Leitung zu Hause | Anmeldeseite offen für jeden Scanner. Ein Loch im Router direkt ins LAN. Eine Leitung hinter Carrier-Grade NAT hat keinen Port zum Weiterleiten2. App: funktioniert auf Android und iPhone, es ist nur eine URL | Normal | IPv4 braucht eine eigene öffentliche Adresse, kein Carrier-Grade NAT. IPv6 braucht ein Loch in der Firewall, und ein Telefon in einem reinen IPv4-WLAN erreicht es nicht |
| Cloudflare Tunnel, sonst nichts | Jeder | Ja | Nichts | Kostenlos. Cloudflare fängt einen DDoS ab, aber jeder Passwortversuch läuft weiter auf Home Assistant | Anmeldeseite offen für jeden Scanner und jede Passwortliste. Ein erratenes Passwort, und ein Angreifer hat eine Maschine in deinem LAN. App: funktioniert auf Android und iPhone, es ist nur eine URL | Normal | Beides. Cloudflare antwortet auf jedem3, und das Haus wählt sich nur nach außen ein4 |
| Tunnel plus Anmeldung über Cloudflare Access | Nur nach einer Anmeldung | Nein, Aufrufe im Hintergrund landen bei der Anmeldung | Nichts | Kostenlos. Fremde bleiben bei Cloudflare hängen, keine Last auf Home Assistant | Standort und Sensoren hören auf zu melden, ohne dass es jemand merkt. Nur Home Assistant ist veröffentlicht, hinter der Anmeldung. App: kann den Service-Token-Header nicht senden, den Access braucht5 | Normal | Beides, wie beim Tunnel |
| Tunnel plus privates Netz über WARP | Niemand von außen | Ja | WARP-Agent | Kostenlos. Nichts Öffentliches zum Scannen | Läuft über UDP-Ports, die ein Hotel- oder Firmennetz sperren kann6. Android erlaubt ein VPN zur Zeit7. Eine Route kann das ganze LAN auf jedes eingebundene Telefon legen8. App: braucht nichts, aber WARP hat Clients für Android und iPhone und keinen für eine Wear-OS-Uhr9 | Höher, ein VPN, das immer an ist | Beides. Der Agent erreicht Cloudflare über jedes6 |
| Home Assistant Cloud | Jeder mit der URL | Ja | Nichts | £6.50 im Monat oder £65 im Jahr10. Passwortversuche laufen weiter auf Home Assistant | Anmeldeseite öffentlich. Die Firma eines anderen hält den Weg hinein: kein Zugang, wenn ihr Dienst ausfällt. Ein erratenes Passwort, und ein Angreifer hat eine Maschine in deinem LAN. App: funktioniert auf Android und iPhone | Normal | Zu Hause beides, es wählt sich zu einem Relay von Nabu Casa hinaus11. IPv6 fürs Telefon ist nicht dokumentiert |
| Portweiterleitung zu nginx oder Caddy mit Client-Zertifikat | Nur Geräte mit einem Zertifikat | Ja | Ein Zertifikat und der Root deiner eigenen CA | Kostenlos auf der Rechnung. Ein Fremder kostet einen TLS-Handshake am Proxy, nie eine Anmeldung bei Home Assistant, und ein DDoS landet auf deiner Leitung zu Hause | Ein Loch im Router zum Proxy, nicht zu Home Assistant. Du betreibst die CA, und eine veraltete CRL sperrt jedes Telefon aus. App: wie in der Zertifikatszeile unten | Normal | Wie bei der Portweiterleitung. nginx muss man sagen, dass es auf IPv6 lauschen soll, Caddy tut es standardmäßig |
| Tunnel plus Client-Zertifikat | Nur Geräte mit einem Zertifikat | Ja | Ein Zertifikat | Kostenlos. Fremde werden am Edge abgewiesen, keine Last auf Home Assistant | Ein verlorenes Telefon kommt hinein, bis es widerrufen ist. Einfaches HTTPS auf 443, nur dort gesperrt, wo auch das Web gesperrt ist. Nur Home Assistant ist veröffentlicht, und nur für Zertifikatsinhaber. App: auf Android unterstützt; die iPhone-App ist nicht dokumentiert; Wear OS braucht die PKCS12-Datei bei der Einrichtung12 | Normal | Beides, wie beim Tunnel |
Der Tunnel nimmt auch die Frage IPv4 gegen IPv6 vom Tisch. Cloudflare beantwortet das Telefon auf dem, was es hat, und das Haus wählt sich immer nur nach außen ein, also funktioniert eine Leitung hinter Carrier-Grade NAT, oder eine mit IPv6 und überhaupt keiner öffentlichen IPv4-Adresse, genauso wie jede andere. Eine Portweiterleitung braucht eine eigene öffentliche IPv4-Adresse oder IPv6 an beiden Enden. Warum so viele Leitungen zu Hause immer noch keins von beiden haben, ist eine eigene Geschichte, in Uns sind nie die Adressen ausgegangen. Uns ist die Mühe ausgegangen..
Der Tunnel allein behebt den Router, nicht die Angriffsfläche. cloudflared baut nur ausgehende Verbindungen auf, also gibt es keinen eingehenden Port weiterzuleiten13, aber der Hostname, den er veröffentlicht, liefert die Anmeldeseite trotzdem jedem aus, der danach fragt.
Behebt Cloudflare Access das? Für einen Browser ja, und so benutzen es die Desktops in Zero-Trust-VDI ohne Cloud-Rechnung. Für die App ist es die falsche Form. Access stellt einen Menschen vor eine Anmeldeseite, und hinter dem Hintergrundverkehr der App steht kein Mensch. Der übliche Umweg ist ein Service-Token, als Header mitgeschickt, und die App kann keinen senden. Ihre Web-View bietet keinen Weg, Header an POST-Anfragen oder WebSockets zu hängen, und genau so spricht die App mit Home Assistant, und die Diskussion der Entwickler landet bei Client-Zertifikaten als „a better (more secure) alternative“5.
WARP würde es schaffen, und es ist rausgeflogen, weil es einen Agenten auf jedem Telefon bedeutet. Ein VPN kostet mehr Akku als eine normale Verbindung, weil es ein Tunnel ist, der den ganzen Tag offen gehalten wird, ob die App gerade spricht oder nicht. Es läuft über UDP auf Ports, die ein Hotel- oder Firmennetz verwerfen kann, und dann bist du genau dann ausgesperrt, wenn du unterwegs bist6. Und Android betreibt ein VPN zur Zeit7, also können WARP und ein Firmen-VPN nicht beide laufen. Home Assistant Cloud ist ein guter Dienst und bezahlt die Entwicklung, aber es ist ein Abo, und die URL liefert trotzdem jedem eine Anmeldeseite, der sie findet. Es gibt auch den Weg in dein Haus an die Firma eines anderen ab. Ihr Dienst, ihr Konto, ihr Preis, ihre Bedingungen. Das ist ein Verlust an Souveränität, und es ist der Tausch, den jedes Cloud-Angebot von dir verlangt: Bequemlichkeit jetzt, jemand anderes hat für immer die Kontrolle.
Cloudflare ist der Art nach nicht anders, und es wäre unehrlich, so zu tun, als wäre es das. Jede Tunnel-Option in dieser Tabelle setzt Cloudflare in den Weg, und es terminiert TLS an seinem Edge, nur so kann die WAF-Regel die Zertifikatsprüfung überhaupt lesen. Der Unterschied ist, wie viel es in der Hand hat. Hier hält es das Tor. Home Assistant, seine Daten und seine Passwörter bleiben im Haus, und wenn Cloudflare verschwindet, läuft das Haus weiter, und das ist die letzte Zeile der Tabelle unter „Wo es an seine Grenzen kommt“. Ist selbst das mehr Vertrauen, als du abgeben willst, macht die Variante mit nginx und Caddy dieselbe Prüfung im eigenen Haus, mit deiner eigenen CA, und nimmt dafür die Portweiterleitung und die Pflichten der CA auf sich.
Bleibt das Client-Zertifikat. Das Telefon beweist, was es ist, bevor Home Assistant ein einziges Byte sieht.
Was es wirklich kostet, offen im Internet zu stehen
Kostenlos auf der Rechnung ist nicht dasselbe wie kostenlos. Alles, was dem Internet antwortet, zahlt dafür in Maschinenlast. Jeder Passwortversuch gegen die Anmeldung von Home Assistant ist eine bcrypt-Prüfung mit 12 Runden, und sie läuft auch dann, wenn der Benutzername nicht existiert, also kostet ein ratender Fremder genau so viel wie deine eigene Anmeldung14. Diese Last landet auf der Kiste, die das Haus steuert, rund um die Uhr, solange die Scanner kommen. Und sie kommen weiter.
Eine Portweiterleitung ist noch schlimmer, weil sie deine Adresse zu Hause in die Schusslinie stellt. Ein DDoS darauf füllt deinen Breitbandanschluss, und dann ist das ganze Haus vom Internet, nicht nur Home Assistant. Hinter dem Tunnel nimmt Cloudflare die Flut, in jedem Tarif einschließlich Free15, und es hat seit 2017 keinen Kunden mehr wegen der Größe eines Angriffs rausgeworfen16. Das Zertifikat geht den letzten Schritt. Ein Fremder wird am Edge abgewiesen, und Home Assistant gibt nix für ihn aus.
Dann ist da das Netz, in dem Home Assistant steht. Es ist keine Web-App auf einer Insel. Es steht im Heimnetz neben den Kameras, dem NAS und den Laptops, und es hält die Zugangsdaten für eine ganze Reihe davon. Komm an seiner Anmeldung vorbei, und du hast eine Maschine im Haus, nicht nur ein Dashboard. Eine Portweiterleitung ist ein Loch im Router, das direkt auf diese Maschine zeigt. WARP geht in die andere Richtung schief, weil es zu großzügig ist: eine Route kann ein ganzes privates Netz für jedes eingebundene Telefon veröffentlichen, und das einzugrenzen ist eine eigene Richtlinie, an die du denken musst8. Verlier ein Telefon, auf dem das läuft, und der Finder ist in deinem LAN. Das Zertifikat veröffentlicht einen Hostnamen, für die Geräte, die eins haben, und sonst ist nichts im Netz von außen überhaupt erreichbar.
mTLS im kostenlosen Tarif: welche Hälfte kostenlos ist
Ein guter Teil der Ratschläge im Netz sagt, mTLS bei Cloudflare brauche Enterprise. Tut es nicht. Cloudflare verkauft mTLS zweimal, und nur eins davon braucht Enterprise.
| Client-Zertifikate plus WAF-Regel | mTLS mit Cloudflare Access | |
|---|---|---|
| Tarif | Free, Pro, Business, Enterprise | Nur Zero Trust Enterprise |
| Zertifizierungsstelle | Von Cloudflare verwaltet (eigene mitbringen ist Enterprise) | Nur eigene |
| Enthaltene Zertifikate | 100 aktive pro Zone | Nicht zutreffend |
| Durchgesetzt von | Einer WAF-Regel, die du schreibst | Einer Access-Richtlinie |
| Widerruf | Eingebaut, von der Regel geprüft | Deine eigene CRL und ein Worker |
Die erste Spalte ist die, die wir wollen. Eine eigene CA mitzubringen ist bei Cloudflare Enterprise. Ohne Cloudflare kostet es nichts, und Client-Zertifikate von step-ca behandelt das. Cloudflares eigener Vergleich sagt es klar: das Angebot Application Security enthält 100 Client-Zertifikate pro Zone kostenlos, während Access-mTLS eine Funktion von Zero Trust Enterprise ist17. Die Tarife Free, Pro und Business bekommen 100 aktive Zertifikate pro Zone, und einen zu widerrufen gibt seinen Platz sofort frei18. Zwei Telefone belegen zwei davon.
Der kostenlose Tarif bekommt außerdem fünf eigene WAF-Regeln19. Das hier braucht eine.
Wie die Prüfung funktioniert
Cloudflare erledigt die Arbeit an seinem Edge. Ist mTLS für einen Hostnamen eingeschaltet, fragt der TLS-Handshake den Client nach einem Zertifikat20. Das allein blockiert nichts. Ein Client, der kein Zertifikat schickt, verbindet sich trotzdem. Er kommt einfach mit einem Prüffeld an, das auf false steht.
Das Blockieren macht die WAF-Regel. Cloudflare stellt das Ergebnis der Zertifikatsprüfung als Felder in seiner Regelsprache bereit21:
(http.host eq "ha.example.com"
and (not cf.tls_client_auth.cert_verified
or cf.tls_client_auth.cert_revoked))
Action: Block
Die zweite Zeile steht da aus gutem Grund. Ein widerrufenes Zertifikat besteht die Prüfung trotzdem, weil cert_revoked gleich true bedeutet, dass auch cert_verified true ist22. Prüf nur das erste Feld, und ein widerrufenes Zertifikat spaziert geradewegs herein. Das Zertifikat eines verlorenen Telefons zu widerrufen bringt gar nix, wenn die Regel nicht danach fragt.
Ehre, wem Ehre gebührt: die Leute im Thread zur Home-Assistant-App für Android haben diese Regel ausgetüftelt und gepostet5. Gute Beschreibung, und sie hat mir einen Haufen Sucherei erspart.
Die Seite von Home Assistant
Home Assistant muss gesagt bekommen, dass es hinter einem Proxy steht, und das ist nicht optional. Anfragen von einem Reverse Proxy werden absichtlich blockiert, bis Home Assistant gesagt wird, ihm zu vertrauen23. Der cloudflared-Connector des Tunnels zählt als einer.
Seit 2026.8 stehen diese Einstellungen in der Oberfläche, unter Settings → System → Network → HTTP server, nicht in configuration.yaml23. Das Speichern startet Home Assistant neu, und ein Administrator hat dann fünf Minuten, die neuen Einstellungen zu bestätigen, bevor sie sich von selbst zurücksetzen. Ein Sicherheitsnetz, das du kennen solltest, bevor du dich aussperrst.
| Einstellung | Wert | Warum |
|---|---|---|
| Trust X-Forwarded-For | An | Ohne sie werden weitergeleitete Anfragen abgelehnt |
| Trusted proxies | Nur die Adresse der cloudflared-Maschine | Nur diese Kiste darf behaupten, für jemanden weiterzuleiten |
| Enable IP banning | An, eine Handvoll Versuche | Sperren treffen die echte Client-Adresse, nicht die von Cloudflare |
| Home Assistant URL, Internet | https://ha.example.com | Die App übernimmt das als ihre externe URL |
Der Eintrag für vertrauenswürdige Proxys ist absichtlich eng. Vertrau einem ganzen Subnetz, und jedes Gerät darin kann die Client-Adresse fälschen, was die Sperrliste wertlos macht.
Dann die App. Die Doku der Companion App behandelt genau diesen Aufbau ausdrücklich. Sitzt Home Assistant hinter einem Reverse Proxy, der TLS-Client-Authentifizierung macht, fragt die App nach einem Zertifikat, und sie will es als „VPN & app user certificate“ installiert haben12. Auf einem Telefon ohne Zertifikat bekommst du einen Fehler oder einen leeren Bildschirm, und das ist das richtige Ergebnis für ein Telefon, das nicht hineindarf.
Stell die Verbindungssicherheit der App auf Most secure. Die einfache lokale http://-Adresse wird dann nur im heimischen WLAN benutzt, und überall sonst benutzt die App den HTTPS-Hostnamen oder verbindet sich gar nicht24. Dafür muss die Standortberechtigung auf Android auf „Allow all the time“ stehen, was die App für den Standort im Hintergrund ohnehin braucht.
Der Aufbau, Schritt für Schritt
| Schritt | Wo | Was |
|---|---|---|
| 1 | Cloudflare Tunnel | Einen öffentlichen Hostnamen anlegen, ha.example.com, der auf Home Assistant im LAN zeigt |
| 2 | SSL/TLS → Client Certificates | Ein Zertifikat pro Telefon erstellen. Zertifikat und Schlüssel kopieren, sie werden nicht noch einmal angezeigt18 |
| 3 | Client Certificates → Hosts | mTLS für ha einschalten |
| 4 | Security → WAF → Custom rules | Die Blockierregel von oben hinzufügen |
| 5 | SSL/TLS → Edge Certificates | Always Use HTTPS an, mindestens TLS 1.2 |
| 6 | Home Assistant → Network | Vertrauenswürdiger Proxy, IP-Sperren, externe URL, dann binnen fünf Minuten bestätigen |
| 7 | Ein Linux-Rechner | Eine PKCS12-Datei pro Telefon bauen |
| 8 | Jedes Telefon | Als VPN- und App-Benutzerzertifikat installieren, dann die App auf Most secure stellen |
| 9 | Test | Mobile Daten, WLAN aus. Die App verbindet sich. Ein Browser ohne Zertifikat wird blockiert |
Ein Zertifikat pro Telefon, nicht ein gemeinsames. Geht ein Telefon verloren, widerrufst du dieses Telefon, und das andere läuft weiter.
Das Telefon will Zertifikat und Schlüssel in einer PKCS12-Datei. Cloudflare gibt dir PEM, also füg sie zusammen:
openssl pkcs12 -export -in phone1.pem -inkey phone1.key \
-name "ha-phone1" -out phone1.p12
Hier bleiben die Leute hängen. Android ist pingelig bei der Verschlüsselung in der Datei, und die Doku von Home Assistant sagt, zuerst die aktuelle Voreinstellung zu probieren und nur dann auf einen Legacy-Container mit OpenSSLs Flag -legacy zurückzugreifen, wenn sie abgelehnt wird25. Derselbe Rat taucht in den Community-Threads auf, in denen eine Datei, die sich auf Apple-Geräten problemlos installieren ließ, von Android abgelehnt wurde5.
Der Menüpfad zum Installieren wandert zwischen Telefonherstellern und Android-Versionen herum. Googles eigene Seite für das Pixel ist ein Anfang26. Was die Menüs auch sagen, du willst den Speicher für Benutzer-Anmeldedaten, nicht den CA-Speicher.
Wo es an seine Grenzen kommt
Nichts hier ist frei von rauen Kanten, also hier sind sie.
| Fall | Was passiert | Was tun |
|---|---|---|
| Telefon verloren oder verkauft | Sein Zertifikat funktioniert, bis es widerrufen ist | Unter Client Certificates widerrufen. Die Regel prüft den Widerruf |
| Wear-OS-Uhr | Kann das installierte Zertifikat des Telefons nicht benutzen | Die PKCS12-Datei bei der eigenen Einrichtung der Uhr mitgeben12 |
| iPhone | Die Companion-Doku kennzeichnet diesen Abschnitt als nur für Android | Testen, bevor du dich darauf verlässt |
| Laptop-Browser unterwegs | Blockiert, kein Zertifikat | Ein Zertifikat im Browser installieren, oder es hinnehmen |
| Cloudflare ausgefallen | Überhaupt kein Fernzugriff | Das Haus läuft lokal weiter. Genau dafür läuft es lokal |
Das mit dem Browser ist eine Funktion, kein Fehler. Alles ohne Zertifikat ist ein Fremder, und das schließt meinen eigenen Laptop ein, bis ich ihm eins gebe.
Ein Schlüssel, kein Passwort
Ein Passwort ist etwas, das du weißt, und alles, was du weißt, kann erraten, abgefischt, wiederverwendet oder aus dem Datenleck eines anderen geleakt werden. Stell eine Passwortseite ins Internet, und du hast dich auf ein Zahlenspiel gegen jeden mit einem Botnetz und einer Wortliste eingelassen. Vielleicht gewinnst du es jahrelang. Verlieren musst du nur einmal.
Ein Zertifikat ist etwas, das das Gerät hat. Niemand errät es. Niemand probiert es eine Million Mal, weil die Anfrage am Edge verworfen wird, bevor es irgendetwas gibt, woran man es probieren könnte. Die Anmeldeseite ist immer noch da und zählt immer noch, aber sie ist jetzt das zweite Schloss, nicht das einzige.
Was hinter dieser Seite sitzt, ist keine Web-App. Es sind die Schlösser, die Heizung, die Ladestation und die Kameras. Behandle es wie die Haustür, denn genau das ist es.
Worauf ich immer wieder zurückkomme: nichts davon kostet etwas. Cloudflare verschenkt die Zertifikate und die Regel im kostenlosen Tarif. Home Assistant dokumentiert die App-Seite in seiner eigenen Companion-Doku. Das Einzige, was es kostet, ist ein Abend, an dem man die Handbücher ordentlich liest, und damit ist die Voreinstellung, eine Passwortseite dem ganzen Internet zuzuwenden, eine Entscheidung, die Leute treffen, indem sie sie nicht lesen.
Home Assistant — Remote access — Home Assistant Cloud, VPN, Reverse Proxy und Portweiterleitung als Wege hinein. ↩︎
RFC 6598 — IANA-Reserved IPv4 Prefix for Shared Address Space — der Bereich 100.64.0.0/10 für Carrier-Grade NAT, in dem viele Kunden eine öffentliche Adresse teilen und keiner einen eingehenden Port bekommt. ↩︎
Cloudflare — IPv6 compatibility — in jedem Tarif standardmäßig an; Cloudflare „auto generates AAAA DNS records to allow IPv6 clients to connect“ für Hostnamen hinter dem Proxy. ↩︎
Cloudflare — Tunnel run parameters, edge-ip-version —
cloudflaredverbindet sich standardmäßig über IPv4 zu Cloudflare;6oderautolässt es IPv6 benutzen. ↩︎home-assistant/android PR #3593 — Add custom header support — die Web-View kann POST- oder WebSocket-Anfragen keine Header hinzufügen; Client-Zertifikate statt Service-Tokens vorgeschlagen; Benutzer melden Probleme mit dem Zertifikatsformat auf Android. ↩︎ ↩︎ ↩︎ ↩︎
Cloudflare — Cloudflare One client firewall requirements — WireGuard auf UDP 2408 mit Ausweichports UDP 500, 1701 und 4500; MASQUE auf UDP 443. ↩︎ ↩︎ ↩︎
Android Developers — VpnService — „There can be only one VPN connection running at the same time.“ ↩︎ ↩︎
Cloudflare — Connect an IP/CIDR — „You can connect an entire private network, a subnet, or an application defined by a static IP“; Gateway-Netzwerkrichtlinien zum Filtern dieses Verkehrs sind ein eigener, empfohlener Schritt. ↩︎ ↩︎
Cloudflare — Download Cloudflare One Client — Clients für Windows, macOS, Linux, iOS 15+, Android 5.0+ und ChromeOS; kein Wear-OS-Client aufgeführt. ↩︎
Nabu Casa — Pricing — Home Assistant Cloud für £6.50 im Monat oder £65.00 im Jahr, ohne Steuern. ↩︎
NabuCasa/hass-nabucasa — remote.py — Home Assistant meldet sich bei Nabu Casa an, bekommt einen Relay-
serverzugewiesen und verbindet sich nach außen dorthin. ↩︎Home Assistant Companion — Getting Started, TLS client authentication — installieren als „VPN & app user certificate“; Wear OS braucht das Zertifikat als PKCS12 bei der Einrichtung. ↩︎ ↩︎ ↩︎
Cloudflare — Cloudflare Tunnel —
cloudflaredbaut nur ausgehende Verbindungen auf, also lauscht am Ursprung nichts eingehend. ↩︎Home Assistant core — auth/providers/homeassistant.py — Passwörter mit bcrypt in 12 Runden gehasht; ein unbekannter Benutzername führt trotzdem ein Schein-
checkpwaus, „to make timing the same as if user was found“. ↩︎Cloudflare — DDoS Protection — automatische Erkennung und Abwehr von DDoS, „Available on all plans“. ↩︎
Cloudflare blog — Unmetered Mitigation — „Cloudflare will no longer terminate customers, regardless of the size of the DDoS attacks they receive, regardless of the plan level they use.“ ↩︎
Cloudflare — Use mTLS with Cloudflare protected resources — „100 Client Certificates per Zone are included for free“; Access-mTLS ist ein „Zero Trust Enterprise only feature“. ↩︎
Cloudflare — Create a client certificate — 100 aktive Zertifikate pro Zone bei Free, Pro und Business; Widerrufen gibt den Platz frei; Zertifikat und Schlüssel werden nach dem Erstellen nicht noch einmal angezeigt. ↩︎ ↩︎
Cloudflare — WAF custom rules — Verfügbarkeitstabelle: fünf eigene Regeln im kostenlosen Tarif. ↩︎
Cloudflare — Enable mTLS — mTLS pro Hostname einschalten und dann mit einer eigenen WAF-Regel durchsetzen. ↩︎
Cloudflare — Client certificate variables — die mTLS-Felder, die eigenen WAF-Regeln zur Verfügung stehen. ↩︎
Cloudflare — cf.tls_client_auth.cert_revoked — „When true, the cf.tls_client_auth.cert_verified field is also true.“ ↩︎
Home Assistant — HTTP integration — Reverse Proxys, vertrauenswürdige Proxys und IP-Sperren; Einstellungen 2026.8 in die Oberfläche gewandert, sie setzen sich zurück, wenn sie nicht binnen fünf Minuten bestätigt werden. ↩︎ ↩︎
Home Assistant Companion — Connection security level — Most secure benutzt eine unverschlüsselte URL nur im Heimnetz; braucht auf Android den Standort auf „Allow all the time“. ↩︎
Home Assistant Companion — Networking, TLS Client Authentication — zuerst die aktuelle PKCS12-Voreinstellung probieren, den OpenSSL-Container mit
-legacynur, wenn das scheitert. ↩︎Google — Pixel Phone Help, Add & remove certificates — ein Zertifikat auf einem Pixel von Hand installieren. ↩︎