Hast du jemals von Dockerception gehört?
Na, halt dich fest. Wir gehen in den Kaninchenbau hinunter.
Portainer, die Web-Oberfläche, die du gleich auf Docker installierst, ist selbst ein Docker-Container.
Es ist ein Tool, das auf genau der Sache läuft, die es verwaltet. Du startest es mit einer einzigen docker run-Zeile, und das Erste, was es tut, ist, durch ein kleines Loch im Host (eine Socket-Datei) zurückzugreifen und den Docker-Daemon zu bitten, ihm jeden Container auf der Maschine zu zeigen — einschließlich sich selbst. Von diesem Browser-Tab aus verwaltest du alle deine anderen Docker-Container.
Die Oberfläche, die du gerade anschaust, taucht in ihrer eigenen Containerliste auf.
Auf einem VPS, bei dem du bereits für den Server bezahlst und bereits mit SSH vertraut bist, fügt sich Portainer nahtlos oben auf Docker ein, ohne dass sich an der darunterliegenden Funktionsweise etwas ändert.
Das ist der Wert.
Eine 4-GB-Box kann ein Ausgangspunkt für Docker und Portainer sein, aber die Anwendungen, die du hinzufügst, entscheiden darüber, ob diese Kapazität ausreicht. Denk an die Hausautomatisierung, das Familienfotoarchiv, den KI-Assistenten und den Newsletter, den du schon lange starten wolltest — auf einem Server, der dir tatsächlich gehört.
Hier erfährst du, wie du es zum Laufen bringst, absicherst und Nutzen daraus ziehst.
Was Genau Ist Portainer?

Portainer ist eine Web-Oberfläche, die als Docker-Container läuft und über den Docker-Socket deine anderen Container verwaltet.
Es ist im Wesentlichen ein browserbasiertes Frontend (eine Docker-GUI) für dieselben Docker-Befehle, die du sonst von Hand eingeben würdest, plus Stack-Verwaltung, rollenbasierten Zugriff (wenn du auf die Business Edition upgradest) und eine Dashboard-Ansicht von CPU und Arbeitsspeicher.
Die Socket-Verbindung ist das, was es funktionieren lässt. Das Binden sieht im Installationsbefehl wie -v /var/run/docker.sock:/var/run/docker.sock aus, und diese eine Zeile erledigt die ganze schwere Arbeit. Ohne sie ist Portainer eine Benutzeroberfläche für einen leeren Docker-Host. Mit ihr ist Portainer die Fernbedienung des Docker-Hosts.
Eine Sache, die du beachten solltest: Jeder Prozess, der auf /var/run/docker.sock zugreifen kann, kann den Docker-Daemon steuern, und Dockers eigene Sicherheitsdokumentation stellt unmissverständlich klar, dass nur vertrauenswürdige Benutzer das dürfen sollten: Ein über den Daemon gestarteter Container kann das gesamte Dateisystem des Hosts einbinden und ohne Einschränkung verändern. Das ist ein Feature, wenn Portainer danach fragt, und ein Problem, wenn es sich um einen Container handelt, den du letzte Woche gestartet und dabei vergessen hast, dass du ihm Zugriff auf den Socket gegeben hast.
Behandle das Binden des Sockets als privilegierte Fähigkeit und prüfe jeden anderen Container, der eine möchte.
Brauchst Du Portainer, Wenn Du Schon Docker Hast?
Nein. Docker funktioniert einwandfrei über das Terminal, und viele Leute betreiben ein paar Container jahrelang, ohne jemals eine Benutzeroberfläche darauf zu installieren.
Du möchtest Portainer, wenn:
- Du jonglierst mit mehr als zwei oder drei Docker-Containern über verschiedene Apps hinweg.
- Du klickst lieber auf „Neustart“, als um 23 Uhr einen Compose-Befehl neu einzutippen.
- Du teilst den Zugang mit jemandem, der nicht ständig im Terminal lebt.
- Du möchtest Stack-Updates aus einem Git-Repo bereitstellen, ohne ein Deploy-Skript zu schreiben.
Überspringe Portainer, wenn:
- Du betreibst ein oder zwei Container, die sich selten ändern.
- Du kennst dich bereits mit Docker Compose aus und bleibst gern dabei.
Docker selbst ist mittlerweile so weit verbreitet, dass dies keine Randentscheidung ist. In der Stack Overflow Developer Survey 2025 gaben 71 % der Befragten an, Docker zu nutzen — das Spitzenergebnis unter den Technologien für Cloud-Entwicklung und Infrastruktur, nach einem Sprung um 17 Prozentpunkte gegenüber 2024. Das Portainer-Projekt hat mit Stand August 2026 mehr als 38.000 Sterne auf GitHub.
Es gibt weitere Optionen. Dokploy zum Beispiel geht weiter in Richtung einer vollständigen selbstgehosteten PaaS und kümmert sich für dich um Apps, Datenbanken und SSL. Portainer bleibt näher an purem Docker: dieselben Compose-Dateien, dieselben Images, nur mit einer Oberfläche darüber.
Wenn du in tmux lebst und eine App betreibst, schließe diesen Tab. Dann passt alles. Wenn du vier selbstgehostete Apps betreibst und diesen Monat zweimal „Was sind Docker-Logs nochmal?“ gegoogelt hast, lies weiter.
Wie Groß Muss Ein VPS Sein, Um Docker Und Portainer Zu Betreiben?
Portainer veröffentlicht kein RAM-Minimum. Ein 4-GB-VPS kann für einen kleinen Stack ausreichen, aber dimensioniere ihn anhand der kombinierten Anforderungen von Betriebssystem, Docker-Daemon und jedem Container, den du betreiben willst.
Portainers eigene Anforderungsseite sagt überraschend wenig über RAM: Der Server wird als schlanker Container ausgeliefert, und die Leistungsempfehlungen in der Dokumentation betreffen den Festplattenspeicher (mehr dazu unten). Die eigentliche RAM-Rechnung sind deine Workloads — plane für das Betriebssystem, den Docker-Daemon und jeden Container, den du betreiben willst. Plane auch Festplattenplatz für Logs ein: Dockers Standard-Logtreiber json-file führt keine Logrotation durch, sodass die Logs eines gesprächigen Containers mit der Zeit erheblich viel Speicherplatz verbrauchen können. Dockers Logging-Dokumentation empfiehlt stattdessen den Treiber local. Sobald Docker installiert ist (Schritt 2 unten), erstelle Dockers Konfigurationsverzeichnis, setze den Logtreiber local und starte Docker dann neu: Führe sudo install -d -m 0755 /etc/docker aus, dann printf '%s\n' '{ "log-driver": "local" }' | sudo tee /etc/docker/daemon.json > /dev/null und dann sudo systemctl restart docker. Erledige das, bevor du langlaufende Apps bereitstellst: Der Treiber local rotiert Logs standardmäßig, und die Änderung gilt nur für Container, die danach erstellt werden.
So sieht das bei realen Workloads aus:

