05.03.2022 — 13:00 Uhr | Geschätzte Lesedauer: 5 Minuten

Einleitung

Im letzten Artikel habe ich dir gezeigt, wie du Docker unter Ubuntu 20.04 installierst.

In diesem Artikel erkläre ich dir, wie du Portainer unter Ubuntu 20.04 mit Docker installierst und (Optional) wie du es mit dem NGINX Proxy Manager via einem Let’s Encrypt-SSL-Zertifikat absicherst.

Voraussetzungen

  • Debian/Ubuntu-basiertes Betriebssystemen auf einem dedizierter Server oder KVM/VPS.
  • Ein Root-Benutzerzugang oder ein normaler Benutzer mit administrativen Rechten.
  • Docker-Engine auf dem Host – kann lokal oder remote sein
  • Füge den A-Eintrag deiner bevorzugten Domain hinzu, z. B. port.example.com
  • Linux Docker Host-Maschine
  • Internetverbindung zum Herunterladen des Portainer-Docker-Images
  • Freie Ports: 9443, 9000, 8000

Was ist Portainer?

Portainer ist eine leichtgewichtige Verwaltungsoberfläche, mit der du deine verschiedenen Docker-Umgebungen (Docker-Hosts oder Swarm-Cluster) einfach verwalten kannst. Portainer ist so einfach zu implementieren wie zu benutzen. Es besteht aus einem einzigen Container, der auf jeder Docker-Engine laufen kann (er kann als Linux-Container oder als nativer Windows-Container bereitgestellt werden und unterstützt auch andere Plattformen). Mit Portainer kannst du alle deine Docker-Ressourcen (Container, Images, Volumes, Netzwerke und mehr) verwalten! Es ist sowohl mit der eigenständigen Docker-Engine als auch mit dem Docker Swarm-Modus kompatibel.

Mit Portainer kannst du Container in Docker, Swarm, Kubernetes und Azure ACI einfach erstellen und verwalten.

Was kann Portainer?

  • Docker-Images verwalten – ziehen, löschen, bauen
  • Anwendungen aus App-Vorlagen schnell bereitstellen
  • Container verwalten – starten, stoppen, löschen, neu starten, pausieren, fortsetzen, entfernen, erstellen
  • Netzwerke verwalten – hinzufügen, entfernen, bearbeiten
  • Volumes verwalten – hinzufügen, entfernen, Berechtigungen verwalten
  • Docker-Engine-Ereignisse überprüfen
  • Benutzerdefinierte Docker Registry hinzufügen und Authentifizierung für Docker Hub hinzufügen
  • Endpunkte erstellen
  • Benutzer zur Verwaltung von Docker hinzufügen
  • Docker-Swarm verwalten
  • Kubernetes-Cluster verwalten
  • Benutzerdefinierte Container-Vorlagen erstellen

In dieser Anleitung wird beschrieben, wie du Portainer auf einem Ubuntu 20.04-System mit Docker installierst.

Installation von Portainer unter Ubuntu 20.04

Zuerst brauchst du eine funktionierende Docker-Engine auf dem Host. Wenn du wissen möchtest, wie das funktioniert, klicke hier.

Halte deinen Server aus Sicherheitsgründen immer auf dem neuesten Stand.

apt-get update
apt-get upgrade -y

Jetzt erstellen wir ein neues Volume, um die Daten persistent zu speichern.

docker volume create portainer_data

Nun zeige ich dir zwei Möglichkeiten, wie du den Portainer Container erstellen kannst.

1. Wenn du eine Domain für den Zugriff auf den Portainer verwenden willst, benutze folgenden Befehl, um den Container zu erstellen:

docker run -d -p 8000:8000 -p 9443:9443 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
  • -v /var/run/docker.sock:/var/run/docker.sock bedeutet, dass /var/run/docker.sock in den Container eingebunden wird, damit Portainer Docker kontrollieren kann.
  • -v portainer_data:/data bedeutet, dass die Daten von portainer im Verzeichnis /var/lib/docker/volumes/portainer_data/_data/ gespeichert werden.

2. Wenn du mit der Server-IP auf den Portainer zugreifen willst, verwende den folgenden Befehl, um den Container zu erstellen:

docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

Unterschied zur 1. Möglichkeit ist, dass wir Port 9000 statt 9443 freigegeben haben. 9443 ist wie die 9443 schon verrät, für HTTPS zuständig, wohingegen 9000 ein Äquivalent zu Port 80, welcher für HTTP zuständig ist.

Zugang zu Portainer

Navigiere zu deinem Browser und greife auf Portainer zu, indem du entweder :9000 oder den Port :9443 an die IP deines Servers anhängst und ein Admin-Passwort einrichtest.

In vielen Browsern wird die Verbindung aufgrund fehlender Zertifizierung als „Mögliches Sicherheitsrisiko“ erkannt. Wir fahren fort, um unsere Weboberfläche zu erreichen.

