Zum Inhalt springen

NGINX Proxy und Proxy Manager mit Portainer unter Ubuntu 24.04

Um die Installationen im Docker von außen abzusichern und unsere Umgebung für mehrere Container unter einer IP_Adresse erreichbar zu machen, benötigen wir einen Proxy. Diese Funktion übernimmt in diesem Fall NGNIX als Proxy. Für eine Einfachere, grafische Bedienung über eine Ui nutzen wir nginx-proxy-manager. Dieser kann auch als Redirect- oder Streaming Host verwendet werden. 

Als erstes legen wir in Portainer ein Netzwerk mit dem Namen npm-network an 

 

 

Nur der Name des Netzwerks wird benötigt, alle anderen Einstellungen bleiben unverändert und abschließend gespeichert. 

Als nächstes wird unter Stacks ein neuer Stach hinzugefügt und als nginx-proxy-manager benannt  

 

und unter dem Punkt Web editor nachstehendes hineinkopiert 

services: 

 npm-app: 

   image: 'jc21/nginx-proxy-manager:latest' 

   container_name: npm-app 

   restart: unless-stopped 

   ports: 

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

     DB_MYSQL_HOST: "npm-db" 

     DB_MYSQL_PORT: 3306 

     DB_MYSQL_USER: "npm" 

     DB_MYSQL_PASSWORD: ${DB_MYSQL_PASSWORD} 

     DB_MYSQL_NAME: "npm" 

     # Uncomment the line below if IPv6 is not enabled on your host 

     # DISABLE_IPV6: 'true' 

   volumes: 

     - ./npm-data:/data:Z 

     - ./letsencrypt:/etc/letsencrypt:Z 

   depends_on: 

     - npm-db 

   networks: 

     - npm-network 

     - npm-internal 

  npm-db: 

   image: 'mariadb:latest' 

   container_name: npm-db 

   restart: unless-stopped 

   environment: 

     MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} 

     MYSQL_DATABASE: 'npm' 

     MYSQL_USER: 'npm' 

     MYSQL_PASSWORD: ${DB_MYSQL_PASSWORD} 

   volumes: 

     - ./npm-data/mysql:/var/lib/mysql:Z 

   networks: 

     - npm-internal 

 networks: 

 npm-internal: 

 npm-network: 

   external: true 

Da in diesem Skript zwei Umgebung Variablen gesetzt sind, MYSQL_ROOT_PASSWORD und DB_MYSQL_PASSWORD müssen diese noch eingetragen werden und die Entsprechenden Passwörter festgelegt werden 

Abschließend wird auf Deploy the Stack geklickt um den Container zu initialisieren und zu startet. 

Über https://IP-Adresse-des-Servers:81 wird auf die UI zugegriffen. Mögliche Zertifikatswarnungen müssen an dieser Stelle ignoriert werden. 

Nach dem log in mit den initialen Anmeldedaten admin@example.com und dem Passwort changeme muss dieses sofort auf der nächsten Seite geändert werden. 

Abschließend wird Portainer erreichbar gemacht. Hierzu wird unter Host – Neuer Proxy Host ein neuer Proxy Host hinzugefügt und wie dargestellt ausgefüllt 

 

Hierbei ist darauf zu achten, dass der angegebene Domain Name im DNS entsprechend mit den A und AAA Record eingetragen ist und auf die IP des Servers verweist sowie eine gültige E-Mail-Adresse für Let`s Encrypt eingetragen ist. 

 

Nach dem Speichern muss der Portainer Container noch mit dem npm Netz verbunden werden da dieser ansonsten nicht erreichbar ist. Hierzu wird unter Container der Container portainer geöffnet und am Ende der Seite das npm-network mit Join Network hinzugefügt. 

 

Nun ist Portainer über https://portainer.example.com mit einem gültigen Zertifikat von Lets` Encrypt erreichbar. 

Ähnlich können andere Container über NGINX Proxy Manager erreichbar gemacht werden. 

 Viel Erfolg!

NGINX Proxy und Proxy Manager mit Portainer unter Ubuntu 24.04
Christian Meier 13. Januar 2025
Diesen Beitrag teilen
Stichwörter
Archiv
Anmelden , um einen Kommentar zu hinterlassen