Das Arbeitsblatt ist einfache Addition: Schlage die dokumentierte RAM-Anforderung für jede App nach, die du betreiben willst, addiere das Betriebssystem und den Docker-Daemon und lass dann Reserven für Lastspitzen. Portainer selbst veröffentlicht kein RAM-Minimum, also sind es die Apps — nicht die Oberfläche —, die die Box füllen.
Bei DreamHost gibt es unser VPS Hosting in vier auf RAM basierenden Stack-Tarifen (Stack 4, 8, 16 und 32). Der Einstiegstarif Stack 4 (2 vCPUs, 4 GB RAM, 75 GB NVMe-SSD, vollständiger Root-Zugriff) passt ideal zu einem kleinen Docker-Host. Bei monatlicher Abrechnung kostet er 8,99 $/Monat für die ersten 3 Monate und verlängert sich danach automatisch zu 15,99 $/Monat (Stand: August 2026; die gesamte Laufzeit zuzüglich Steuern wird beim Checkout berechnet — aktuelle Preise findest du immer auf der Docker + Portainer VPS-Seite).
Wenn du unsicher bist, ob sich Selbsthosting lohnt, ist Stack 4 die richtige Einstiegsgröße: groß genug, um es herauszufinden, klein genug, dass du nicht für Reserven bezahlst, die du nicht nutzt. Wenn dein Arbeitsblatt darüber hinauswächst, kannst du auf einen höheren Tarif wechseln, und deine Umgebung zieht mit — beachte aber, dass ein Wechsel zurück auf einen kleineren Stack derzeit nicht unterstützt wird, also fang bewusst klein an.
Eine Anmerkung zum Speicherplatz: Portainers Daten-Volume enthält seine eigene Datenbank und Konfiguration sowie einen Klon jedes Git-Repositorys, aus dem du Stacks bereitstellst — Portainers Dokumentation warnt, dass große oder mehrere Repos erheblichen Speicherplatz belegen können. Die Leistungsempfehlungen der Dokumentation betreffen den Festplattenspeicher, nicht den Arbeitsspeicher: SSD-Leistung (≈3,5 MB/s, 30.000 IOPS oder mehr, unter 10ms Schreiblatenz) bezeichnen sie als ideal. Stack 4 umfasst 75 GB NVMe-SSD-Speicher.
Wie Installierst Du Docker Und Portainer Auf Einem VPS?

