Guide: Home Assistant + Cloudflare Tunnel (400 Bad Request)

Hvis du har oplevet fejlen “400 Bad Request” i forbindelse med brugen af Home Assistant og Cloudflare Tunnel, er du ikke alene. Denne fejl kan være frustrerende, men der er heldigvis løsninger, der kan hjælpe dig med at få tingene op at køre igen.

Hvad er Cloudflare tunnel?

Cloudflare Tunnel (tidligere kendt som Argo Tunnel) er en service, der gør det muligt at eksponere din lokale server sikkert på internettet uden at åbne porte i din router. Dette er ideelt for Home Assistant-brugere, der ønsker ekstern adgang til deres smart home-platform uden at gå på kompromis med sikkerheden. Hvis du har mobilt internet og ikke har mulighed for at lave portforwarding så vil en Cloudflare tunnel også virke for dig.

Ved at bruge Cloudflare Tunnel kan du beskytte din Home Assistant-installation bag Cloudflares netværk, som inkluderer DDoS-beskyttelse, SSL-certifikater og meget mere.

Hvad er “400 Bad Request”-fejlen?

Fejlen “400 Bad Request” opstår typisk, når der er en konflikt mellem klienten (din browser eller app) og serveren (Home Assistant). Denne fejl betyder, at serveren ikke kan forstå den anmodning, der sendes. Når dette sker med Cloudflare Tunnel og Home Assistant, skyldes det ofte følgende:

  1. SSL-konfigurationer, der ikke matcher.
  2. Cloudflare’s Proxy

Typiske årsager til problemet

1. SSL-konflikter

Når du bruger Cloudflare Tunnel, kan du opleve SSL-konflikter, hvis både Home Assistant og Cloudflare forsøger at håndtere kryptering. Dette kan resultere i fejl, hvor klienten afviser forbindelsen. Typisk skal du sætter cloudflare op til at være https:// men din home assistant skal sættes til https i Cloudfalre, som vist på billedet nedenunder.

2. Cloudflare’s proxy

Cloudflare tunnels benytter en proxy funktion, og Home Assistant er ikke korrekt konfigureret til at håndtere proxied trafik, kan det føre til en “400 Bad Request”. Det er meget ofte årsagen til at det ikke virker og det er det du her vil kunne finde en løsning på

Sådan løser du fejlen med 400 Bad Request

1. Kontroller dine DNS-indstillinger

  • Gå til din Cloudflare-konto og tjek dine DNS-indstillinger.
  • Sørg for, at det subdomæne, du bruger til Home Assistant, er korrekt konfigureret.
  • Aktiver proxy-funktionen (orangen sky) for at sikre, at trafikken går gennem Cloudflare og at den peger på cfargotunnek.com (hvis den ikke peger på en argotunnel.com URL, så er det nemmeste at slette den og oprette din tunnel igen under Tunnels.

2. Opsæt korrekt SSL-konfiguration

Cloudflare giver dig flere muligheder for SSL-indstillinger:

  • Off (not secure): Ingen kryptering. Ikke anbefalet.
  • Flexible: Kryptering mellem browseren og Cloudflare, men ikke til din server. Virker fint for Home assistant og er nemmeste at sætte op.
  • Full: Kryptering hele vejen, men kræver, at din Home Assistant har et selvsigneret certifikat.
  • Full (strict): Den mest sikre mulighed, som kræver et gyldigt certifikat på din Home Assistant-server.

Det nemmeste hvor du ikks skal rode med SSL certifikater, så skal du vælge Flexible. Hvis du har mod på at installere SSL certifikat på din Home assistant server, så vil Full være det du skal bruge. Installation af et SSL vertifikat vil ikke være noget der bliver gennemgået her ( Tip: Kig på addon Lets encrypt ).

3. Justér Home Assistant-konfigurationen

I din configuration.yaml, sørg for, at følgende er korrekt opsat og det er her de fleste har problemerne.

Tip: For at redigere din configuration.yaml skal du forbinde til serveren på en måde. Addonet “Advanced SSH & Web Terminal” er super nemt og virker godt til dette ( Kærver Home assistant OS). Hvis du benytter Home asistant docker skal du forbinde til din docker på en anden måde, da addons ikke virker i docker versionen ( Derfor anbefaler jeg HAOS versionen ).

http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 127.0.0.1
    - <IP-adressen på din Cloudflare Tunnel>

Dette sikrer, at Home Assistant accepterer proxied trafik fra Cloudflare.

Sådan finder du IP-adresserne fra Cloudflare

Her er en guide til, hvordan du finder og tilføjer disse IP-adresser.

1. Cloudflares officielle liste over IP-adresser

Cloudflare offentliggør en liste over deres IP-adresser, som du kan finde her:
Cloudflare IP Ranges.

2. Tilføj IP-adresserne til din Home Assistant-konfiguration

For at undgå fejlen “400 Bad Request” skal du specificere Cloudflares proxy-IP’er i din Home Assistant-konfiguration. Rediger din configuration.yaml og tilføj IPerne. Nedenunder er blot et eksempel:

http:
  use_x_forwarded_for: true
  trusted_proxies:    # Local IPs
    - 127.0.0.1    # Cloudflare IPv4 ranges
    - 173.245.48.0/20
    - 103.21.244.0/22
    - 103.22.200.0/22
    - 103.31.4.0/22
    - 141.101.64.0/18
    - 108.162.192.0/18
    - 190.93.240.0/20
    - 188.114.96.0/20
    - 197.234.240.0/22
    - 198.41.128.0/17
    - 162.158.0.0/15
    - 104.16.0.0/13
    - 104.24.0.0/14
    - 172.64.0.0/13
    - 131.0.72.0/22
    # Cloudflare IPv6 ranges
    - 2400:cb00::/32
    - 2606:4700::/32
    - 2803:f800::/32
    - 2405:b500::/32
    - 2405:8100::/32
    - 2a06:98c0::/29
    - 2c0f:f248::/32

Genstart din Home asissntat og se om det virker nu. Hvis det fortsat ikke virker, så er IPen næsten altid ikke med på listen (Af en eller anden årsag er ikke alle deres proxy IPer med).

Du skal så finde IPen i din cloudflared log. I loggen vil du finde følgende linjer (IPen kan være anderledes):

2024-11-30T16:29:10Z INF ICMP proxy will use 172.30.33.2 as source for IPv4
2024-11-30T16:29:10Z INF ICMP proxy will use ::1 in zone lo as source for IPv6

Du indtaster derfor blot følgende i din configuration.yaml og genstarter derefter din Home assistant server.

http:
  use_x_forwarded_for: true
  trusted_proxies:    # Local IPs
    - 127.0.0.1
    - 172.30.33.0/32 

Hvis alt går vel vil du nu se en login skærm når du besøger siden til din Home Asisstant.

Hvorfor er dette vigtigt?

Cloudflare bruger et distribueret netværk af proxyservere, og uden de korrekte trusted proxies kan Home Assistant ikke validere de proxied forbindelser. Hvilket kan føre til fejl som “400 Bad Request”.

Ved at følge ovenstående sikre du at din Home Assistant accepterer forbindelser fra Cloudflare, og at din opsætning fungerer problemfrit.

Med disse trin skulle du gerne kunne løse problemet med “400 Bad Request” og få din Home Assistant og Cloudflare Tunnel til at spille sammen. God fornøjelse med at sikre dit smart home!

GÅ IKKE GLIP AF NOGET

Vær blandt de første til at få besked, når vores seneste artikler bliver udgivet ved at tilmelde dig vores ugentlige nyhedsbrev!