Nginx Proxy Manager ganz einfach einrichten | Docker Container & andere Dienste über SSL erreichen

Mit dem richtigem Setup kann man Docker Container und andere Dienste ganz einfach über seine Domain und per SSL erreichen, das schöne dabei: Sofern man die Docker Container richtig konfiguriert hat man keine öffentlichen Ports. Falls du aber trotzdem für verschiedene Docker Container offene Ports brauchst gibt es auch verschiedene Möglichkeiten.

https://youtu.be/DI-8b5cSTyo

Vorraussetzungen

  • Docker Server; in dieser Anleitung wird Portainer genutzt!
  • Server mit öffentlicher iPv4 Adresse

Kapitel im Video

00:00 Intro

00:44 Nginx Proxy Manager installieren

02:01 Einführung in Nginx Proxy

04:00 DNS Eintrag für Proxy Service erstellen

04:50 SSL Zertifikat erstellen

05:19 Docker Container im Proxy Netzwerk erstellen

06:05 Container im Proxy hinzufügen

07:13 Firewall Einstellungen für öffentliche Ports

10:02 Ports durchgeben

10:57 Dienste aus anderen Netzwerken über den Proxy leiten

11:54 Outro

Nginx Proxy Manager installieren

Für den Nginx Proxy brauchst du diese Compose Datei, die 2 Container und ein Docker Netzwerk, die du in Portainer als Stack hinzufügst.

Die Compose Datei:

version: "3"
services:
  server:
    image: docker.io/gitea/gitea:latest
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    volumes:
      - ./gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - /home/bruno/gitea-deploy:/deploy-gitea

    networks:
      - reverse-proxy

networks:
  reverse-proxy:
    external: true

Diesen Stack musst du dann nur doch erstellen!

Nginx einrichten

Dafür gehst du auf http://IP-Adresse:82

Die standard-Logindaten sind:

Username: admin@example.com

Passwort: changeme

Diese musst du nach dem ersten Login ändern!

Sofern du auf dem Dashboard landesst, kannst du zum nächsten Schritt gehen!

DNS Eintrag erstellen

Jetzt musst du im DNS Center deiner Domain einen A und AAA Record erstellen, beide sollten auf deinen Docker Host leiten! Ich habe es für dieses Tutorial mit https://youtube.technikfreaksyt.com gemacht!

SSL Zertifikat erstellen

Um zu diesem Menü zu kommen gehst du oben auf SSL und dann auf Add SSL Certificate, dort nimmst du dann LetsEncryot

Jetzt einfach bei Domain Name die Domain, cie du im DNS erstellt hast dort eingeben und dann auf „Test Server Rechability“ drücken!

Sofern eine Meldung mit grünem Hintergrund kommt kannst du die Terms of ervice von LetsEncrypt akzeptieren und das Zertifikat erstellen!

Docker Container über den Proxy laufen lassen

Dafür nehmen wir jetzt testweise einen Gitea Container, der keine öffentlichen Ports hat und im reverse-proxy Netzwerk vom Proxy ist. Diese Compose fügtst du wieder in Portainer als Stack hinzu(wie bei Nginx)

Die Compose Datei:

version: "3"
services:
  server:
    image: docker.io/gitea/gitea:latest
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    volumes:
      - ./gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - /home/bruno/gitea-deploy:/deploy-gitea

    networks:
      - reverse-proxy

networks:
  reverse-proxy:
    external: true

Wenn du den Container erstellt hast, gehst du in Portainer auf Networks und wählst das „reverse-proxy“ Netzwerk aus!

Hier ist die IP in dem Fall 172.18.0.4, die merken wir uns jetzt!

Dienst zum Proxy hinzufügen

Jetzt erstellst du einen Proxy Host und füllst die Felder aus

  • Bei Domain Names die Domain
  • Bei Scheme bleibt https
  • Bei der IP kommt die IP vom Container
  • Bei Port 3000, da das der Gitea Port ist
  • Die Optionen können alle gerne an!

Hier das Zertifikat auswählen und alle Optionen aktivieren!

Wenn du dann auf save gedrückt hast, sollte es funktionieren!

Ports werden benötigt?!

Sofern du einen Container hast, wie z.B. WordPress, der Ports benötigt und mit dem Proxy so nicht klar kommt, kannst du folgendermaßen machen:

Firewall offene Ports(TCP/UDP): 22 -> 8122

Firewall geschlosse Ports(TCP/UDP): 8123 ->10123

Ausnahme: Der Server selbst kann durch

Dadurch kann der Server auf die Ports zugreifen und du packst das Webinterface diese Dienste einfach auf die Ports, die für fremde blockiert werden!

Ports durchgeben:

Sofern du Ports durchgeben möchtest, fügst du sie wie beim FTP Beispiel in der Compose von Nginx hinzu(Da ist ein FTP Port kommentiert), das Format ist: HOST:CONTAINER der Container Port muss der Port vom Service sein, und der HOST Port, durch den das von Nginx geleitet wird!

Dafür gehst du im Nginx Dashboard auf Streams und erstellst einen neuen und wählst die Sachen passend aus!

Icoming Port = HOST Port

Forward Port = Container PORT

Forward Host = der Container/Server von dem der Port ist

Natürlich kannst du die Ports auch einfach im offenen Firewall Bereich haben!

Geräte in anderen Netzwerken

Sofern du einen Server Zuhause hast, der über den Proxy laufen soll, kannst du auf den Server & Docke r Host einfach Tailscale installieren und dann in Nginx die Tailscale IP auswählen!

Newsletter, um nichts mehr zu verpassen…


Beitrag veröffentlicht

in

von

Schlagwörter:

Kommentare