Traefik als Reverse Proxy für Home Assistant und weitere Dienste

von 04.03.2023Smart Home0 Kommentare

Traefik kommt als Reverse Proxy auf meinem Heimserver, dem Beelink Mini S mit Proxmox VE, zum Einsatz, um Webservices im Internet sicher und ohne Portmapping zu publizieren. Traefik ist bestens dafür geeignet Docker Web Services zu verwalten. Dabei kann bereits im Rahmen eines Docker Compose Stacks alles nötige konfiguriert werden, damit Traefik die Publikation im Internet übernimmt. Traefik kümmert sich dabei auf Wunsch auch automatisiert um die Beantragung von kostenlosen Letsencrypt Verschlüsselungszertifikaten. Diese werden auch automatisch verlängert. Hiermit möchte ich Euch zeigen, wie einfach Traefik für das Bereitstellen von Services konfiguriert werden kann. Dabei läuft Home Assistant auf meinem Proxmox VE Server in einer eigenen VM als Supervised Home Assistant OS. Sonstige Open Source Services wie Paperless NGX, Trillium oder Calibre Web werden mit Portainer als Docker Images bereitgestellt. Diese laufen in einem Proxmox LXC Container. Alle diese Dienste können zentral von Traefik verwaltet werden.

Neben einem Server benötigt Ihr eine eigene Domäne, wie z.B. technikauswahl.de. Über den DNS Manager des Hosting Providers können beliebig viele Subdomains angelegt werden. Über einzelne Subdomains, wie z.B. service1.technikauswahl.de könnt Ihr Eure Webdienste aufrufen. Traefik erkennt über welche Subdomains Ihr Euch verbindet und steuert davon ausgehend das richtige Ziel im internen Netzwerk an. Dies hat den Vorteil, dass kein Network Address Translation (NAT) über Ports am Router konfiguriert werden muss. Die Standard Webports sind aus jedem Netzwerk aufrufbar und werden nicht geblockt, wie z.B. exotische Ports. Als weiteren Vorteil könnt Ihr Traefik mit Authentifizierungsmethoden wie z.B. Google OAuth 2.0 einrichten und damit Webdienste optimal sichern bzw. gleich eine automatische Anmeldung am Webdienst vornehmen. So lassen sich auch Webdienste absichern, die über keine eigene Authentifizierung verfügen.

So richtet Ihr Traefik grundlegend ein:

  1. Gehen wir davon aus, dass Ihr z.B. einen Proxmox VE LXC Container mit Docker, Docker Compose und Portainer installiert habt. Helper Skripte für die automatische Installation findet Ihr hier: https://tteck.github.io/Proxmox/ (Docker LXC auswählen).
  2. In Portainer ein neues Stack mit folgendem Inhalt erstellen aber noch nicht deployen: Traefik_Docker_Compose_with_OAuth.yml
  3. Im Docker Compose Stack im Teil für die OAuth Authentifizierung die Environment Variablen eintragen. Hierzu muss zunächst bei Google die Anwendung registriert werden, um Client ID und Client Secret zu erhalten. Hier eine Hilfestellung.
  4. Im Storage Verzeichnis folgende beiden YML-Dateien anlegen und an Eure Umgebung anpassen: traefik.yml und dynamic_conf.yml
  5. In der Datei dynamic_conf.yml wird die Anbindung an Home Assistant in der Virtuellen Maschine eingerichtet.
  6. Nun kann das Docker Compose Stack deployed werden. Prüft die Logs von Traefik in Portainer, ob es Fehlermeldungen gibt.
  7. Über Euren DNS Manager der Domain nun die benötigten Subdomains erstellen und auf Eure IP im Internet weiterleiten. Port 80 und 443 müsst Ihr in der Firewall für die IPv4 und ggf. IPv6 freigeben und an Euren Docker LXC Container weiterleiten. Bei mir ist noch IPv6 eingerichtet, da ich bald keine IPv4 Adresse mehr haben werde. Hierzu läuft im Docker LXC Container ein DDClient der Änderungen an der IPv6 Adresse überwacht und ggf. die IPv6 Adresse im DynDNS Dienst aktualisiert. Wichtig ist dabei, dass Euer Router IPv6 Prefix Änderungen des Providers per SLAAC – Stateless Address Autoconfiguration sofort an die Clients weiterreicht. DHCPv6 bringt hier nichts, da der Lease zu lange unverändert bleibt! Hier die Konfiguration für DDClient unter /etc/ddclient.conf. IPv4 wird bei mir über den Fritzbox DynDns Dienst aktuell gehalten.
  8. Für alle Docker Container, deren Web Dienste Ihr ebenfalls per Traefik im Internet bereitstellen wollt, müssen folgende Zeilen im Docker Compose Stack enthalten sein, da wir Traefik per Konfiguration nicht automatisch für alle Services aktiviert haben. Der Dienst wird immer von http auf https umgeleitet und die Google OAuth Authentifizierung wird aktiviert:
labels:
  - "traefik.enable=true"
  - "traefik.docker.network=traefik_proxy"
  # Http (Only redirect to HTTPS)
  - "traefik.http.routers.calibre-web.entrypoints=http"
  - "traefik.http.routers.calibre-web.rule=Host(`calibre.domain.de`)"
  - "traefik.http.middlewares.calibre-web-https-redirect.redirectscheme.scheme=https"
  - "traefik.http.routers.calibre-web.middlewares=calibre-web-https-redirect"
  # Https
  - "traefik.http.routers.calibre-web-secure.entrypoints=https"
  - "traefik.http.routers.calibre-web-secure.rule=Host(`calibre.domain.de`)"
  - "traefik.http.routers.calibre-web-secure.tls=true"
  - "traefik.http.routers.calibre-web-secure.tls.certresolver=letsencrypt"
  - "traefik.http.routers.calibre-web-secure.service=calibre-web"
  - "traefik.http.routers.calibre-web-secure.middlewares=secureHeaders@file"
  # Google OAUTH
  - "traefik.http.routers.calibre-web-secure.middlewares=oauth"
  # Service
  - "traefik.http.services.calibre-web.loadbalancer.server.port=8083"
  - "traefik.http.services.calibre-web.loadbalancer.server.scheme=http"

Wenn Ihr Euch einen günstigen und dennoch performanten Heimserver einrichten wollt, der mit 5 Watt im Idle sehr wenig Strom verbraucht empfehle ich Euch den Beelink Mini S bzw. S12, den Ihr hier sehr günstig kaufen könnt. Damit betreibt Ihr alle Eure Open Source Services mit Proxmox VE selbst.

0 Kommentare

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Weitere relevante Beiträge:

Heizungstemperatur mit Kaminbetrieb automatisch absenken

Heizungstemperatur mit Kaminbetrieb automatisch absenken

Mit einer intelligenten Heizungssteuerung, die eine Einbindung von Home Assistant als Smart Home System zulässt, kann man die Raumtemperatur der Heizung automatisch absenken und wieder erhöhen. Neben Home Assistent und einer kompatiblen Heizung wird noch ein Temperatursensor benötigt.

NFC Musikbox für Kinder mit Home Assistant und Google Nest Mini

NFC Musikbox für Kinder mit Home Assistant und Google Nest Mini

Kleinkinder können mit einem Smarten Lautsprecher wie dem Google Nest Mini nicht umgehen. Mit der Heimautomatisierung Home Assistant und ein wenig Elektronik lässt sich ein NFC Kartenleser bauen, der mit Home Assistant kommuniziert. Home Assistant wiederum spielt ausgehend von den aufgelegten NFC Karten die zugewiesene Musik ab. Ein Riesenspaß für Kinder!