Bei dieser Warnung (Firefox) auf die Schaltfläche „Erweitert…“ und mit „Risiko akzeptieren und fortfahren“              (Die hier gezeigte Warnung kann von Browser zu Browser unterschiedlich sein.)
  • Nun befinden wir uns in der Installation der Portainer-Weboberfläche. Als Nächstes legen wir ein Administrator-Passwort an

  • Im folgenden Quick Setup wählen wir den ersten Punkt aus.

Auf dem Portainer-Startbildschirm werden alle konfigurierten Endpunkte (Umgebungen) angezeigt. In dieser Konfiguration haben wir nur einen, der der lokalen Umgebung entspricht.

Hier wählen wir den Lokalen Endpunkt aus.

Im anfänglichen Dashboard kann ich meine Stacks, Container, Volumes, Dienste, Images und Netzwerke sehen. In diesem Beitrag werden wir uns auf Container konzentrieren.

Herunterladen und Konfigurieren von Docker-Images auf deinem Portainer

In unserem Beispiel verwenden wir eine NGINX-Installation, bei der wir die Ersteinrichtung auf dem Dashboard unseres Portainers vornehmen.

Nachdem du die Option “Containers” ausgewählt hast, wird der folgende Bildschirm angezeigt:

Klicke auf die “Add container

  • Name: Definiere den Namen deines Containers.
  • Image: Name des Images in Docker Hub.
  • Konfiguration der Netzwerkports: Stelle die Ports 88:80 und 1443:443 ein, wie im Bild unten gezeigt.

Deployment

Nachdem du alle Einstellungen wie oben im Bild zu sehen vorgenommen hast, klicke auf “Deploy the container“, um mit dem Herunterladen des Images zu beginnen (diese Prozess kann einige Minuten in Anspruch nehmen) und dann deinen Container automatisch zu erstellen und zu starten.

Wenn alles wie erwartet funktioniert, wirst du sehen, dass der NGINX-Container auf Port 80 und 443 läuft. Verwende deinen Browser, um die NGINX-Standardseite anzuzeigen.

Hierbei muss der Port genommen werden, der vorne steht in unserem Falle der Port 88 oder 1443, also XXX.XXX.XXX.XXX:1443 oder XXX.XXX.XXX.XXX:88

Glückwunsch! Du hast Portainer eingerichtet und deinen ersten Docker Container über die Portainer-Weboberfläche erstellt. Falls du eine Domain für deine Portaineroberfläche verwenden willst, gehe zu den nächsten Schritten über. Wenn du keine Domain verwenden willst, kannst du die folgenden Schritte überspringen und zum Fazit übergehen.

Reverse Proxy für Portainer konfigurieren

(wenn du eine Domain verwenden möchtest)

Um diesen Schritt ausführen zu können brauchst du einen funktionierenden NGINX Proxy Manager auf dem Host. Wenn du wissen möchtest, wie das funktioniert, klicke hier.

Der NGINX Proxy Manager (NPM) ist ein Reverse-Proxy-Management-System, das auf NGINX basiert und eine schöne und übersichtliche Web-UI hat. Es beinhaltet eine kostenlose SSL-Zertifikatsverwaltung von Let’s Encrypt, mit der auch Wildcard-SSL-Zertifikate bezogen werden können.

WICHTIG: Falls die Domain, die du verwenden möchtest, bei einem DNS-Provider wie z.B Cloudflare hinterlegt ist, musst du die IP deines Servers bzw. deiner Docker-Umgebung dort einstellen.

DNS-Verwaltung von Cloudflare

Zuerst rufen wir unseren NGINX Proxy Manager auf.

Jetzt müssen wir einen neuen “Proxy Host” erstellen. Achte darauf, dass du das “Schema” “HTTPS” auswählst. Das ist, dass Protokoll des Ziels. Fülle die “Domain Names” aus, die mit allen Domains in deinem SSL-Zertifikat übereinstimmen sollten. Wenn du den Forward Hostname/IP eingibst, gibst du die IP deiner Docker-Umgebung mit dem Host-Port ein in meinem Falle wäre das 78.46.204.130 als IP mit dem Forward Port 1443 Wenn deine Anwendung nicht in einem Docker-Container läuft, kannst du auch einfach die IP-Adresse angeben.

Indem wir “Block Common Exploits” aktivieren, fügen wir unserer Seite auch einige Sicherheitsfunktionen hinzu. Als Nächstes wählst du das SSL-Zertifikat deiner Domain aus und aktivierst “Force SSL”. Zusätzlich kannst du HTTP/2 und HSTS aktivieren, wenn du das möchtest.

Jetzt werden wir testen, ob alles gut funktioniert. Verbinde dich einfach mit der Domain und du solltest sehen, dass deine Seite jetzt zugänglich ist.


Fazit

Ich habe dir gezeigt, wie du Portainer auf Ubuntu 20.04 mit Docker installierst und (Optional) wie du es mit dem NGINX Proxy Manager via einem Let’s Encrypt-SSL-Zertifikat absicherst.

Wenn du mehr über Portainer erfahren möchtest, schau dir die offizielle Portainer-Dokumentation an.

Bei Fragen, Verbesserungsvorschlägen oder anderen Anliegen, schreibe einen Kommentar oder eine E-Mail an kontakt@toaaa.de