Was ist Portainer.io
Changelog 15.01.2022
- Nginx vHost: Fehler behoben, es ist jetzt wieder möglich, die Container in der Konsole (Portainer SSH) zu öffnen.
Portainer ist ein Open-Source-Tool für die Verwaltung von containerisierten Anwendungen. Es arbeitet mit Kubernetes, Docker, Docker Swarm, Azure ACI sowohl in Rechenzentren als auch am Endgerät.
Portainer beseitigt die Komplexität, die mit Orchestratoren verbunden ist, sodass jeder Container verwalten kann. Es kann verwendet werden, um Anwendungen bereitzustellen und zu verwalten, das Verhalten von Containern zu beobachten und die Sicherheit und die Verwaltung bereitzustellen, die für einen breiten Einsatz von Containern erforderlich sind.
Installation
Wie immer müssen zuerst die erforderlichen Pakete für die eigentliche Installation, installiert werden. Und los gehts.
apt update && apt upgrade -y
apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
Jetzt fügen Sie den offizielen Docker GPG-Schlüssel hinzu.
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
Wenn Sie überprüfen möchten, ob der GPG-Schlüssel hinzugefügt wurde, können Sie dies mit folgendem Befehl.
apt-key fingerprint 0EBFCD88
Im Anschluss fügen Sie das Repository hinzu.
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
Der Befehl lsb_release -cs gibt den Namen der installierten Debian-Distribution zurück (z. B. buster für Debian 10).
Der Parameter arch ist notwendig, um die Architektur Ihres Geräts anzugeben, Sie müssen zwischen den Optionen amd64, armhf oder arm64 wählen.
Jetzt lassen Sie das System nach Updates suchen.
apt update
Installation der Docker Engine
apt install docker-ce docker-ce-cli containerd.io
Überprüfen Sie die Installation mit dem Befehl.
docker -v
Zum Abschluss müssen Sie einen User zur Gruppe Docker hinzufügen. Sollten Sie CloudPanel nutzen, setzten Sie den User clp ein.
sudo adduser clp docker
Installation Portainer
Zuerst erstellen Sie ein Volumen für die Portainer-Daten. Ein Volumen ist nichts anderes als ein Datenpersistenz-Mechanismus zum Speichern von Daten, die von einem Docker-Container verwendet und erzeugt werden. Auf diese Weise sind die Konfigurationsdaten der Anwendung auch dann sicher, wenn Sie den Container löschen, aktualisieren oder zerstören.
docker volume create portainer_data
Überprüfen Sie, ob das Volumen erstellt wurde.
docker volume ls
docker volume inspect portainer_data
Mit folgendem Befehl laden Sie das aktuelle Build von Portainer herunter und starten es.
docker run -d --name=Portainer --hostname=Portainer --network=host --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data -e TZ='Europe/Berlin' portainer/portainer-ce
Anschließend ist Portainer installiert und Sie können die Verwaltungsoberfläche wie folgt aufrufen.
http://SERVERIP:9000/
Hier sollte auch schon die Aufforderung erscheinen, ein Administrationskonto zu erstellen.
Im nächsten Schritt wählen Sie Local aus und Sie haben die Einrichtung abgeschlossen.
Glückwunsch, Sie haben Portainer erfolgreich via Docker Container installiert.
Optional
Aufruf der Weboberfläche via Subdomain in CloudPanel
Möchten Sie die Portainer Weboberfläche via Subdomain aufrufen, legen Sie eine neue Subdomain in CloudPanel an und fügen folgende Vhost Konfiguration ein. Natürlich müssen Sie den rot markierten Bereich auf Ihre Bedürfnisse anpassen.
server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
{{ssl_certificate_key}}
{{ssl_certificate}}
server_name portainer.example.com;
{{root}}
{{nginx_access_log}}
{{nginx_error_log}}
if ($bad_bot = 1) {
return 403;
}
if ($scheme != "https") {
rewrite ^ https://$host$uri permanent;
}
#if ($http_x_forwarded_proto != https) {
# return 301 https://$host$request_uri;
#}
#if ($http_x_forwarded_proto ~ https) {
# set $fastcgi_https on;
#}
# Enable gzip but do not remove ETag headers
gzip on;
gzip_disable "MSIE [1-6]\\.(?!.*SV1)";
gzip_proxied any;
gzip_comp_level 5;
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
gzip_vary on;
### Secure Headers ###
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
add_header Referrer-Policy no-referrer;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Robots-Tag all;
add_header Referrer-Policy no-referrer-when-downgrade;
add_header X-Frame-Options "SAMEORIGIN";
# Disable FLoC calculation
add_header Permissions-Policy "interest-cohort=()";
location ~ /.well-known {
auth_basic off;
allow all;
}
location / {
proxy_pass http://127.0.0.1:9000/;
proxy_http_version 1.1;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Alles anzeigen
Über den Autor

Mark ist IT-Spezialist im Fachbereich der IT-Administratoren. Neben Beruf und Familie, erstellt er, als ein Teil seines Hobbys, gerne Anleitungen und versucht diese anderen näherzubringen. Systemintegration, Administration sowie Gaming sind Marks Leidenschaft und Hobby.
Hier können Sie uns unterstützen.
Antworten 4
Gamewalker
Hallo,
hast du zufällig eine Idee, wie ich Portainer über Plesk dazu kriege, dass Plesk die Websockets (benötigt für die in Portainer integrierte Console) weiterleitet? Ich habe herausgefunden, dass man den Apache in der Subdomain deaktivieren muss, aber dann geht es trotzdem nicht und:
als Direktive für Nginx hat auch nicht geklappt.
Foxly
Hallo und Willkommen Gamewalker .
Das ist doppelt gemoppelt, unter Proxy_pass muss /api/websocket/ weg. Dies ist schon unter location angegeben.
So wird an die IP http://172.0.0.1:8999/api/websocket/ angehangen.
Grüße
Gamewalker
Es bleibt leider bei:
Foxly
Hm, ich weiß, dass Plesk damals keine „richtige“ Implementierung der Websockets hatte. Wie es diesbezüglich nun aussieht, kann ich gerade nicht beurteilen, da wir Plesk seit einiger Zeit nicht mehr benutzen und wir somit nicht über den aktuellen Kenntnisstand verfügen.
Das hier könnte man noch testen…