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.

OptionWer die Anmeldeseite erreichtApp läuft im HintergrundZusätzlich auf dem TelefonWas es wirklich kostetRisikenAkkukostenIPv4 und IPv6
Portweiterleitung zu Home AssistantJederJaNichtsKostenlos auf der Rechnung. Jeder Scan und jeder Passwortversuch läuft auf Home Assistant, und ein DDoS landet auf deiner Leitung zu HauseAnmeldeseite 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 URLNormalIPv4 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 nichtsJederJaNichtsKostenlos. Cloudflare fängt einen DDoS ab, aber jeder Passwortversuch läuft weiter auf Home AssistantAnmeldeseite 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 URLNormalBeides. Cloudflare antwortet auf jedem3, und das Haus wählt sich nur nach außen ein4
Tunnel plus Anmeldung über Cloudflare AccessNur nach einer AnmeldungNein, Aufrufe im Hintergrund landen bei der AnmeldungNichtsKostenlos. Fremde bleiben bei Cloudflare hängen, keine Last auf Home AssistantStandort 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 braucht5NormalBeides, wie beim Tunnel
Tunnel plus privates Netz über WARPNiemand von außenJaWARP-AgentKostenlos. Nichts Öffentliches zum ScannenLä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-Uhr9Höher, ein VPN, das immer an istBeides. Der Agent erreicht Cloudflare über jedes6
Home Assistant CloudJeder mit der URLJaNichts£6.50 im Monat oder £65 im Jahr10. Passwortversuche laufen weiter auf Home AssistantAnmeldeseite ö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 iPhoneNormalZu 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-ZertifikatNur Geräte mit einem ZertifikatJaEin Zertifikat und der Root deiner eigenen CAKostenlos 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 HauseEin 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 untenNormalWie bei der Portweiterleitung. nginx muss man sagen, dass es auf IPv6 lauschen soll, Caddy tut es standardmäßig
Tunnel plus Client-ZertifikatNur Geräte mit einem ZertifikatJaEin ZertifikatKostenlos. Fremde werden am Edge abgewiesen, keine Last auf Home AssistantEin 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 Einrichtung12NormalBeides, 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-RegelmTLS mit Cloudflare Access
TarifFree, Pro, Business, EnterpriseNur Zero Trust Enterprise
ZertifizierungsstelleVon Cloudflare verwaltet (eigene mitbringen ist Enterprise)Nur eigene
Enthaltene Zertifikate100 aktive pro ZoneNicht zutreffend
Durchgesetzt vonEiner WAF-Regel, die du schreibstEiner Access-Richtlinie
WiderrufEingebaut, von der Regel geprüftDeine 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

Anfragefluss über Cloudflare-mTLS zu Home AssistantTelefonHA-Appmit ZertifikatAlle anderenein Scannerkein ZertifikatCloudflare-Edge, kostenloser TarifHandshakemTLS an fürha.example.comwill ZertifikatWAF-Regelgeprüft?nicht widerrufen?sonst BlockBlockierterreicht HA nieHeimnetzcloudflarednur ausgehender TunnelHome Assistantvertraut nur diesem ProxyIP-Sperren anAnmeldung: zweites Schlossdurchabgelehnt
Jede Anfrage: der Edge fragt im Handshake nach einem Zertifikat, die WAF-Regel blockiert alles Ungeprüfte oder Widerrufene, und erst dann geht die Anfrage durch den Tunnel zu Home Assistant.

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.

EinstellungWertWarum
Trust X-Forwarded-ForAnOhne sie werden weitergeleitete Anfragen abgelehnt
Trusted proxiesNur die Adresse der cloudflared-MaschineNur diese Kiste darf behaupten, für jemanden weiterzuleiten
Enable IP banningAn, eine Handvoll VersucheSperren treffen die echte Client-Adresse, nicht die von Cloudflare
Home Assistant URL, Internethttps://ha.example.comDie 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

SchrittWoWas
1Cloudflare TunnelEinen öffentlichen Hostnamen anlegen, ha.example.com, der auf Home Assistant im LAN zeigt
2SSL/TLS → Client CertificatesEin Zertifikat pro Telefon erstellen. Zertifikat und Schlüssel kopieren, sie werden nicht noch einmal angezeigt18
3Client Certificates → HostsmTLS für ha einschalten
4Security → WAF → Custom rulesDie Blockierregel von oben hinzufügen
5SSL/TLS → Edge CertificatesAlways Use HTTPS an, mindestens TLS 1.2
6Home Assistant → NetworkVertrauenswürdiger Proxy, IP-Sperren, externe URL, dann binnen fünf Minuten bestätigen
7Ein Linux-RechnerEine PKCS12-Datei pro Telefon bauen
8Jedes TelefonAls VPN- und App-Benutzerzertifikat installieren, dann die App auf Most secure stellen
9TestMobile 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.

