Nginx Proxy Manager unter Ubuntu Server mit Docker installieren

Der Nginx Proxy Manager macht mehrere Dienste hinter einer einzigen IP-Adresse erreichbar und nimmt dir gleichzeitig die lästige Zertifikatsverwaltung ab. Statt für jeden Webserver einen eigenen Port zu öffnen, verteilt der Reverse Proxy eingehende Anfragen anhand des Hostnamens auf die passenden Container oder Backends – und stellt auf Wunsch mit einem Klick kostenlose Let’s-Encrypt-Zertifikate aus. In dieser Anleitung installierst du den Nginx Proxy Manager auf einem Ubuntu Server als Docker-Container, wahlweise mit SQLite oder MariaDB als Datenbank.

Nginx Proxy Manager Weboberfläche

Was ist der Nginx Proxy Manager?

Der Nginx Proxy Manager (oft nur NPM abgekürzt) ist eine grafische Oberfläche für den bekannten Webserver Nginx im Reverse-Proxy-Betrieb. Er läuft als Docker-Container und bringt eine übersichtliche Weboberfläche mit, über die du sogenannte Proxy Hosts anlegst. Jeder Proxy Host verweist eine Domain oder Subdomain auf ein internes Ziel – etwa http://192.168.1.50:8080 – und kann automatisch per HTTPS abgesichert werden.

Der große Vorteil: Du musst keine Nginx-Konfigurationsdateien mehr von Hand schreiben. Ports 80 und 443 landen zentral beim Proxy Manager, der die Verteilung übernimmt. So betreibst du beliebig viele Dienste unter eigenen (Sub-)Domains, ohne dass sich die Anwendungen gegenseitig in die Quere kommen.

Voraussetzungen für die Installation

Für den Nginx Proxy Manager brauchst du einen laufenden Ubuntu Server sowie die installierte Docker-Engine samt Docker Compose. Wie du Docker unter Ubuntu einrichtest, zeigt eine separate Anleitung – hier gehen wir davon aus, dass Docker bereits einsatzbereit ist. Sinnvoll ist außerdem eine feste lokale IP-Adresse für den Server, damit deine Portfreigaben und DNS-Einträge stabil bleiben.

  • Ubuntu Server: aktuelle LTS-Version, per SSH erreichbar.
  • Docker-Engine & Docker Compose: installiert und mit docker --version geprüft.
  • Offene Ports: 80 und 443 für den Webverkehr, 81 für die Administrationsoberfläche.
  • Feste IP oder DNS-Einträge: damit deine Domains zuverlässig auf den Proxy zeigen.

Verzeichnis für den Nginx Proxy Manager anlegen

Zunächst legst du ein eigenes Verzeichnis für den Container an und wechselst hinein. Dort landen später die Compose-Datei sowie die persistenten Daten:

mkdir npm
cd npm

Grundsätzlich gibt es zwei Varianten, den Nginx Proxy Manager zu betreiben: mit einem separaten MariaDB-Container als Datenbank oder mit dem eingebauten SQLite. Für die meisten Setups reicht SQLite völlig aus, denn der Proxy Manager stellt praktisch keine nennenswerten Ansprüche an die Datenbankleistung. MariaDB lohnt sich erst bei sehr großen Installationen.

Nginx Proxy Manager mit SQLite als Docker Compose installieren

Im eben erstellten Verzeichnis legst du nun die Compose-Datei an. Öffne sie mit einem Editor deiner Wahl, zum Beispiel nano:

nano docker-compose.yaml

Füge anschließend den folgenden Inhalt ein:

version: "3"
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # Public HTTP Port:
      - '80:80'
      # Public HTTPS Port:
      - '443:443'
      # Admin Web Port:
      - '81:81'
      # Add any other Stream port you want to expose
      # - '21:21' # FTP
    environment:
      # These are the settings to access your db
      # If you would rather use Sqlite uncomment this
      # and remove all DB_MYSQL_* lines above
      DB_SQLITE_FILE: "/data/database.sqlite"
      # 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:
      - ./data/mysql:/var/lib/mysql

Mit STRG + X, anschließend Y und Enter speicherst du die Datei. Um die Container im Hintergrund zu starten, führst du diesen Befehl aus:

docker-compose up -d

Docker lädt jetzt die benötigten Images herunter und startet den Nginx Proxy Manager. Nach wenigen Augenblicken ist die Weboberfläche erreichbar.

Nginx Proxy Manager mit MariaDB als Docker Compose installieren

Wenn du stattdessen einen dedizierten MariaDB-Container als Datenbank nutzen möchtest, erstellst du die Compose-Datei ebenfalls im Projektverzeichnis:

nano docker-compose.yaml

Trage nun folgende Konfiguration ein. Wichtig: Ändere die Standard-Passwörter unbedingt auf sichere, individuelle Werte, bevor du den Stack startest.

