Änderungsstand: 2021-08-29
Ja, man kann den Nginx Proxy Manager (NPM) auch auf dem Cluster Swarm legen. Eine super Symbiose, wie das mit Traefik der Fall wäre, ist hier allerdings nicht gegeben. Ich verwende folgendes Szenario nicht! Bei mir läuft der NPM auf einem eigenständigen Gerät. Natürlich testete ich auch diese Vorgehensweise, um sicher zu sein, dass alles funktioniert.
Nginx Proxy Manager, kurz NPM, als Anwendung im Swarm Mode. Meine angelegte NFS-Freigabe für das Datenverzeichnis ist /mnt/data/… Im Gegensatz zur normalen Docker-Compose, kann Portainer bzw. der zu erstellende Service keine Verzeichnisse selbst anlegen. In diesem Fall lege ich die benötigten Verzeichnisse selbst an.
Nicht vergessen, die Pfade, am ersten Manager, anzulegen!
sudo mkdir -p /mnt/data/npm && sudo mkdir -p /mnt/data/npm-letsencrypt && sudo mkdir -p /mnt/data/npm-mysql
Im Portainer:
- Stacks
- + Add stack
- Name: npm
- Web editor: Folgenden Code eingeben:
- + Add stack
version: "3.2"
services:
npm:
image: 'jc21/nginx-proxy-manager:latest'
ports:
- '80:80'
- '81:81'
- '443:443'
networks:
- proxy_network
volumes:
- /mnt/data/npm:/data
- /mnt/data/npm-letsencrypt:/etc/letsencrypt
labels:
- NGINX_PROXY_SWARM_CONTAINER=true
deploy:
mode: replicated
replicas: 1
placement:
constraints: [node.role == manager]
networks:
proxy_network:
driver: overlay
attachable: true
Actions: Deploy the stack
Nginx Proxy Manager wird installiert und gestartet. Das dauert ’ne Weile, bis alles eingerichtet wurde. Im Browser dann die Server-IP:81 eingeben.
Erster Login:
Email address: admin@example.com
Password: changeme
Erscheint die Fehlermeldung „Bad Gateway“, einfach noch etwas warten und dann erneut einloggen.
Jetzt noch die Anmeldedaten ändern und „NPM“ ist einsatzbereit.
Info: Wurde keine Portfreigabe des Routers für die Ports 80 und 443 zu dem Gerät mit dem NPM gesetzt, wird NPM zwar zu starten sein, aber keine Zertifikate laden können!
Um nun einen Dienst von Außen zu starten, gebe ich ausschließlich, für den jeweiligen Dienst, die IP-Adresse des ersten Managers an. Egal, ob der Dienst nun auf alle Nodes oder nur auf Manager-Nodes oder nur auf Worker-Nodes ausgerollt wurde. Der Manager leitet die Anfrage, zu dem gerade verwendeten Node, weiter. Dafür ist der schließlich da 🙂 .
Wie man nun Nginx Proxy Manager verwendet, zeige ich in den jeweiligen Guides für WordPress und Nextcloud.
Noch einmal zur Info: NPM funktioniert nur richtig, wenn die Portfreigaben im Router zum Gerät, auf welchem sich NPM befindet, gesetzt wurden, und, wenn man keine feste IP-Adresse inkl. Domain hat, ein DynDNS-Dienst eingerichtet wurde. Für meine Beispiele stelle ich meist DuckDNS vor.
Quelle:
https://nginxproxymanager.com/guide/#project-goal
https://nginxproxymanager.com/advanced-config/#best-practice-use-a-docker-network