In der heutigen vernetzten Welt haben viele von uns eine Vielzahl von Diensten im Heimnetzwerk laufen, sei es ein NAS, Smart-Home-Geräte oder IoT-Geräte wie WLED, die wir auch von außerhalb unseres Netzwerks steuern möchten. Um diese Dienste sicher und bequem aus dem Internet zu erreichen, ist eine verschlüsselte Verbindung über HTTPS unerlässlich. Hier kommt der Reverse Proxy ins Spiel.
Warum ein Reverse Proxy?
Ein Reverse Proxy dient als Vermittler zwischen dem Internet und Ihren internen Diensten. Er ermöglicht es Ihnen, mehrere Dienste unter derselben IP-Adresse und Ports zu betreiben und leitet eingehende Anfragen basierend auf der Domain oder anderen Kriterien an den entsprechenden internen Dienst weiter. Dies bietet mehrere Vorteile:
- Sicherheit: Durch SSL/TLS-Verschlüsselung schützen Sie die Kommunikation zwischen dem Client und Ihrem Server.
- Einfachheit: Sie müssen nur eine einzige Stelle konfigurieren, um SSL-Zertifikate zu verwalten.
- Flexibilität: Leichtes Hinzufügen oder Entfernen von Diensten ohne Änderung der externen Konfiguration.
Nginx Proxy Manager: Einfache Konfiguration eines Reverse Proxys
Um die Einrichtung eines Reverse Proxys so einfach wie möglich zu gestalten, empfiehlt sich der Nginx Proxy Manager. Dieses Tool bietet eine benutzerfreundliche Weboberfläche zur Verwaltung von Proxy-Hosts, SSL-Zertifikaten und vielem mehr. Zusätzlich nutzt es Let’s Encrypt, um SSL-Zertifikate automatisch zu beziehen und zu aktualisieren.
Einrichtung mit Docker
Folgend finden Sie eine Anleitung zur Einrichtung des Nginx Proxy Managers mit Docker.
Schritt 1: Docker Compose-Datei erstellen
Erstellen Sie eine docker-compose.yml
-Datei mit folgendem Inhalt:
version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80' # Öffentlicher HTTP-Port
- '443:443' # Öffentlicher HTTPS-Port
- '81:81' # Admin-Weboberfläche
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
Schritt 2: Docker Compose starten
Führen Sie im Verzeichnis der docker-compose.yml
-Datei folgenden Befehl aus:
docker compose up -d
Optional: Verwendung einer MySQL/MariaDB-Datenbank
Wenn Sie statt SQLite eine MySQL- oder MariaDB-Datenbank nutzen möchten, erweitern Sie die docker-compose.yml
wie folgt:
version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '443:443'
- '81:81'
environment:
DB_MYSQL_HOST: "db"
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: "npm"
DB_MYSQL_PASSWORD: "npm"
DB_MYSQL_NAME: "npm"
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
depends_on:
- db
db:
image: 'jc21/mariadb-aria:latest'
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: 'npm'
MYSQL_DATABASE: 'npm'
MYSQL_USER: 'npm'
MYSQL_PASSWORD: 'npm'
volumes:
- ./mysql:/var/lib/mysql
Hinweis: Stellen Sie sicher, dass Sie sichere Passwörter verwenden und die Umgebungsvariablen entsprechend anpassen.
Schritt 3: Erster Start und Login
Nach dem Start der Container können Sie die Admin-Oberfläche unter http://<Ihre-IP>:81
erreichen. Verwenden Sie die Standard-Anmeldedaten:
- E-Mail:
admin@example.com
- Passwort:
changeme
Ändern Sie nach dem ersten Login unbedingt das Passwort und die E-Mail-Adresse.
Betrieb auf einem Raspberry Pi
Der Nginx Proxy Manager unterstützt auch ARM-Architekturen und kann daher problemlos auf einem Raspberry Pi betrieben werden. Achten Sie darauf, dass Sie Docker und Docker Compose auf Ihrem Raspberry Pi installieren. Bei Problemen mit der MariaDB auf ARM-Geräten können Sie alternativ das Image yobasystems/alpine-mariadb:latest
verwenden.
DNS-Einrichtung und Portweiterleitung
Um Ihren Reverse Proxy aus dem Internet erreichbar zu machen, müssen Sie Ihren DNS entsprechend konfigurieren. Angenommen, Sie besitzen die Domain familienname.de
, dann könnten Sie Subdomains wie *.zuhause.familienname.de
einrichten, die auf Ihre öffentliche IP-Adresse zeigen.
Portweiterleitung in der Fritzbox
In Deutschland ist die Fritzbox ein weit verbreiteter Router. Hier können Sie unter Internet > Freigaben > Portfreigaben die Ports 80 (HTTP) und 443 (HTTPS) per TCP auf die interne IP-Adresse des Hosts weiterleiten, auf dem der Nginx Proxy Manager läuft. Dadurch werden Anfragen aus dem Internet an Ihren Reverse Proxy weitergeleitet.
Schritte zur Portweiterleitung:
- Anmelden: Melden Sie sich an der Weboberfläche Ihrer Fritzbox an.
- Navigieren: Gehen Sie zu Internet > Freigaben > Portfreigaben.
- Neue Freigabe: Klicken Sie auf Gerät für Freigaben hinzufügen oder Neue Portfreigabe.
- Einstellungen: Wählen Sie das Gerät (IP-Adresse) aus, auf dem der Nginx Proxy Manager läuft.
- Ports festlegen: Legen Sie die Ports 80 und 443 für TCP fest.
- Speichern: Speichern Sie die Einstellungen.
DynDNS-Konfiguration
Falls Sie keine statische IP-Adresse haben, können Sie DynDNS-Dienste nutzen, um einen konstanten Domainnamen auf Ihre wechselnde IP-Adresse zeigen zu lassen. Dienste wie DuckDNS oder No-IP bieten kostenlose Lösungen an. Die Fritzbox unterstützt viele dieser Dienste nativ und aktualisiert automatisch Ihre IP-Adresse beim DynDNS-Anbieter.
Einrichten von Proxy Hosts im Nginx Proxy Manager
Mit der Admin-Oberfläche des Nginx Proxy Managers können Sie nun Proxy Hosts einrichten, die auf Ihre internen Dienste verweisen.
Schritte zum Hinzufügen eines Proxy Hosts:
- Anmeldung: Melden Sie sich an der Admin-Oberfläche unter
http://<Ihre-IP>:81
an. - Proxy Host hinzufügen: Gehen Sie zu Proxy Hosts und klicken Sie auf Add Proxy Host.
- Domainnamen eingeben: Geben Sie den Domainnamen ein, unter dem Ihr Dienst erreichbar sein soll (z.B.
nas.zuhause.familienname.de
). - Ziel festlegen: Geben Sie die interne IP-Adresse und den Port Ihres Dienstes ein.
- SSL einrichten: Wechseln Sie zum Reiter SSL, wählen Sie Request a new SSL Certificate und aktivieren Sie Force SSL sowie HTTP/2 Support.
- Let’s Encrypt: Akzeptieren Sie die Bedingungen von Let’s Encrypt und geben Sie Ihre E-Mail-Adresse ein.
- Speichern: Klicken Sie auf Save.
Der Nginx Proxy Manager wird nun automatisch ein SSL-Zertifikat von Let’s Encrypt beziehen und die Anfragen entsprechend weiterleiten.
Praktisches Beispiel: Zugriff auf einen internen Dienst
Nehmen wir an, Sie möchten auf Ihren Bitwarden Passwort-Manager oder einen Proxmox Server zugreifen.
Beispiel für Bitwarden:
- Domainname:
bitwarden.zuhause.familienname.de
- Interne IP-Adresse:
192.168.0.54
- Port:
1234
(beispielsweise)
Richten Sie den Proxy Host wie oben beschrieben ein, und schon können Sie von außen sicher auf Ihren Bitwarden-Server zugreifen.
Beispiel für Proxmox:
- Domainname:
proxmox.zuhause.familienname.de
- Interne IP-Adresse:
192.168.0.254
- Port:
8006
Auch hier richten Sie den Proxy Host entsprechend ein und aktivieren SSL.
Sicherheitshinweise
- SSL erzwingen: Stellen Sie sicher, dass Sie Force SSL aktiviert haben, um unverschlüsselte Verbindungen zu vermeiden.
- Aktuelle Zertifikate: Der Nginx Proxy Manager erneuert automatisch Ihre SSL-Zertifikate. Überwachen Sie dennoch regelmäßig den Status.
- Zugangsdaten schützen: Ändern Sie die Standard-Anmeldedaten und verwenden Sie sichere Passwörter.
Fazit
Mit dem Nginx Proxy Manager können Sie schnell und unkompliziert einen Reverse Proxy in Ihrem Heimnetzwerk einrichten. Dies ermöglicht Ihnen den sicheren Zugriff auf verschiedene Dienste und Geräte, ohne auf deren oft unsichere oder komplizierte Cloud-Lösungen angewiesen zu sein.
Weiterführendes Video
Für eine detaillierte Schritt-für-Schritt-Anleitung können Sie sich dieses Video ansehen: