Metainformationen zur Seite
Loxone behind reverse proxy
Ein Reverse-Proxy ist ein Server, der vor Webservern sitzt und Anfragen von Clients (z. B. Webbrowsern) an diese Webserver weiterleitet. Reverse-Proxys werden gewöhnlich implementiert, um Sicherheit, Performance und Zuverlässigkeit zu erhöhen. Der Gen1 Miniserver kann keine verschlüsselten Verbindungen aufbauen, ein Reverse Proxy kann dabei behilflich sein.
Prerequisites
- Dynamic DNS service https://www.duckdns.org/
- Port forwarding to reverse proxy (Port 443 -> 4431)
Installation
Wir starten mit der Installation des Docker Plugins -> https://wiki.loxberry.de/plugins/docker/start
Nach der Installation des Plugins das Webinterface von Portainer öffnen -> LoxberryIP:9443
Environment auswählen und einen neuen Stack erstellen (Stacks -> Add stack)
Name: Swag
Im web editor folgenden Code anpassen und einfügen
version: "2.1" services: swag: image: lscr.io/linuxserver/swag container_name: swag cap_add: - NET_ADMIN environment: - PUID=1000 - PGID=1000 - TZ=Europe/Rome - URL=<eure_subdomain>.duckdns.org - SUBDOMAINS=wildcard - VALIDATION=duckdns - DUCKDNSTOKEN=<euer_duckdns_token> - DOCKER_MODS=linuxserver/mods:swag-dbip volumes: - /var/lib/docker/volumes/swag/_data:/config #Folder welcher an den container übergeben wird. ports: - 4431:443 #Der Loxberry Port 4431 wird an den Docker auf dem Port 443 gemapped #- 80:80 #optional restart: unless-stopped
Stack deployen (somit wäre der Reverse proxy eingerichtet)
Port forwarding auf euren Router einrichten. 0.0.0.0:443 -> loxberryIP:4431
Jetzt müssen wir noch Loxone konfigurieren. Verbindet euch via SSH (ssh loxberry@iploxberry) auf loxberry und gebt euch root Rechte via (su -)
Geht in den Ordner /var/lib/docker/volumes/swag/_data/nginx/proxy-confs und erstellt die Konfigurationsdatei loxone.subdomain.conf:
#SSL configuration server { listen 443 ssl; server_name loxone.*; include /config/nginx/ssl.conf; client_max_body_size 0; # Improve HTTPS performance with session resumption ssl_session_cache shared:SSL:10m; # Disable SSLv3 ssl_protocols TLSv1 TLSv1.1; # Enable HSTS (https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security) add_header Strict-Transport-Security "max-age=63072000; includeSubdomains"; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 5s; location / { proxy_pass <loxone server ip>:80; proxy_set_header Host $host; proxy_redirect http:// https://; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; } }
Startet den Container neu
Testet die Konfiguration via mit einem Webbrowser von extern via https://loxone.eure_subdomain.duckdns.org
Sobald alles läuft könnt ihr euch um das hardening kümmern, z.B. Geoblocking -> https://virtualize.link/secure/
In der App und Loxone Config könnt ihr jetzt die Remote Adresse ersetzen in loxone.eure_subdomain.duckdns.org:443
Jetzt habt ihr Zugriff via SSL auf eure Loxone Instanz. Ihr könnt nun auch weitere Dienste in den Reverse Proxy hinterlegen. Im Ordner /var/lib/docker/volumes/swag/_data/nginx/proxy-confs findet ihr einige Beispielkonfigurationen.
Ich hoffe ich hab nichts vergessen... :)
Für Feedback oder eventuelle Fragen: https://www.loxforum.com/forum/projektforen/loxberry/allgemeines-aa/384810-loxone-behind-reverse-proxy