Es sind sieben Schritte. Die Download- und Installationszeit hängt von deinem VPS und deiner Netzwerkverbindung ab. Die Befehle in den Schritten 2 bis 6 sind für Ubuntu geschrieben und können auf einem frischen Server der Reihe nach eingefügt werden; die einzige Stelle, an der ein Befehl einen Wert braucht, den nur du kennst (deine eigene IP-Adresse, in Schritt 4), wird im jeweiligen Schritt hervorgehoben. (Willst du die ganze Liste überspringen? Die App-Bibliothek von DreamHost VPS Hosting enthält ein Docker + Portainer Image, bei dem beides vorkonfiguriert ist.)
1. Wähle eine Linux-Distribution
Dieser Leitfaden verwendet Ubuntu 24.04 LTS. Docker Engine unterstützt Ubuntu 22.04, 24.04 und 26.04 LTS (Stand: August 2026). Ubuntu ist eines der vorinstallierten Betriebssysteme bei DreamHost VPS Hosting.
Debian und Distributionen der RHEL-Familie wie AlmaLinux funktionieren auch, haben aber in der Docker-Dokumentation eigene Installationswege, und die Befehle unten lassen sich nicht unverändert übertragen. Eine zusätzliche Besonderheit bei der RHEL-Familie: Portainers Installationsanleitung setzt voraus, dass SELinux deaktiviert ist, und sagt, dass du Docker beim Bereitstellen von Portainer --privileged übergeben sollst, wenn du SELinux aktiviert brauchst. Wenn dir dieser Satz nichts gesagt hat, nimm Ubuntu.
Nicht sicher, welche Version von Ubuntu du verwendest? Hier findest du fünf Möglichkeiten zur Überprüfung.
2. Installiere Docker aus dem offiziellen Repository
Führe kein apt install docker.io aus, und installiere Docker auch nicht über Snap — Dockers offizielle Installationsdokumentation führt docker.io unter den inoffiziellen Paketen auf, die vor der Installation von Docker Engine deinstalliert werden müssen, und Portainers Installationsanleitung warnt, dass das Snap-Paket Kompatibilitätsprobleme verursachen kann.
Entferne zuerst alle in Konflikt stehenden Pakete. Das ist der Entfernungsbefehl aus Dockers aktueller Installationsanleitung, und auf einem frischen Server findet er meist nichts zu entfernen — die Anleitung weist darauf hin, dass apt möglicherweise meldet, dass keines dieser Pakete installiert ist:
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc docker-buildx podman-docker containerd runc | cut -f1) Füge als Nächstes Dockers GPG-Schlüssel hinzu (jede Zeile unten ist ein eigener Befehl):
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc Füge dann Dockers apt-Repository hinzu. Dadurch wird die Repository-Definition in /etc/apt/sources.list.d/docker.sources geschrieben — die Datei, die Dockers Installationsanleitung verwendet —, wobei deine Ubuntu-Version und CPU-Architektur automatisch eingetragen werden:
sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update Installiere schließlich Docker Engine und das Compose-Plugin in einem Durchgang:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 3. Überprüfe, ob Docker läuft
Führe sudo docker run hello-world aus.
Wenn du die Nachricht „Hello from Docker!“ nicht erhältst, bring zuerst den Daemon in Ordnung, bevor du Portainer darauf aufsetzt.
4. Binde UFW in Docker ein, bevor du Portainer startest
Hier kommt der Teil, den die meisten Anleitungen ans Ende stellen, wo es zu spät ist: Wenn Docker einen Port veröffentlicht, wird der Verkehr dorthin umgeleitet, bevor er die Ketten erreicht, die UFW filtert, sodass ein veröffentlichter Port aus dem öffentlichen Internet erreichbar ist, selbst wenn UFW ihn als abgelehnt anzeigt. (Die vollständige Erklärung findest du unten.) Sobald du Portainer startest, ist sein Port 9443 öffentlich — genau während des fünfminütigen Fensters, in dem jeder, der ihn zuerst erreicht, das Admin-Konto erstellen kann. Also bring zuerst die Firewall in Ordnung.
Wenn UFW noch nicht aktiv ist, erlaube SSH und aktiviere es. (Wenn dein SSH auf einem benutzerdefinierten Port läuft, erlaube diesen Port statt 22, sonst ist das der Schritt, in dem du dich selbst aussperrst.)
sudo ufw allow 22/tcp
sudo ufw enable Installiere dann chaifeng/ufw-docker, ein Drittanbieter-Tool, das die nötigen Regeln an /etc/ufw/after.rules anhängt, sodass der Verkehr zu Dockers veröffentlichten Ports durch die DOCKER-USER-Kette gefiltert wird. Die folgenden Befehle fixieren das Release 251123 des Projekts (November 2025), statt vom sich ständig ändernden master-Branch zu ziehen, und sie verwenden curl, das du bereits in Schritt 2 installiert hast:
sudo curl -fsSL -o /usr/local/bin/ufw-docker \
https://github.com/chaifeng/ufw-docker/raw/251123/ufw-docker
sudo chmod +x /usr/local/bin/ufw-docker
sudo ufw-docker install
sudo ufw reload Nach dem Neuladen werden veröffentlichte Container-Ports durch UFW gefiltert. Wenn deine Richtlinie für gerouteten Verkehr eingehende Verbindungen ablehnt und keine bestehende Regel den Port erlaubt, bleiben öffentliche Verbindungen blockiert, bis du sie ausdrücklich erlaubst. (Das ufw-docker-Projekt weist darauf hin, dass ein Neustart des Servers hilft, falls die Regeln nach einem UFW-Neustart nicht greifen.)
Genehmige jetzt vorab deinen eigenen Zugriff auf die Portainer-Oberfläche. Ersetze YOUR_HOME_IP durch die öffentliche IP, von der aus du surfen wirst:
sudo ufw route allow proto tcp from YOUR_HOME_IP to any port 9443 Mit dieser Regel, die schon vor dem Start von Portainer greift, ist IPv4-Verkehr zur Oberfläche von deiner IP erlaubt und von keiner anderen — auch während des Fensters für den ersten Admin. Die Regel in dieser Form deckt nur IPv4 ab. Laut der Dokumentation von ufw-docker unterstützt das Tool auch IPv6-Netzwerke und aktualisiert bei Bedarf /etc/ufw/after6.rules, aber verlass dich nicht blind darauf: Wenn dein VPS auf einer öffentlichen IPv6-Adresse antwortet, führe den Test von außen aus dem Firewall-Abschnitt auch über IPv6 durch, bevor du ihm vertraust. Der Haken: Die meisten Heimanschlüsse ändern gelegentlich ihre IP, sodass du die Regel später eventuell aktualisieren musst. Wenn dich das stört, ist ein VPN vor der Oberfläche die sauberere langfristige Lösung (behandelt im Abschnitt zur Absicherung).
5. Erstelle ein persistentes Volume für Portainers Daten
Führe als Nächstes sudo docker volume create portainer_data aus.
Das Speichern der Portainer-Datenbank auf einem Docker-Volume (nicht im Container) bedeutet, dass ein Portainer-Upgrade deine Konfiguration nicht löscht.
6. Führe die Portainer Community Edition aus
Das ist der Befehl aus Portainers Linux-Installationsanleitung, abzüglich eines Flags: Die offizielle Version veröffentlicht außerdem Port 8000, einen TCP-Tunnel, der nur benötigt wird, wenn du später entfernte Umgebungen über Edge Agents verbindest. Eine Einzel-Host-Installation braucht ihn nicht, also lassen wir ihn weg:
sudo docker run -d \
-p 9443:9443 \
--name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:lts Lass uns das Zeile für Zeile aufschlüsseln:
-dführt den Container im Hintergrund (detached) aus.-p 9443:9443ist die Portainer-Web-Oberfläche über HTTPS — der Port, den du in Schritt 4 für deine IP freigegeben hast.--restart=alwaysstartet Portainer nach einem Neustart wieder.- Die
-v-Flags sind die Socket-Bindung und das persistente Volume aus Schritt 5. :ltsbindet dich an Portainers Release-Linie mit Long Term Support — das Tag, das Portainers eigene Installationsanleitung verwendet.
7. Öffne die Oberfläche und erstelle dein Admin-Konto
Richte deinen Browser auf https://YOUR_VPS_IP:9443 (von der IP-Adresse aus, die du in Schritt 4 freigegeben hast).
Klicke dich durch die Warnung des selbstsignierten Zertifikats. Du landest auf dem Bildschirm „Erstellen des ersten Administrator-Benutzers“. Wähle einen Benutzernamen, der nicht admin ist, setze ein starkes Passwort und bewahre es an einem sicheren Ort auf. Und … du bist drin!
Warum Ist Portainer Bei Mir Gerade In Ein Timeout Gelaufen?
Weil Portainer genau fünf Minuten wartet, bis jemand es bei der ersten Installation beansprucht. Wenn niemand das tut, sperrt es die Tür ab.
Wörtlich aus der eigenen FAQ von Portainer:
„Als Sicherheitsmaßnahme wartet Portainer nach der ersten Installation 5 Minuten darauf, dass ein Administratorbenutzer erstellt wird (Teil der Ersteinrichtung). Wenn innerhalb dieser 5 Minuten kein Benutzer erstellt wird, hört der Portainer Server auf, auf Anfragen zu lauschen.“
Übersetzung: Wenn du Schritt 6 damit verbracht hast, ein Sandwich zu machen, weigert sich deine Installation jetzt, mit dir zu sprechen — und du hast nichts falsch gemacht.
Die Lösung ist einfach. Führe sudo docker restart portainer aus.
Dies startet den Container neu, gibt dir ein weiteres fünfminütiges Fenster und bringt dich auf den Bildschirm zum Erstellen des Admins. Wiederhole dies nach Bedarf. Willkommen beim Selbsthosting.
Wenn du die Installation für eine Flotte skriptest (Ansible, Terraform, eine Deploy-Pipeline), akzeptiert Portainer das Flag --admin-password-file, das den Admin-Benutzer beim ersten Start des Containers aus einer Datei erstellt — so gibt es keinen Admin-Erstellungsbildschirm, mit dem du um die Wette laufen musst. Portainers Dokumentation zur CLI-Konfiguration beschreibt die Syntax. Für eine einmalige VPS-Installation ist der Neustart-Trick in Ordnung.
Wie Verhinderst Du, Dass Docker Deine Firewall Umgeht?

