Sicherer Fernzugriff auf Heimnetzwerk-Dienste mit Nginx Proxy Manager

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.
(c) https://www.youtube.com/watch?v=B40TQcOzsNU

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:

  1. Anmelden: Melden Sie sich an der Weboberfläche Ihrer Fritzbox an.
  2. Navigieren: Gehen Sie zu Internet > Freigaben > Portfreigaben.
  3. Neue Freigabe: Klicken Sie auf Gerät für Freigaben hinzufügen oder Neue Portfreigabe.
  4. Einstellungen: Wählen Sie das Gerät (IP-Adresse) aus, auf dem der Nginx Proxy Manager läuft.
  5. Ports festlegen: Legen Sie die Ports 80 und 443 für TCP fest.
  6. 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:

  1. Anmeldung: Melden Sie sich an der Admin-Oberfläche unter http://<Ihre-IP>:81 an.
  2. Proxy Host hinzufügen: Gehen Sie zu Proxy Hosts und klicken Sie auf Add Proxy Host.
  3. Domainnamen eingeben: Geben Sie den Domainnamen ein, unter dem Ihr Dienst erreichbar sein soll (z.B. nas.zuhause.familienname.de).
  4. Ziel festlegen: Geben Sie die interne IP-Adresse und den Port Ihres Dienstes ein.
  5. SSL einrichten: Wechseln Sie zum Reiter SSL, wählen Sie Request a new SSL Certificate und aktivieren Sie Force SSL sowie HTTP/2 Support.
  6. Let’s Encrypt: Akzeptieren Sie die Bedingungen von Let’s Encrypt und geben Sie Ihre E-Mail-Adresse ein.
  7. 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:

Über Danny Sotzny

Hallo, ich bin Danny Sotzny und bin Software- entwickler und Fotograf. Dabei beschäftige ich mich mit aktuellen Technologien und bekannten Problemen. Schwerpunkte setze ich bei der Webentwicklung (PHP/JS) und der Software- entwicklung mit .NET (C#). Der Blog dient für mich selbst als Gedächtnishilfe für typische und alltägliche Probleme, aber auch persönliche Erlebnisse werden veröffentlicht. Ich betreibe zusätzlich noch Foto-Sotzny.de für meine Fotografien und sotzny.net, was meine Webseite für die Softwareentwicklung ist.
Dieser Beitrag wurde unter Blogroll abgelegt und mit , , , , , , , , , , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.