Nginx Proxy Manager über Portainer installieren

  • Beitrags-Autor:
  • Beitrags-Kategorie:Server / Docker

Einleitung: Warum du den Nginx Proxy Manager verwenden solltest

Im heutigen digitalen Zeitalter gibt es viele Gründe, warum du einen Reverse-Proxy-Server benötigen könntest. Der Nginx Proxy Manager ist ein benutzerfreundliches Tool, mit dem du deine Webanwendungen und Dienste bequem verwalten und absichern kannst. Aber wofür genau wird der Proxy Manager eingesetzt? Hier sind einige Anwendungsfälle:

  1. Vereinfachung der Verwaltung mehrerer Webanwendungen: Wenn du mehrere Webanwendungen oder Dienste auf unterschiedlichen Ports oder sogar verschiedenen Servern betreibst, kann es schwierig sein, den Überblick zu behalten. Mit dem Nginx Proxy Manager kannst du alle Anwendungen und Dienste hinter einer einzigen IP-Adresse oder Domain verwalten und sie leichter zugänglich machen.

  2. SSL/TLS-Zertifikate: Der Nginx Proxy Manager ermöglicht es dir, kostenlose SSL/TLS-Zertifikate von Let’s Encrypt für deine Webanwendungen und Dienste zu generieren. So kannst du deine Domains einfach absichern und den Datenverkehr verschlüsseln, ohne für teure Zertifikate bezahlen zu müssen.

  3. Verstecken der internen Netzwerkstruktur: Indem du deine Webanwendungen und Dienste hinter einem Reverse-Proxy versteckst, kannst du ihre IP-Adressen und Ports vor neugierigen Blicken verbergen und deine internen Netzwerkstrukturen besser absichern.

In diesem Blogbeitrag zeigen wir dir, wie du den Nginx Proxy Manager über Portainer mit einer YAML-Datei installierst.

Bevor wir mit der Installation des Nginx Proxy Managers beginnen, solltest du sicherstellen, dass Docker, Docker Compose und Portainer auf deinem System installiert sind. Außerdem empfehlen wir, deinen Server mit Fail2ban abzusichern. Wir haben bereits Blogbeiträge, die dich durch diese Prozesse führen:

Sobald du diese Voraussetzungen erfüllt hast, kannst du mit der Installation des Nginx Proxy Managers fortfahren.

Schritt 1: Überprüfen der Installation von Docker, Docker Compose und Portainer

Bevor du beginnen kannst, stelle sicher, dass du Docker, Docker Compose und Portainer bereits auf deinem System installiert und konfiguriert hast. Wenn nicht, folge den oben verlinkten Blogbeiträgen, um diese Komponenten einzurichten.

Schritt 2: Portainer öffnen

Öffne Portainer in deinem Webbrowser, indem du die IP-Adresse deines Servers oder die Domain, unter der Portainer läuft, eingibst. Melde dich mit deinem Benutzernamen und Passwort an.

Schritt 3: YAML-Datei direkt in Portainer erstellen

Anstatt die YAML-Datei auf deinem Computer zu erstellen, kannst du sie direkt im Portainer-Editor erstellen. Befolge dazu die folgenden Schritte:

  1. Gehe in Portainer zu „Stacks“ und klicke auf „+ Add stack“.
  2. Gib deinem Stack einen Namen, zum Beispiel „nginx-proxy-manager“.
  3. Kopiere den folgenden YAML-Code:
version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # These ports are in format <host-port>:<container-port>
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
      # Add any other Stream port you want to expose
      # - '21:21' # FTP
    environment:
      # Mysql/Maria connection parameters:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
      # Uncomment this if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'
    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

volumes:
  data:
  letsencrypt:
  mysql:
Portainer - Nginx Proxy Manager yml-Datei

Es ist wichtig, dass du die Standardpasswörter in der YAML-Datei änderst, bevor du den Stack bereitstellst, um die Sicherheit deiner Datenbank zu gewährleisten. Anstatt die voreingestellten Passwörter „npm“ zu verwenden, solltest du sie durch sichere und eindeutige Passwörter ersetzen. Dies betrifft insbesondere die folgenden Umgebungsvariablen:

  • DB_MYSQL_PASSWORD: Passwort für den Datenbank-Benutzer „npm“.
  • MYSQL_ROOT_PASSWORD: Passwort für den MySQL-Root-Benutzer.
  • MYSQL_PASSWORD: Passwort für den zu erstellenden MySQL-Benutzer „npm“.

