You are currently viewing Domain und SSL Zertifikat für Nginx Proxy Manager & Portainer einrichten

Domain und SSL Zertifikat für Nginx Proxy Manager & Portainer einrichten

In diesem Beitrag werde ich zeigen, wie ich jeweils eine Domain mit Zertifikat für den Nginx Proxy Manager und meine Portainer Instanz im Nginx Proxy Manager hinzufüge.

Nginx Proxy Manager aufrufen

Dazu navigiere ich zum Nginx Proxy Manager.

http://<Meine Server IP>:81/

Ich melde mich an und werde einen ersten Proxy Host hinzufügen.

Nginx Proxy Manager Proxy Host hinzufügen
Im Nginx Proxy Manager kann ich für jeden Service eine Domain mit Hilfe eines Proxy Hosts einrichten.

Ports in der Firewall freigeben

Falls das noch nicht geschehen ist, müssen die Ports für http und https auf dem Server freigeschaltet werden. In meinem Fall habe ich eine Firewall ufw aktiv. Die Einstellungen nehme ich über SSH vor. Je nach Konfiguration kann es sein, dass Docker die Portfreigaben selbst organisiert.

sudo ufw allow http
sudo ufw allow https
sudo ufw reload

Proxy Host für Nginx Proxy Manager hinzufügen

Um eine Domain hinzufügen zu können, muss ich bei einem Anbieter meiner Wahl eine Domain gekauft haben. Diese Domain oder eine Subdomain meiner Wahl muss einen DNS-Eintrag erhalten. Der A-Record muss auf die IPv4 Adresse meines Servers mit dem Nginx Proxy Manager zeigen. Falls der Server eine IPv6 Adresse zusätzlich besitzt, muss der AAAA-Record mit der IPv6 Adresse gesetzt werden.

Hier zeige ich jetzt noch die Einstellungen für den Proxy Host auf meinen Nginx Proxy Manager. Ich gebe meine Domain ein und verweise auf den Container Namen. Als Port gebe ich den Port 81 ein, dieser verweist auf die Benutzeroberfläche. Die Container Namen finde ich in meiner Portainer Instanz unter den Containern.

Portainer Container Liste mit Container Namen
In Portainer finde ich die Liste mit den Namen der Container.

Die Einstellungen sehen bei mir wie folgt aus:

Nginx Proxy Manager Host hinzufügen
Die Konfiguration des Proxy Hosts verweist auf die Nginx Proxy Manager Oberfläche.

Unter dem Punkt SSL nehme ich noch die Einstellungen vor, um ein SSL Zertifikat von Let’s Encrypt zu erhalten.

Zertifikat im Nginx Proxy Manager
Die Einstellungen für das SSL Zertifikat mit Let’s Encrypt für mein Nginx Proxy Manager.

Den Eintrag sehe ich jetzt in der Proxy Hosts Liste.

Nginx Proxy Manager Proxy Hosts Übersicht
Nach dem Hinzufügen sehe ich den Proxy Host in der Übersicht.

Wenn ich meine Domain nun aufrufe, komme ich zum Login Fenster des Managers und kann mich anmelden und kann über eine verschlüsselte Verbindung weiter arbeiten.

Proxy Host für Portainer

Für die UI von Portainer mache ich das selbe Spiel im Nginx Proxy Manager nochmal. Dazu brauche ich eine weitere Domain oder Subdomain und verweise aber auf den Port 9000. Ein SSL Zertifikat lasse ich auch wie zuvor erstellen.

Nginx Proxy Manager Proxy Host für Portainer
Die Einstellungen für den Proxy Host verweisen auf den Portainer Docker-Container.

Ein kurzer check, indem ich im Browser die Domain aufrufe, zeigt mir einen 502 Fehler.

Bad Gateway Fehler
Der Check zeigt einen 502 Fehler im Browser an.

In den letzten Artikeln habe ich gezeigt, wie ich ein Netzwerk einrichte und dem Nginx Proxy Manager hinzufüge. Jeder Docker-Container, der über den Nginx Proxy Manager angesprochen werden soll, muss dem selben Netzwerk angehören. Ich hatte dazu das Docker-Netzwerk web angelegt.

Netzwerk Übersicht in Portainer
Hier sehe ich die Netzwerke in meiner Portainer-Umgebung.

Jetzt muss ich den Portainer Docker-Container dem Netzwerk web hinzufügen. Dazu gehe ich in meiner Docker-Container Liste auf den Portainer. Unten auf der Seite finde ich die Einstellungen zum Netzwerk. Da kann ich jetzt bequem das Netzwerk web hinzufügen.

Docker-Container Netzwerk hinzufügen
Dem Docker-Container füge ich das Netzwerk web hinzu.

Wenn ich jetzt die Domain für Portainer aufrufe ist die Fehlermeldung verschwunden und ich kann über eine verschlüsselte Verbindung mit Hilfe einer Domain weiter Docker-Container konfigurieren.

Nginx Proxy Manager Portfreigabe deaktivieren

Da die Portfreigabe von Docker übernommen wird und es sich nach aktuellem Stand nicht so einfach unterbinden lässt, kann ich dennoch verhindern, dass der Port 81 öffentlich verfügbar ist. Für den Portainer auf dem Port 9000 lässt sich das nicht so einfach über die Oberfläche verändern. Diesen Port werde ich jetzt auch nicht beachten.

Um den Port 81 im Nginx Proxy Manager nur lokal verfügbar zu machen, gehe ich in die Einstellungen des Docker-Containers. Dazu wähle ich den Docker-Container nginx-proxy-manager in der Container Liste aus. Oben klicke ich auf den Button Duplicate/Edit und kann jetzt die Einstellung für den Port 81 ändern. Hier verwende ich für den Host 127.0.0.1:81, damit ist der Port 81 nur auf der lokalen Maschine verfügbar und nicht mehr über das Internet.

Docker-Container Ports bearbeiten
Der Port 81 wird nur lokal zur Verfügung gestellt.

Ich baue den Container neu und wähle bei der Warnmeldung, dass der Container ersetzt (Replace) werden soll. Wenn noch eine Firewall wie ufw im Einsatz ist, sollte hier auch der Port gelöscht werden.

Sowohl der Nginx Proxy Manager, als auch Portainer sind jeweils über eine Domain erreichbar und verschlüsselt.

Links

Schreibe einen Kommentar