FallWas passiertWas tun
Telefon verloren oder verkauftSein Zertifikat funktioniert, bis es widerrufen istUnter Client Certificates widerrufen. Die Regel prüft den Widerruf
Wear-OS-UhrKann das installierte Zertifikat des Telefons nicht benutzenDie PKCS12-Datei bei der eigenen Einrichtung der Uhr mitgeben12
iPhoneDie Companion-Doku kennzeichnet diesen Abschnitt als nur für AndroidTesten, bevor du dich darauf verlässt
Laptop-Browser unterwegsBlockiert, kein ZertifikatEin Zertifikat im Browser installieren, oder es hinnehmen
Cloudflare ausgefallenÜberhaupt kein FernzugriffDas 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.


  1. Home Assistant — Remote access — Home Assistant Cloud, VPN, Reverse Proxy und Portweiterleitung als Wege hinein. ↩︎

  2. 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. ↩︎

  3. 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. ↩︎

  4. Cloudflare — Tunnel run parameters, edge-ip-version — cloudflared verbindet sich standardmäßig über IPv4 zu Cloudflare; 6 oder auto lässt es IPv6 benutzen. ↩︎

  5. 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. ↩︎ ↩︎ ↩︎ ↩︎

  6. Cloudflare — Cloudflare One client firewall requirements — WireGuard auf UDP 2408 mit Ausweichports UDP 500, 1701 und 4500; MASQUE auf UDP 443. ↩︎ ↩︎ ↩︎

  7. Android Developers — VpnService — „There can be only one VPN connection running at the same time.“ ↩︎ ↩︎

  8. 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. ↩︎ ↩︎

  9. Cloudflare — Download Cloudflare One Client — Clients für Windows, macOS, Linux, iOS 15+, Android 5.0+ und ChromeOS; kein Wear-OS-Client aufgeführt. ↩︎

  10. Nabu Casa — Pricing — Home Assistant Cloud für £6.50 im Monat oder £65.00 im Jahr, ohne Steuern. ↩︎

  11. NabuCasa/hass-nabucasa — remote.py — Home Assistant meldet sich bei Nabu Casa an, bekommt einen Relay-server zugewiesen und verbindet sich nach außen dorthin. ↩︎

  12. Home Assistant Companion — Getting Started, TLS client authentication — installieren als „VPN & app user certificate“; Wear OS braucht das Zertifikat als PKCS12 bei der Einrichtung. ↩︎ ↩︎ ↩︎

  13. Cloudflare — Cloudflare Tunnel — cloudflared baut nur ausgehende Verbindungen auf, also lauscht am Ursprung nichts eingehend. ↩︎

  14. Home Assistant core — auth/providers/homeassistant.py — Passwörter mit bcrypt in 12 Runden gehasht; ein unbekannter Benutzername führt trotzdem ein Schein-checkpw aus, „to make timing the same as if user was found“. ↩︎

  15. Cloudflare — DDoS Protection — automatische Erkennung und Abwehr von DDoS, „Available on all plans“. ↩︎

  16. 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.“ ↩︎

  17. 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“. ↩︎

  18. 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. ↩︎ ↩︎

  19. Cloudflare — WAF custom rules — Verfügbarkeitstabelle: fünf eigene Regeln im kostenlosen Tarif. ↩︎

  20. Cloudflare — Enable mTLS — mTLS pro Hostname einschalten und dann mit einer eigenen WAF-Regel durchsetzen. ↩︎

  21. Cloudflare — Client certificate variables — die mTLS-Felder, die eigenen WAF-Regeln zur Verfügung stehen. ↩︎

  22. Cloudflare — cf.tls_client_auth.cert_revoked — „When true, the cf.tls_client_auth.cert_verified field is also true.“ ↩︎

  23. 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. ↩︎ ↩︎

  24. 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“. ↩︎

  25. Home Assistant Companion — Networking, TLS Client Authentication — zuerst die aktuelle PKCS12-Voreinstellung probieren, den OpenSSL-Container mit -legacy nur, wenn das scheitert. ↩︎

  26. Google — Pixel Phone Help, Add & remove certificates — ein Zertifikat auf einem Pixel von Hand installieren. ↩︎