version: "3"
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # Public HTTP Port:
      - '80:80'
      # Public HTTPS Port:
      - '443:443'
      # Admin Web Port:
      - '81:81'
    environment:
      # These are the settings to access your db
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "changeuser"
      DB_MYSQL_PASSWORD: "changepass"
      DB_MYSQL_NAME: "npm"
      # If you would rather use Sqlite uncomment this
      # and remove all DB_MYSQL_* lines above
      # DB_SQLITE_FILE: "/data/database.sqlite"
      # Uncomment this if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'
    volumes:
      - ./data/nginx-proxy-manager:/data
      - ./letsencrypt:/etc/letsencrypt
    depends_on:
      - db
  db:
    image: yobasystems/alpine-mariadb:latest
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: "changeme"
      MYSQL_DATABASE: "npm"
      MYSQL_USER: "changeuser"
      MYSQL_PASSWORD: "changepass"
    volumes:
      - ./data/mariadb:/var/lib/mysql

Auch hier speicherst du mit STRG + X und startest die Container mit dem gewohnten Befehl:

docker-compose up -d

Erste Anmeldung an der Weboberfläche

Sobald die Container laufen, erreichst du die Administrationsoberfläche unter der IP-Adresse deines Servers auf Port 81, also zum Beispiel http://192.168.1.50:81. Melde dich beim ersten Start mit den folgenden Standard-Zugangsdaten an:

Email:    [email protected]
Password: changeme
Anmeldung am Nginx Proxy Manager

Direkt nach dem ersten Login fordert dich der Nginx Proxy Manager auf, E-Mail-Adresse und Passwort zu ändern. Nimm dir dafür einen Moment Zeit – die Standard-Zugangsdaten sind öffentlich bekannt und sollten niemals im Produktivbetrieb bestehen bleiben.

DNS richtig einrichten für den Reverse Proxy

Damit deine Domains beim Nginx Proxy Manager ankommen, müssen die passenden DNS-Einträge auf die öffentliche oder lokale IP deines Servers zeigen. Im Heimnetz übernimmt das häufig der Router oder ein eigener DNS-Server. Betreibst du UniFi-Hardware, hilft dir unsere Anleitung, wie du den DNS-Server bei UniFi-Geräten änderst. Nutzt du einen Synology-Router, zeigt dir der Beitrag zum DNS-Server am Synology-Router, wie du die Namensauflösung anpasst.

Für Zertifikate ist wichtig: Let’s Encrypt prüft die Erreichbarkeit deiner Domain über Port 80. Entweder gibst du diesen Port im Router frei (HTTP-Challenge) oder du nutzt im Nginx Proxy Manager eine DNS-Challenge über deinen Domain-Anbieter – das funktioniert auch, wenn dein Server gar nicht direkt aus dem Internet erreichbar ist.

Fazit

Der Nginx Proxy Manager ist eine der komfortabelsten Möglichkeiten, mehrere Dienste hinter einer IP-Adresse zu bündeln und mit HTTPS abzusichern. Die Installation als Docker-Container auf einem Ubuntu Server ist in wenigen Minuten erledigt: Verzeichnis anlegen, Compose-Datei mit SQLite oder MariaDB erstellen, Stack starten und über Port 81 anmelden. Für die meisten Heim- und Kleinserver ist die SQLite-Variante die einfachste und ressourcenschonendste Wahl. Ist der Proxy einmal eingerichtet, legst du neue Dienste bequem über die Weboberfläche an – ganz ohne manuelle Nginx-Konfiguration.

Häufige Fragen (FAQ)

Sollte ich den Nginx Proxy Manager mit SQLite oder MariaDB betreiben?

Für nahezu alle privaten und kleinen Setups reicht SQLite. Der Proxy Manager benötigt kaum Datenbankleistung, und du sparst dir einen zusätzlichen Container. MariaDB ist nur bei sehr großen Installationen mit vielen Hosts sinnvoll.

Welche Ports muss der Nginx Proxy Manager erreichen können?

Der Container nutzt Port 80 für HTTP, Port 443 für HTTPS und Port 81 für die Administrationsoberfläche. Für Let’s-Encrypt-Zertifikate per HTTP-Challenge muss Port 80 aus dem Internet erreichbar sein.

Wie lauten die Standard-Zugangsdaten?

Beim ersten Start meldest du dich mit der E-Mail-Adresse [email protected] und dem Passwort changeme an. Der Nginx Proxy Manager verlangt danach sofort, diese Zugangsdaten zu ändern – das solltest du unbedingt tun.

Kann ich mit dem Nginx Proxy Manager kostenlose SSL-Zertifikate erstellen?

Ja. Über die Weboberfläche stellst du mit wenigen Klicks kostenlose Let’s-Encrypt-Zertifikate aus und lässt sie automatisch verlängern. Wahlweise per HTTP-Challenge oder über eine DNS-Challenge deines Domain-Anbieters.

Muss mein Server aus dem Internet erreichbar sein?

Nein. Du kannst den Nginx Proxy Manager auch rein im lokalen Netz betreiben. Zertifikate lassen sich dann über eine DNS-Challenge ausstellen, sodass keine eingehende Portfreigabe nötig ist.

Schreibe einen Kommentar

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

Nach oben scrollen