Stelle sicher, dass du sowohl im app– als auch im db-Dienst dieselben Passwörter verwendest, um die korrekte Verbindung zwischen den beiden Diensten zu gewährleisten. Verwende starke Passwörter, die eine Kombination aus Groß- und Kleinbuchstaben, Zahlen und Sonderzeichen enthalten, um die Sicherheit deiner Datenbank zu erhöhen.

Die Datenbank wird für den Nginx Proxy Manager benötigt, um Konfigurationsdaten, Benutzerkonten und Informationen über die erstellten Proxy-Einstellungen zu speichern und zu verwalten. Sie ermöglicht es dem Nginx Proxy Manager, alle Einstellungen und Daten dauerhaft und effizient zu speichern und bei Bedarf abzurufen.

Diese YAML-Datei definiert einen Docker-Compose-Stack, der den Nginx Proxy Manager und eine MariaDB-Datenbank als Dienste einrichtet. Die wichtigsten Bestandteile der Datei sind die Weiterleitung der Ports (HTTP, HTTPS und Admin-Web), die Umgebungsvariablen für die Datenbankverbindung und die Volumes, die die Daten und Let’s Encrypt-Zertifikate speichern. Der Nginx Proxy Manager-Dienst hängt von dem MariaDB-Dienst ab, was durch das depends_on-Feld angezeigt wird.

Schritt 4: Nginx Proxy Manager deployen

Klicke auf „Deploy the stack“ am unteren Rand der Seite.

Portainer erstellt nun die notwendigen Container für den Nginx Proxy Manager und die MariaDB-Datenbank anhand der YAML-Datei. Sobald der Stack bereitgestellt ist, kannst du den Nginx Proxy Manager über den Admin-Web-Port (in der YAML-Datei auf Port 81 gesetzt) aufrufen.

Wenn die Bereitstellung erfolgreich abgeschlossen wurde, wirst du in der nächsten Ansicht die Übersicht aller Stacks sehen:

Nachdem du auf den Stack „nginx-proxy-manager“ geklickt hast, solltest du eine Übersicht der beiden zugehörigen Container sowie deren Status angezeigt bekommen:

Portainer-Uebersicht-Nginx-Container

Schritt 5: Nginx Proxy Manager verwenden

Sobald der Stack erfolgreich bereitgestellt wurde, kannst du den Nginx Proxy Manager öffnen, indem du in deinem Webbrowser die IP-Adresse deines Servers oder die Domain mit dem Port 81 aufrufst, zum Beispiel: http://your-server-ip:81. Melde dich mit den Standard-Anmeldedaten an (E-Mail: admin@example.com, Passwort: changeme) und ändere das Passwort.

Jetzt kannst du den Nginx Proxy Manager verwenden, um deine Webanwendungen und Dienste einfach hinter einem Reverse-Proxy zu verwalten. Du kannst SSL-Zertifikate von Let’s Encrypt erstellen und Proxy-Hosts, Streams und Redirections konfigurieren.

Nginx Proxy Manager aktualisieren

Um die Funktion „Recreate“ in Portainer zu nutzen, um den Nginx Proxy Manager zu aktualisieren, führe die folgenden Schritte aus:

  1. Öffne Portainer in deinem Webbrowser und melde dich an.

  2. Klicke auf „Containers“ im linken Menü.

  3. Finde den Container des Nginx Proxy Managers in der Liste (der Name sollte in etwa „nginx-proxy-manager_app_1“ lauten).

  4. Markiere das Kästchen links neben dem Container-Namen, um den Container auszuwählen.

  5. Klicke auf die Schaltfläche „Recreate“ oben auf der Seite.

  6. Im Popup-Fenster, das erscheint, aktiviere die Option „Pull the latest image“, um sicherzustellen, dass das neueste Docker-Image heruntergeladen wird.

  7. Klicke auf „Recreate“ im Popup-Fenster, um den Prozess zu starten.

Portainer wird nun den ausgewählten Container mit dem neuesten Docker-Image neu erstellen. Beachte, dass während des Update-Prozesses der Dienst kurzzeitig nicht verfügbar sein könnte.

Führe diesen Vorgang auch für den MariaDB-Container durch, falls auch dieses Image aktualisiert werden soll. Der Container-Name sollte in etwa „nginx-proxy-manager_db_1“ lauten.

Nachdem beide Container erfolgreich neu erstellt wurden, überprüfe den Status der Container und stelle sicher, dass sie ordnungsgemäß ausgeführt werden.