Das hast du bereits in Schritt 4 getan. Hier erfährst du, was tatsächlich passiert ist, wie du Ports gezielt öffnest und wie du nachweist, dass es funktioniert hat.
Das Problem: Wenn du den Port eines Containers mit -p 80:80 veröffentlichst, ist dieser Port aus dem öffentlichen Internet erreichbar, auch wenn ufw status Port 80 als abgelehnt anzeigt. Laut Dockers Dokumentation zur Paketfilterung gilt: „Docker leitet den Containerverkehr in der NAT-Tabelle, was bedeutet, dass Pakete umgeleitet werden, bevor sie die INPUT- und OUTPUT-Ketten erreichen, die UFW verwendet.“
UFW ist nicht defekt. Es steht nur im falschen Flur.
Die Lösung, auf die Docker selbst verweist, ist die DOCKER-USER iptables-Kette — eine Kette, die Docker eigens für benutzerdefinierte Regeln anlegt und die vor den Regeln in Dockers eigenen Ketten verarbeitet wird. Das Skript ufw-docker, das du in Schritt 4 installiert hast, bindet UFW in diese Kette ein, indem es einen Regelblock (zwischen den Markierungen # BEGIN UFW AND DOCKER und # END UFW AND DOCKER) an /etc/ufw/after.rules anhängt, sodass er mit dem Rest deiner UFW-Konfiguration geladen wird.
Um einen Container-Port gezielt öffentlich zugänglich zu machen — etwa eine Web-App auf Container-Port 80 —, verwende eine Route-Regel:
sudo ufw route allow proto tcp from any to any port 80 Eine Falle, auf die die ufw-docker-Dokumentation hinweist: Die Regel verwendet den Container-Port, nicht den Host-Port. Wenn du mit -p 8080:80 veröffentlicht hast, ist die obige Regel (Port 80) die richtige, nicht Port 8080.
Zur Überprüfung von außen teste von einem Netzwerk aus, das nicht auf deiner Freigabeliste steht — ein Handy-Hotspot funktioniert. Dies sollte in eine Zeitüberschreitung laufen, statt Portainers Anmeldeseite zurückzugeben:
curl -k --max-time 5 https://YOUR_VPS_IP:9443
# For IPv6, enclose the address in square brackets:
curl -k --max-time 5 'https://[YOUR_VPS_IPV6]:9443' Führe denselben Befehl von der IP aus, die du in Schritt 4 freigegeben hast, und du solltest HTML zurückbekommen. Wenn UFW „denied“ meldet, ist das eine Behauptung; eine Zeitüberschreitung aus einem fremden Netzwerk ist ein Beweis.
Um alles rückgängig zu machen, führe sudo ufw-docker uninstall aus, was laut Projektdokumentation deine UFW-Konfiguration wiederherstellt und die installierten Dateien löscht, und dann sudo ufw reload. Du kannst auch den Block zwischen den Markierungen # BEGIN UFW AND DOCKER und # END UFW AND DOCKER in /etc/ufw/after.rules von Hand entfernen und UFW neu laden.
Das erwischt scharfsinnige Ingenieure auf privaten Boxen und Produktionsservern gleichermaßen: UFW sagt das eine, das öffentliche Internet etwas anderes, und die Wahrheit liegt in iptables. Wenn du lieber möchtest, dass Portainer überhaupt keinen öffentlichen Port hat, schalte einen VPN-Tunnel davor, etwa WireGuard.
Was Solltest Du Direkt Nach Dem Ersten Login Absichern?
Du bist drin. Fünf Dinge, die du erledigen solltest, bevor du diesen Browser-Tab schließt — die ersten vier stammen direkt aus Portainers eigenem Sicherheitsleitfaden:
- Aktiviere Force HTTPS only. Die Installation in diesem Leitfaden veröffentlicht nur Port 9443, sodass von vornherein kein HTTP-Port offen ist. Wenn du den Schalter Force HTTPS only unter Settings → SSL Certificate umlegst, wird das festgeschrieben: Laut Portainers Dokumentation zu den Einstellungen deaktiviert er das Lauschen auf dem alten HTTP-Port (9000) vollständig, sodass ein künftiges erneutes Bereitstellen mit
-p 9000:9000keinen unverschlüsselten Weg wieder öffnen kann. - Ersetze das selbstsignierte Zertifikat. Lade ein von dir generiertes Zertifikat hoch oder schalte einen NGINX-Reverse-Proxy mit einem Let’s Encrypt-Zertifikat vor Portainer. Nach dem ersten Tag ist das ständige Durchklicken der Browserwarnung eine Gewohnheit, die du bereuen wirst.
- Verwende einen echten Admin-Benutzernamen. Wenn du den Standard-Benutzernamen admin verwendest, muss ein Angreifer eine Zugangsangabe weniger herausfinden. Wähle etwas, das spezifisch für dich ist.
- Beschränke die Oberfläche auf ein VPN. Portainer hinter einem WireGuard-VPN zu betreiben, ist das Muster, auf das Portainers Sicherheitsleitfaden verweist. Ein 9443, das auf deine Quell-IP beschränkt ist (Schritt 4), ist gut. Ein 9443, das nur in einem privaten Netzwerk erreichbar ist, ist besser.
- Prüfe das Docker-Socket-Binding. Alles mit Zugriff auf
/var/run/docker.socksteuert den Docker-Daemon und darüber den Host. Binde den Socket nicht leichtfertig in andere Container ein. Jedes zusätzliche Binding ist ein neuer Weg zum Host. Wenn ein Container behauptet, den Socket zu benötigen, frag nach dem Warum — und erwäge einen Socket-Proxy, wenn die Antwort „zur Überwachung“ lautet.
Wie Nutzt Du Portainer Im Alltag?
Der Vorteil der Installation von Portainer ist der Tag, an dem du aufhörst, dich per SSH einzuloggen, um einen widerspenstigen Container neu zu starten, und stattdessen einfach auf einen Knopf klickst. Der größere Vorteil ist das Stack-Management.
Ein Portainer-Stack ist eine Multi-Container-App, die durch eine Docker Compose-Datei definiert wird. Portainer kann unterstützte Docker Compose-Konfigurationen auf vier Wegen als Stacks bereitstellen, die in der offiziellen Stacks-Dokumentation aufgeführt sind:
- Füge Compose in den Web-Editor ein
- Lade eine Compose-Datei hoch
- Richte Portainer auf ein Git-Repository aus
- Stelle aus einer benutzerdefinierten Vorlage bereit

Der Git-Pfad ist der entscheidende. Du richtest Portainer auf ein öffentliches oder authentifiziertes Repo und einen Pfad zu docker-compose.yml ein und aktivierst dann GitOps-Updates. Portainer fragt das Repo entweder in einem von dir festgelegten Abrufintervall ab oder gibt dir eine Webhook-URL, die du bei deinem Git-Host hinterlegst (zum Beispiel ausgelöst von einer GitHub Action). Wenn sich die Compose-Datei upstream ändert, zieht Portainer sie automatisch und stellt neu bereit. Und ja, das funktioniert in der Community Edition — auf der Seite der Stacks-Dokumentation trägt nur die Option für Volumes mit relativen Pfaden die Kennzeichnung Business Edition.
Das ist die selbstgehostete Version von „deploy on push“, ohne für dieses Privileg eine PaaS zu bezahlen.
Die kleineren täglichen Erfolge summieren sich ebenfalls. Denk an Logs in einem Panel, statt sie über die Kommandozeile zu verfolgen, Neustarts per Mausklick, das Neuaufbauen eines Stacks per Knopfdruck und Ressourcendiagramme, die du in drei Sekunden überfliegen kannst, statt Docker Stats auszuführen.
Wenn du später über Edge Agents entfernte Hosts hinzufügst, kommt Port 8000 wieder ins Spiel — die FAQ unten erklärt das erneute Bereitstellen und die Firewall-Regel.
Wie Sicherst Du Portainer Und Deine Container?
Ein Volume ist Persistenz, kein Backup. Das Volume portainer_data aus Schritt 5 übersteht Container-Upgrades, liegt aber auf derselben Festplatte wie alles andere — ein echter Backup-Plan besteht daher aus drei Teilen, und alle drei verlassen den VPS.
1. Portainers eigene Konfiguration. Gehe in der Oberfläche zu Settings → Back up Portainer, behalte die Standardoption Download backup file bei und klicke auf Download backup. Laut Portainers Dokumentation zu den Einstellungen lädt das ein tar.gz-Archiv mit allem herunter, was Portainer auf seinem /data-Volume speichert, optional mit Passwort verschlüsselt, und dieses Archiv ist alles, was du brauchst, um Portainer wiederherzustellen. Beim Umfang ist die Dokumentation ebenso klar: Es sichert nur die Portainer-Konfiguration, nicht die Container, Stacks oder Volumes, die du bereitgestellt hast. (Geplante Backups nach S3 gibt es, aber nur in der Business Edition — trag dir in der CE eine wiederkehrende Erinnerung in den Kalender ein.)
2. Deine Anwendungsdaten. Dockers Dokumentation zu Volumes bezeichnet benannte Volumes als bevorzugte Methode, um Containerdaten dauerhaft zu speichern, und als einfacher zu sichern oder zu migrieren als Bind Mounts. Ein schreibgeschütztes Mount hindert nur den Backup-Container am Schreiben — die App selbst kann während der Archivierung weiterhin in das Volume schreiben und dir eine inkonsistente Kopie liefern. Stoppe also zuerst den Container der App (sudo docker stop myapp) oder nutze den unterstützten Backup-Mechanismus der App selbst. Binde dann das Volume schreibgeschützt in einen Wegwerf-Container ein, pack es mit tar zusammen und starte die App danach wieder (setze deine eigenen Namen ein):
sudo docker run --rm \
-v myapp_data:/source:ro \
-v "$PWD":/backup \
alpine tar czf /backup/myapp_data.tgz -C /source . Bevorzuge bei Datenbanken das eigene Dump-Tool der Datenbank (pg_dump, mysqldump), statt laufende Datendateien zu kopieren, damit du keine Datei mitten im Schreibvorgang archivierst. Schaffe die Archive dann regelmäßig von der Box weg — per rsync oder scp auf eine andere Maschine oder per Upload in einen Objektspeicher. Ein Backup, das auf der Festplatte liegt, die es sichert, verschwindet zusammen mit dieser Festplatte.
3. Deine Compose-Dateien und Secrets. Wenn du Stacks aus Git bereitstellst, liegen die Compose-Dateien bereits außerhalb des Hosts. Was Git nicht enthält, ist alles, was du nie committet hast: .env-Dateien, API-Schlüssel und Passwörter, die du beim Deployment angegeben hast. Per Bind Mount eingebundene Verzeichnisse liegen ebenfalls außerhalb des obigen Volume-Backups. Erfasse diese separat und sichere sie verschlüsselt.
Teste dann die Wiederherstellung, bevor du sie brauchst. Laut Portainers Dokumentation funktioniert eine Wiederherstellung der Konfiguration nur auf einer frischen Instanz: Stelle einen neuen Portainer-Container mit einem leeren Daten-Volume bereit (ein Wegwerf-VPS oder dein Laptop reichen), wähle während der Ersteinrichtung Restore Portainer from backup und prüfe, ob du dich mit deinen alten Zugangsdaten anmelden kannst und deine Stack-Definitionen siehst. Diese Übung deckt nur Teil 1 ab — Portainers Konfiguration. Teil 2 und 3 brauchen einen eigenen Test pro App: Stelle ein Archiv in ein frisches Volume wieder her, starte die App damit und prüfe, ob die Daten tatsächlich da sind. Ein ungetestetes Backup ist eine Hoffnung mit Dateinamen.
Was Kostet Portainer? (Und Wann Ist Kostenlos Nicht Mehr Kostenlos?)
Portainer ist gleich doppelt kostenlos. Die Community Edition ist kostenlos und Open Source (zlib-Lizenz), ohne dass ein Lizenzschlüssel erforderlich ist. Und die Portainer Business Edition ist für bis zu 3 Knoten dauerhaft kostenlos: voller Business-Funktionsumfang, kein Zeitlimit, keine Kreditkarte. Statt zu bezahlen, registrierst du dich für einen kostenlosen Lizenzschlüssel.
| Edition | Kosten | Knoten | Am besten für |
|---|---|---|---|
| Community Edition | Kostenlos, Open Source | Keine Lizenzierung nach Knoten | Persönliche Projekte, Homelab, Selbsthoster mit einem einzelnen VPS |
| Business Edition — 3 Knoten kostenlos | Kostenlos, ohne Zeitlimit | Bis zu 3 | Kleine Homelabs, die Business-Funktionen wie RBAC möchten |
| Home & Student | 155 $/Jahr | Bis zu 15 | Größere Homelabs und Studierende; ausschließlich nicht kommerziell |
| Business Starter | Ab 105 $/Monat | 5, 10 oder 15 | Kleine Teams, die echte Infrastruktur verwalten (Community-Support) |
| Business Scale | Ab 209 $/Monat | 5 bis 35 | Wachsende Teams, die 9×5-Support benötigen |
| Enterprise | Angebot | Individuell | Anforderungen an Compliance und priorisierten Support |
Die Preise stammen von Portainers Preisseite (Stand: August 2026); Starter und Scale erfordern eine jährliche Bindung.
Welche Variante solltest du also wählen? Für einen einzelnen VPS mit einem Admin die Community Edition: Sie ist Open Source, erfordert keine Registrierung und kann alles in diesem Leitfaden, Git-Deployments eingeschlossen. Wenn du rollenbasierte Zugriffskontrolle (RBAC) für einen zweiten Benutzer möchtest oder bereits zwei oder drei Boxen betreibst, nimm stattdessen die kostenlose Business-Stufe für 3 Knoten — es ist dieselbe Software mit freigeschalteten Business-Funktionen, kostenlos, solange du bei drei oder weniger Knoten bleibst. Die kostenpflichtigen Tarife lohnen sich erst, wenn du in einem Team echte Knotenzahlen verwaltest — und prüfe die Support-Angaben, bevor du davon ausgehst, dass bezahlt auch Support bedeutet: Mit Stand August 2026 listet Portainers Preisseite Community-Support für den Starter-Tarif, 9×5-Support mit Antwort am nächsten Werktag ab dem Scale-Tarif und priorisierten Support für Enterprise auf.
Solltest Du Portainer Hinzufügen Oder Überspringen?
Hier ist die ehrliche Antwort in zwei Sätzen:
✅ Wenn du diesen Server teilen, von Git aus bereitstellen oder in einem Jahr mehr als drei Container betreiben wirst, installiere Portainer, solange der Host frisch ist und sich deine Gewohnheiten noch darum herum bilden.
❌ Wenn du eine ruhige App betreibst und dich im Terminal wohlfühlst, wirst du die Oberfläche, die du nicht installiert hast, nicht vermissen.
Die eigentliche Frage ist nicht Portainer gegen kein Portainer. Es geht darum, ob Selbsthosting überhaupt die richtige Entscheidung für dich ist — und das hast du beantwortet, als du diesen Tab geöffnet hast.
Ein 4-GB-VPS, Docker und Portainer CE reichen, um wirklich mit dem Selbsthosting zu beginnen: Wähle deine Apps aus, addiere ihre dokumentierten Anforderungen und lass das Arbeitsblatt — nicht die Wunschliste — entscheiden, wann die Box wachsen muss.
Das ist kein schlechtes Angebot.
Häufig Gestellte Fragen Zu Docker Und Portainer
Kannst du Docker auf einem VPS betreiben?
Ja. Ein VPS mit Root-Zugriff ist einer der flexibelsten Orte, um Docker zu betreiben: Du installierst Docker Engine auf dem Linux-Betriebssystem des Servers, und jede App läuft in ihrem eigenen Container. Der Unterschied, über den viele stolpern: Der VPS ist der gemietete virtuelle Server, während Docker die Software ist, die du darauf ausführst, um Anwendungen in Containern zu isolieren. Jeder VPS mit Root-Zugriff und genug RAM für deine Container funktioniert — DreamHost VPS Hosting bietet sogar ein vorinstalliertes Docker + Portainer Image an.
Wofür wird Portainer verwendet?
Portainer wird verwendet, um Docker-, Docker-Swarm- und Kubernetes-Container über eine Web-Oberfläche zu verwalten. Es läuft selbst als Docker-Container, verbindet sich mit dem Docker-Socket des Hosts und bietet dir eine Browseransicht und Steuerungsoberfläche für jeden anderen Container auf dem Host — Starten und Stoppen von Containern, Bereitstellen von Multi-Container-Stacks, Anzeigen von Protokollen und Verwalten des Benutzerzugriffs, ohne dich per SSH einzuloggen.
Brauche ich Portainer, wenn ich Docker habe?
Nein, du brauchst Portainer nicht, um Docker zu verwenden. Docker funktioniert vollständig über das Terminal, und viele Selbsthoster installieren nie eine Benutzeroberfläche darüber.
Portainer lohnt sich, wenn du mehr als zwei oder drei Container jonglierst, den Zugang mit jemandem teilst, der nicht ständig im Terminal arbeitet, oder Stack-Updates aus einem Git-Repository bereitstellst. Verzichte darauf, wenn du ein oder zwei stabile Container betreibst und dich mit Docker Compose wohlfühlst.
Auf welchem Port läuft Portainer?
Portainer stellt seine Web-Oberfläche standardmäßig über HTTPS auf Port 9443 bereit. Der offizielle Installationsbefehl in Portainers Linux-Installationsanleitung veröffentlicht außerdem Port 8000, einen TCP-Tunnel, den nur Edge Agents nutzen, wenn du später entfernte Docker-Hosts verbindest — er ist optional, weshalb die Einzel-Host-Installation in diesem Leitfaden das Flag -p 8000:8000 komplett weglässt.
Wie viel RAM benötigt Portainer?
Portainers aktuelle Systemanforderungen nennen kein RAM-Minimum — der Server läuft als schlanker Container, und die in der Dokumentation genannten Leistungsempfehlungen betreffen den Festplattenspeicher, nicht den Arbeitsspeicher. Bemiss deinen RAM, indem du die dokumentierten Anforderungen des Betriebssystems, des Docker-Daemons und jeder App, die du betreiben willst, addierst, und lass dann Reserven für Lastspitzen.
Bei DreamHost hat unser Einstiegstarif für VPS Hosting, Stack 4, 4 GB RAM — ein Ausgangspunkt für einen kleinen Stack von Nebenprojekt-Containern wie Ghost oder n8n. Ob 4 GB ausreichen, hängt von den Apps ab, die du tatsächlich betreibst; wenn die Rechnung darüber hinauswächst, kannst du auf einen größeren Stack-Tarif wechseln.
Ist Portainer kostenlos?
Ja, sogar doppelt. Die Portainer Community Edition ist kostenlos und Open Source, ohne dass ein Lizenzschlüssel erforderlich ist. Die Portainer Business Edition (die Funktionen wie rollenbasierte Zugriffskontrolle hinzufügt) ist für bis zu 3 Knoten ebenfalls kostenlos, mit vollem Funktionsumfang und ohne Zeitlimit; statt zu bezahlen, registrierst du dich für einen kostenlosen Lizenzschlüssel. Ab mehr als drei Knoten beginnt die Business-Preisgestaltung laut Portainers Preisseite im Starter-Tarif bei 105 $/Monat (Stand: August 2026), und eine Home & Student-Lizenz für 155 $/Jahr deckt nicht kommerzielle Homelabs mit bis zu 15 Knoten ab.
Kann Portainer mehrere Docker-Hosts verwalten?
Ja, Portainer verwaltet mehrere Docker-Hosts über Agents und Edge Agents. Der Standard-Agent lauscht auf jedem entfernten Host auf Port 9001; Edge Agents bauen stattdessen eine ausgehende Verbindung zum Tunnel-Port 8000 des Portainer Servers auf und benötigen laut Portainers Anforderungsdokumentation selbst keine offenen eingehenden Ports. Für Selbsthoster mit einem einzelnen VPS ist nichts davon nötig — deshalb lässt die Installation in diesem Leitfaden das Flag für Port 8000 weg, das Portainers offizieller Befehl enthält. An dem Tag, an dem du eine entfernte Umgebung über einen Edge Agent verbindest, stellst du Portainer mit zusätzlichem -p 8000:8000 neu bereit und erlaubst dann Container-Port 8000 durch UFW von der öffentlichen ausgehenden IP jedes Edge Agents, wobei du hier EDGE_AGENT_IP ersetzt: sudo ufw route allow proto tcp from EDGE_AGENT_IP to any port 8000.
Umgeht Docker UFW auf einem VPS?
Ja, Docker umgeht UFW standardmäßig, weil Docker den Containerverkehr auf der iptables-NAT-Ebene verwaltet, die vor den INPUT- und OUTPUT-Ketten von UFW liegt.
Laut der Dokumentation zur Paketfilterung von Docker „werden Pakete umgeleitet, bevor sie die INPUT- und OUTPUT-Ketten erreichen, die UFW verwendet.“ Die Lösung besteht darin, deine Regeln zur DOCKER-USER iptables-Kette hinzuzufügen, und ein Community-Tool, um UFW darin einzubinden, ist chaifeng/ufw-docker — in diesem Leitfaden in Schritt 4 installiert, bevor Portainer überhaupt startet.

Besitze deinen gesamten Stack. Apps, KI, Datenbanken und mehr.
Behalte alle Zugangsdaten und Unterhaltungen auf einem Server, den du selbst kontrollierst – mit NVMe-Geschwindigkeit und unbegrenzter Bandbreite serienmäßig.
VPS-Hosting-Tarife entdecken