_Swarm Nginx Proxy Manager

Ä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:
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

Erstelle eine Website wie diese mit WordPress.com
Jetzt starten