Docker-Weboberfläche: Portainer, Dockge und Coolify

Linux 21 Min. Lesezeit

Docker lässt sich grundsätzlich über die Befehlszeile steuern: docker ps, docker compose up -d, docker logs. Wenn auf einem Server mehrere Anwendungen in Containern laufen, finden es viele Nutzer bequemer, die Container, Protokolle und Compose-Dateien über einen Webbrowser einzusehen und zu bearbeiten. Hierfür gibt es drei beliebte Tools, die auf einem eigenen Server installiert werden können:

  • Portainer CE: Allgemeine Docker-Verwaltungsoberfläche. Container, Images, Volumes, Netzwerke und Compose-Stacks an einem Ort.
  • Dockge: eine kleine, einfache Benutzeroberfläche speziell für Docker-Compose-Stacks. Die Compose-Dateien verbleiben auf der Festplatte und können weiterhin über die Befehlszeile verwaltet werden.
  • Coolify: Ein auf einem eigenen Server laufendes PaaS (nach dem Vorbild von Heroku, Vercel oder Netlify). Es erstellt und installiert Anwendungen aus einem Git-Repository, startet Datenbanken und richtet Domains sowie HTTPS ein.

Alle drei lassen sich problemlos auf einem Linux-basierten KVM-VPS einsetzen. Für Portainer und Dockge muss zunächst Docker installiert werden (siehe: Installation von Docker unter Ubuntu, Debian und AlmaLinux), während Coolify Docker selbst installiert. Die Struktur der Compose-Dateien wird im Artikel Verwendung von Docker Compose erläutert.

Wir haben die Schritte im November 2026 auf virtuellen Maschinen mit Ubuntu 24.04 (x86_64) unter Docker Engine 29.9.3 und Docker Compose 5.7.0 sowie mit den Versionen Portainer CE 2.45.3 LTS, Dockge 1.5.0 und Coolify 4.6.0 getestet. Führen Sie die Befehle mit sudo oder als Root-Benutzer aus.

Wann ist eine Weboberfläche hilfreich und wann stellt sie ein Risiko dar?

Dies ist hilfreich, wenn:

  • Auf dem Server laufen mehrere Compose-Anwendungen, und Sie möchten schnell sehen, welche davon laufen, welche gestoppt wurden und wie viel Arbeitsspeicher sie belegen;
  • Sie möchten über Ihren Browser auf die Protokolle, die Container-Konsole oder die Bearbeitung einer Compose-Datei zugreifen;
  • Auch Kollegen, die sich mit der Befehlszeile nicht so gut auskennen, verwalten den Server;
  • Sie möchten automatisch aus einem Git-Repository installieren (dies ist das Fachgebiet von Coolify).

Risiko, weil:

  • Der Docker-Socket bedeutet Root-Zugriff. Alle drei Tools steuern Docker über die Datei /var/run/docker.sock. Wer sich Zugang zur Oberfläche verschafft, kann einen Container starten, der das gesamte Dateisystem des Servers einbindet, d. h., er erhält praktisch Root-Rechte auf dem Server. Ein Portainer oder Dockge mit schwachem Passwort, der über das Internet zugänglich ist, ist genauso gefährlich wie ein SSH-Root-Zugang ohne Passwort;
  • Docker umgeht die Firewall. Die veröffentlichten Ports (-p 9443:9443) werden von Docker mit eigenen iptables-Regeln geöffnet. Bei aktivierter ufw im Test (nur SSH zugelassen) blieben der Port 9443 von Portainer und der Port 5001 von Dockge auch von außen erreichbar, die an 127.0.0.1 gebundenen Ports hingegen nicht. Details: Wie richte ich eine Firewall auf meinem VPS ein?;
  • Wer sich als Erster anmeldet, wird zum Systemadministrator. Alle drei Tools legen den Systemadministrator beim ersten Aufruf an; wer dem zuvorkommt, übernimmt den Server. Richten Sie daher das Konto unmittelbar nach der Installation ein.

Wenn Sie nur ein oder zwei Container betreiben und mit der Befehlszeile zurechtkommen, benötigen Sie keine Weboberfläche: Je weniger Dienste laufen, desto geringer ist die Angriffsfläche.

Vergleich

  Portainer CE Dockge Coolify
Was ist das? Allgemeiner Docker-Manager Compose-Stack-Manager PaaS mit eigenem Server
Lizenz zlib (Open Source); die Business Edition ist kostenpflichtig MIT Apache 2.0
Speicherauslastung im Test ca. 25 MB ca. 135 MB ca. 500 MB (Coolify, PostgreSQL, Redis, Traefik, Sentinel)
Systemanforderungen Jeder VPS, auf dem Docker ausgeführt wird Jeder VPS, auf dem Docker ausgeführt wird Laut Dokumentation sind mindestens 2 CPU-Kerne und 2 GB RAM erforderlich; das Installationsprogramm gibt bei weniger als 30 GB Festplattenspeicher eine Warnung aus.
Ports 9443 (HTTPS), 8000 (Edge-Agenten, kann weggelassen werden) 5001 (HTTP) 8000 (Webinterface), 6001, 6002 sowie die Proxy-Ports: 80, 443 (TCP und UDP), 8080
Speicherort der Compose-Dateien Im Portainer-Volume (/data/compose/<Nummer>/) Auf der Festplatte unter /opt/stacks/<Name>/compose.yaml Unter /data/coolify/, von Coolify verwaltet
Mehrere Server Ja (mit Agenten) Ja (Dockge Agents, Beta) Ja (über SSH)
Zweistufige Authentifizierung In den CE-Einstellungen konnten wir dies nicht finden Keine Verfügbar (TOTP und Passkey)
Für wen ist das geeignet? Für alle, die in Docker alles sehen und per Mausklick verwalten möchten Wer mit Compose-Dateien arbeitet und eine schlanke Oberfläche dafür wünscht Wer eine Installation aus einem Git-Repository mit Domain und HTTPS mit geringem manuellem Aufwand durchführen möchte

Alle drei Container-Images sind nicht nur für x86_64, sondern auch in einer arm64 (ARM)-Version verfügbar; Portainer und Dockge sind darüber hinaus auch für 32-Bit-ARM (armv7) erhältlich. Wir haben sie auf ARM noch nicht getestet.

Portainer und Dockge lassen sich auf einem Server nebeneinander betreiben (im Test liefen sie gemeinsam) und erkennen auch die Stacks des jeweils anderen: Portainer kennzeichnet Stacks, die nicht von ihm selbst gestartet wurden, mit dem Vermerk „Limited“ und verwaltet diese nur eingeschränkt. Coolify hingegen belegt sowohl Port 80 als auch Port 443 für seinen eigenen Proxy; daher ist es für einen leeren Server vorgesehen, ohne anderen Webserver oder Nginx Proxy Manager.

Zugriff über einen SSH-Tunnel

Am sichersten ist es, wenn der Port des Verwaltungsportals nur auf die lokale Adresse des Servers (127.0.0.1) lauscht und Sie von Ihrem eigenen Rechner aus über einen SSH-Tunnel darauf zugreifen. Auf diese Weise ist das Portal vom Internet aus überhaupt nicht sichtbar, es muss kein Port in der Firewall geöffnet werden, und die Anmeldung wird durch den SSH-Schlüssel geschützt. Auf Ihrem eigenen Rechner:

ssh -N -L 9443:127.0.0.1:9443 -L 5001:127.0.0.1:5001 felhasznalo@szerver-ip

Solange dieser Befehl ausgeführt wird, werden Portainer unter https://localhost:9443 und Dockge unter http://localhost:5001 im Browser geöffnet. Aufgrund des Parameters -N wird keine Befehlszeile geöffnet; mit Strg+C schließen Sie den Tunnel. Wenn Sie diesen Befehl häufig verwenden, fügen Sie die LocalForward-Zeilen in die SSH-Konfigurationsdatei ein. Sollten Sie die Oberfläche dennoch über eine Domain und HTTPS erreichen wollen, stellen Sie sie hinter einen Reverse-Proxy (z. B. Nginx Proxy Manager) mit einem sicheren Passwort und möglichst einer Beschränkung nach IP-Adresse.

Die folgenden Befehle binden daher die Ports von Portainer und Dockge an die Adresse 127.0.0.1. Wenn Sie direkt über die IP-Adresse des Servers auf die Oberfläche zugreifen möchten, lassen Sie das Präfix 127.0.0.1: weg; beachten Sie jedoch in diesem Fall die oben genannten Risiken.

Portainer CE

Installation

Die Portainer-Daten (Benutzer, Einstellungen, im Portal erstellte Stacks) werden in ein benanntes Volume gespeichert:

sudo docker volume create portainer_data
sudo docker run -d -p 127.0.0.1:9443:9443 --name portainer --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:lts

Das lts-Tag bezieht sich auf den Long-Term-Support-Zweig (im Test 2.45.3 LTS), das sts-Tag auf den häufiger aktualisierten Short-Term-Support-Zweig. Der offizielle Befehl veröffentlicht auch den Port 8000 (-p 8000:8000): Dies ist nur für Edge-Agenten erforderlich, mit denen sich entfernte, hinter NAT liegende Rechner mit Portainer verbinden lassen. Bei der Verwaltung eines einzelnen Servers kann dies weggelassen werden. Den HTTP-Port 9000 veröffentlicht Portainer standardmäßig nicht.

Das Gleiche mit Docker Compose, beispielsweise in der Datei /opt/portainer/compose.yaml:

services:
  portainer:
    container_name: portainer
    image: portainer/portainer-ce:lts
    restart: always
    ports:
      - "127.0.0.1:9443:9443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data

volumes:
  portainer_data:
    name: portainer_data
cd /opt/portainer
sudo docker compose up -d

Portainer startet mit einem selbstsignierten Zertifikat, weshalb der Browser beim ersten Aufruf eine Warnung anzeigt; diese können Sie über einen SSH-Tunnel bedenkenlos akzeptieren.

Erste Anmeldung: Installationstoken und 5-minütiges Zeitlimit

Laut Dokumentation ist seit Portainer 2.43 (bzw. 2.39.4 LTS) für die Erstellung des ersten Systemadministrators zusätzlich ein Installationstoken erforderlich, das Portainer in sein Protokoll schreibt:

sudo docker logs portainer 2>&1 | grep setup_token
setup_token=78c3eb02...

Rufen Sie die Adresse https://localhost:9443 auf, geben Sie den Namen des Systemadministrators (standardmäßig admin), ein Passwort mit mindestens 12 Zeichen und das Token ein und klicken Sie anschließend auf die Schaltfläche Create user.

Das Formular, das beim ersten Start von Portainer angezeigt wird: Benutzername, Passwort, Passwortbestätigung und das Feld für den Installationstoken

Sie haben dafür 5 Minuten Zeit. Wenn Sie den Benutzer nicht innerhalb von 5 Minuten nach dem Start des Containers anlegen, blockiert Portainer die Installation aus Sicherheitsgründen. Im Test lief der Container zwar weiter, doch auf der Benutzeroberfläche wurde folgende Meldung angezeigt: „Your Portainer instance timed out for security purposes“. Starten Sie in diesem Fall den Container neu und rufen Sie das neue Token aus dem Protokoll ab:

sudo docker restart portainer
sudo docker logs portainer 2>&1 | grep setup_token | tail -1

Nach der Anmeldung bietet Portainer an, Edge Compute zu aktivieren (Skip); anschließend wählt Get Started auf dem Bildschirm Environment Wizard das lokale Docker aus. Auf der Seite Home gelangen Sie durch Klicken auf die Umgebung local zum Control Panel.

Das Portainer-Control-Panel mit der lokalen Docker-Umgebung: Anzahl der Stacks, Container, Images, Volumes und Netzwerke

Das Menü Containers enthält eine Liste der Container. Über die Symbole am Ende der Zeilen können Sie das Protokoll, die Details, die Ressourcenauslastung und die Konsole aufrufen; mit den Schaltflächen oben können Sie die ausgewählten Container starten, stoppen, neu starten oder löschen.

Die Containerliste von Portainer mit vier laufenden Containern: Status, Stack, Image, Erstellungszeitpunkt, IP-Adresse und veröffentlichte Ports

Der erste Stack

Eine Compose-Anwendung wird in Portainer als „Stack“ bezeichnet. Geben Sie auf der Seite Stacks › Add stack einen Namen für den Stack ein (z. B. nginx-demo), wählen Sie als Build method die Option Web editor aus und fügen Sie die Compose-Datei ein:

services:
  web:
    image: nginx:alpine
    restart: unless-stopped
    ports:
      - "127.0.0.1:8081:80"

Die Seite zur Erstellung eines Stacks in Portainer: Name des Stacks, Auswahl des Web-Editors und eingefügte Compose-Datei

Über die Schaltfläche Deploy the stack am Ende der Seite wird das Image heruntergeladen und der Container gestartet. Portainer speichert die Compose-Datei in seinem eigenen Volume (im Test unter /data/compose/1/docker-compose.yml) und nicht in einem von Ihnen gewählten Verzeichnis. Verwenden Sie hier daher keine relativen Volume-Pfade (./data:/app/data), sondern geben Sie entweder ein benanntes Volume oder einen vollständigen Pfad (/srv/app/data:/app/data) an.

Aktualisierung eines Stacks: Ändern Sie die Datei auf der Stack-Seite auf der Registerkarte Editor oder lassen Sie sie unverändert und klicken Sie anschließend auf Update the stack. Im daraufhin angezeigten Fenster lädt Portainer mit dem Schalter Re-pull image and redeploy auch die neueste Version der Images herunter.

Aktualisierung und Deinstallation von Portainer

Ein Update von Portainer bedeutet die Neuerstellung des Containers; die Daten bleiben im Volume portainer_data erhalten (im Test war es nach dem Update möglich, sich mit dem alten Passwort und ohne Installationstoken anzumelden):

sudo docker stop portainer
sudo docker rm portainer
sudo docker pull portainer/portainer-ce:lts
sudo docker run -d -p 127.0.0.1:9443:9443 --name portainer --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:lts

Mit Compose: cd /opt/portainer && sudo docker compose pull && sudo docker compose up -d.

Deinstallation:

sudo docker rm -f portainer
sudo docker volume rm portainer_data

Die mit Portainer gestarteten Stacks laufen danach weiter, ihre Compose-Dateien werden jedoch zusammen mit dem Volume gelöscht. Sichern Sie diese daher zuvor (über die Schaltfläche Copy auf der Registerkarte Editor des Stacks oder aus dem Ordner compose des Volumes).

Dockge

Dockge ist ein Tool des Entwicklers von Uptime Kuma. Jeder Stack ist ein Ordner unter /opt/stacks, der die Dateien compose.yaml und .env enthält. Die Benutzeroberfläche bearbeitet diese Dateien und führt den Befehl docker compose aus, sodass derselbe Stack auch über die Befehlszeile verwaltet werden kann und auch ohne Dockge funktioniert.

Installation

sudo mkdir -p /opt/stacks /opt/dockge
cd /opt/dockge
sudo curl -fsSL https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml -o compose.yaml

Die heruntergeladene Datei veröffentlicht den Port 5001 von Dockge unter allen Adressen. Wenn Sie über einen SSH-Tunnel darauf zugreifen möchten, ändern Sie die Zeile unter ports in 127.0.0.1:5001:5001, beispielsweise wie folgt:

sudo sed -i 's/- 5001:5001/- 127.0.0.1:5001:5001/' compose.yaml
sudo docker compose up -d

Die Datei bindet den Docker-Socket, das eigene Datenverzeichnis von Dockge (./data) sowie das Verzeichnis /opt/stacks ein. Wenn Sie die Stacks in einem anderen Verzeichnis speichern möchten, ändern Sie bitte sowohl die Variable DOCKGE_STACKS_DIR als auch die Volume-Einträge so, dass auf beiden Seiten des Volumes derselbe vollständige Pfad angegeben ist (z. B. /srv/stacks:/srv/stacks); andernfalls werden die Daten der Stacks am falschen Ort abgelegt.

Dockge wird ohne Verschlüsselung über HTTP bereitgestellt; nutzen Sie es im Internet daher nur über einen SSH-Tunnel oder hinter einem HTTPS-Reverse-Proxy.

Erster Login und der erste Stack

Unter der Adresse http://localhost:5001 wird Dockge in der Sprache Ihres Browsers angezeigt, also auch auf Ungarisch. Geben Sie auf der ersten Seite (Administrator-Benutzer anlegen) einen Benutzernamen und ein sicheres Passwort ein. Da hierfür keine zeitliche Begrenzung gilt, richten Sie das Konto bitte unmittelbar nach der Installation ein.

Um einen neuen Stack zu erstellen, klicken Sie auf die Schaltfläche Erstellen, geben Sie im Feld Stack-Name einen Namen in Kleinbuchstaben ein (z. B. uptime-kuma) und fügen Sie die Compose-Datei in den Editor auf der rechten Seite ein:

services:
  uptime-kuma:
    image: louislam/uptime-kuma:2
    restart: unless-stopped
    ports:
      - 127.0.0.1:3001:3001
    volumes:
      - ./data:/app/data

Der Stack-Editor von Dockge mit ungarischer Benutzeroberfläche: der Name des Stacks, die Liste der Container und auf der rechten Seite der Editor für die Datei compose.yaml

Die Schaltfläche Installieren speichert die Datei unter /opt/stacks/uptime-kuma/compose.yaml und startet den Stack; Speichern speichert die Datei lediglich. Die Ausgabe des Downloads und des Startvorgangs wird in Echtzeit angezeigt. Auf der Seite des laufenden Stacks stehen die Schaltflächen Bearbeiten, Neustart, Aktualisieren und Beenden sowie das Container-Protokoll zur Verfügung; über die Schaltfläche Bash können Sie die Befehlszeile des Containers aufrufen. Aktualisieren lädt gemäß der Dokumentation die neue Version der Images herunter und startet den Stack damit neu.

Ein laufender Stack in Dockge: aktiver Status, Zustand und Port des Containers, das Container-Protokoll sowie die Datei compose.yaml

Der relative Pfad (./data) bezieht sich hier auf das Stack-Verzeichnis, sodass die Daten von Uptime Kuma im Verzeichnis /opt/stacks/uptime-kuma/data abgelegt werden. Das Feld In Compose umwandeln auf dem Hauptbildschirm wandelt einen docker run-Befehl in eine Compose-Datei um, während der Menüpunkt Stack-Verzeichnis einlesen im Menü oben rechts die manuell unter /opt/stacks kopierten Stacks in die Liste aufnimmt.

Dasselbe über die Befehlszeile:

cd /opt/stacks/uptime-kuma
sudo docker compose ps
sudo docker compose logs -f

Aktualisierung und Deinstallation von Dockge

cd /opt/dockge
sudo docker compose pull
sudo docker compose up -d

Deinstallation: cd /opt/dockge && sudo docker compose down, und wenn Sie es nicht mehr benötigen: sudo rm -rf /opt/dockge. Die Stacks laufen weiter (im Test lief „Uptime Kuma“ auch nach dem Beenden von „Dockge“ weiter), und ihre Compose-Dateien verbleiben unter /opt/stacks.

Die aktuellste Version von Dockge ist 1.5.0 (März 2025); der Quellcode wird seitdem weiterhin aktualisiert, zum Zeitpunkt des Tests war jedoch keine neue Version erschienen. Eine zweistufige Authentifizierung ist nicht enthalten. Auf der Seite Einstellungen › Sicherheit deaktiviert die Option Authentifizierung deaktivieren den Passwortschutz vollständig: Verwenden Sie diese Option nur, wenn vor Dockge eine weitere Authentifizierungsebene (z. B. ein Reverse-Proxy mit Passwort) geschaltet ist.

Coolify

Coolify verwaltet nicht nur Docker: Es erstellt Anwendungen aus Git-Repositorys, Dockerfiles, Compose-Dateien oder fertigen Images, startet und sichert Datenbanken und weist den Anwendungen über seinen eigenen Traefik-Proxy eine Domain sowie ein Let’s-Encrypt-Zertifikat zu. Eine Coolify-Instanz kann über SSH mehrere Server verwalten.

Bevor Sie die Installation durchführen

  • Installieren Sie das Programm auf einem leeren Server. Coolify belegt die Ports 80 und 443 für seinen eigenen Proxy; installieren Sie das Programm daher nicht auf einem Server, auf dem bereits ein Webserver, der Nginx Proxy Manager oder eine andere Anwendung läuft.
  • Systemanforderungen. Laut Dokumentation sind mindestens 2 CPU-Kerne, 2 GB RAM und 10 GB freier Festplattenspeicher erforderlich. Das Installationsprogramm ist jedoch strenger: Bei einer Festplatte mit weniger als 30 GB oder weniger als 20 GB freiem Speicherplatz gibt es eine Warnung (im Test wurde bei einer 29-GB-Festplatte eine Meldung angezeigt, bevor der Vorgang nach 5 Sekunden fortgesetzt wurde). Die eigenen Container von Coolify belegten im Test ca. 500 MB Arbeitsspeicher und ca. 3 GB Festplattenspeicher; hinzu kommen noch die Anwendungen und die Builds.
  • Unterstützte Systeme. Laut Dokumentation kann die Software auf Debian- und Ubuntu-basierten Systemen (bei Ubuntu die LTS-Versionen), Red Hat-basierten Systemen (AlmaLinux, Rocky Linux, Fedora) sowie auf SUSE-, Arch- und Alpine-Systemen installiert werden, und zwar auf x86_64- und arm64-Prozessoren.
  • Docker, das über Snap installiert wurde, ist nicht geeignet. Wenn Sie Docker unter Ubuntu über Snap installiert haben, entfernen Sie es bitte zunächst; das Installationsprogramm installiert es dann aus dem offiziellen Docker-Repository.
  • Root-SSH-Zugriff mit Schlüssel. Coolify verwaltet seinen eigenen Server ebenfalls über SSH als Root-Benutzer.

Installation

Das offizielle Installationsprogramm:

curl -fsSL https://cdn.coollabs.io/coolify/install.sh | sudo bash

Wenn Sie das Skript zunächst lesen möchten, laden Sie es herunter (curl -fsSL https://cdn.coollabs.io/coolify/install.sh -o install.sh), sehen Sie es sich an und führen Sie es anschließend mit dem Befehl sudo bash install.sh aus. Im Test führte das Skript neun Schritte in 2 Minuten und 43 Sekunden aus:

  1. hat die fehlenden Pakete installiert (curl, wget, git, jq, openssl);
  2. Es wurde überprüft, ob der OpenSSH-Server läuft und ob die Root-Anmeldung aktiviert ist (die Ubuntu-Standardeinstellung prohibit-password ist korrekt: nur mit Schlüssel);
  3. hat die Docker Engine (29.9.3) aus dem Docker-Repository installiert;
  4. die Datei /etc/docker/daemon.json erstellt: Protokollrotation (10 MB, 3 Dateien) und Adressbereich der Containernetzwerke (10.0.0.0/8, mit /24-Subnetzen);
  5. hat seine eigenen Dateien in den Ordner /data/coolify/source/ heruntergeladen;
  6. hat die Datei .env mit den geheimen Schlüsseln erstellt;
  7. Es wurde ein SSH-Schlüssel generiert und dessen öffentlicher Teil in die Datei /root/.ssh/authorized_keys geschrieben (mit dem Kommentar coolify);
  8. hat die Images heruntergeladen (Coolify, PostgreSQL, Redis, ein Hilfs-Image);
  9. hat Coolify gestartet.

Wissenswertes zum Adressbereich: Wenn der Server auch ein privates Netzwerk oder VPN mit der Adresse 10.x.x.x nutzt, kann es zu Konflikten mit den Docker-Netzwerken kommen. Der Installer akzeptiert über die Umgebungsvariable DOCKER_ADDRESS_POOL_BASE auch andere Adressbereiche.

Am Ende gibt das Skript die Adresse der Oberfläche http://<Server-IP>:8000 sowie zwei Hinweise aus: Der Systemadministrator muss innerhalb von 10 Minuten angelegt werden, und die Datei /data/coolify/source/.env sollte außerhalb des Servers (beispielsweise in einem Passwort-Manager) gespeichert werden, da die Backups ohne die geheimen Schlüssel nicht wiederhergestellt werden können.

Sie können auf die Oberfläche auch über einen SSH-Tunnel zugreifen (ssh -N -L 8000:127.0.0.1:8000 felhasznalo@szerver-ip, gefolgt von der URL http://localhost:8000). Port 6001 dient für Live-Aktualisierungen, Port 6002 für das Web-Terminal; sollten Sie diese ebenfalls benötigen, leiten Sie bitte auch diese weiter.

Der Systemadministrator und die Ersteinrichtung

Geben Sie auf der ersten Seite („Create the root account for this instance“) einen Namen, eine E-Mail-Adresse und ein Passwort mit mindestens 8 Zeichen ein, das Klein- und Großbuchstaben, Zahlen und Sonderzeichen enthält. Sollten Sie das Konto nicht innerhalb von 10 Minuten erstellen, führen Sie den Befehl sudo docker restart coolify aus und versuchen Sie es erneut. Nach der Erstellung wird die öffentliche Registrierung deaktiviert (Settings › Advanced: „Registration disabled“).

Der Startassistent (Welcome to Coolify, Continue) fragt nach dem Server. Bei der Option This machine wird der eigene Server von Coolify ausgewählt; daraufhin wird auch der Traefik-Proxy gestartet (im Test mit dem Image traefik:v3.7 auf den Ports 80, 443 und 8080). Der Port 8080 könnte vom Traefik-Dashboard genutzt werden, ist jedoch in der Standardeinstellung (--api.insecure=false) nicht erreichbar; im Test gab es darauf keine Reaktion; öffnen Sie ihn bitte nicht in der Firewall. Anschließend erstellt der Assistent das erste Projekt (My First Project) mit der Umgebung production. Der Assistent kann auch mit der Schaltfläche Skip setup übersprungen werden; der Server und das Projekt bleiben in diesem Fall erhalten.

Das Coolify-Control-Panel: das erste Projekt, der Localhost-Server im Status Ready und die zuletzt erfolgreich durchgeführte Installation

Installation der ersten Anwendung

In der Umgebung production des Projekts führt die Schaltfläche New Resource (bzw. in einer leeren Umgebung die Schaltfläche Add Resource) zur Ressourcenauswahl. Dort stehen folgende Optionen zur Auswahl:

  • Applications: öffentliches Git-Repository, privates Repository mit Deploy Key, über eine GitHub-, GitLab- oder Gitea-App (mit automatischer Installation nach jedem Push), Dockerfile, Docker Compose oder fertiges Docker-Image;
  • Databases: PostgreSQL, MySQL, MariaDB, Redis, KeyDB, Dragonfly, MongoDB, ClickHouse und (experimentell) SQLite;
  • Services: fast vierhundert Ein-Klick-Vorlagen, beispielsweise Uptime Kuma, n8n oder WordPress.

Der Ressourcen-Selektor von Coolify: öffentliche und private Git-Repositorys, GitHub-, GitLab- und Gitea-App, Dockerfile, Docker Compose und Docker-Images

Im Rahmen des Tests haben wir eine statische Seite aus der Coolify-Beispielsammlung installiert. Klicken Sie auf der Karte Public Git Repository auf die Schaltfläche Deploy, geben Sie die Adresse des Repositorys https://github.com/coollabsio/coolify-examples ein und wählen Sie anschließend Check Repository. Coolify ruft den Standard-Zweig ab und schlägt Ihnen die Art der Erstellung (Build pack) vor:

  • Railpack: Erkennt die Programmiersprache und das Framework (Node.js, PHP, Python, Go usw.) und erstellt ein Image ohne Dockerfile; dies ist die Standardeinstellung;
  • Nixpacks: der Vorgänger von Railpack; die Oberfläche kennzeichnet es bereits als veraltet (deprecated);
  • Static: statische Dateien, die über Nginx bereitgestellt werden;
  • Dockerfile und Docker Compose: basierend auf der Datei im Repository.

Base directory ist der Ordner innerhalb des Repositorys (im Test /static), Port ist der Port, auf dem die Anwendung im Container lauscht.

Einrichtung des Coolify-Git-Repositorys: Repository-Adresse, Check Repository, erkannte Dockerfiles und Compose-Dateien, Branch, Build-Pack, Ausgabetyp, Port und Basisverzeichnis

Nach dem Klicken auf Continue gelangen Sie zur Einstellungsseite der Anwendung, wo Sie über die Schaltfläche Deploy oben rechts den Build-Vorgang starten können. Im Test dauerte dies 23 Sekunden: Coolify lud das Repository herunter, erstellte das Image und startete den neuen Container mittels „Rolling Update“. Auf der Seite Deployment Logs können Sie jeden Schritt nachverfolgen.

Installationsprotokoll für Coolify: Herunterladen des Repositorys, Erstellen des Images auf Basis von nginx:alpine und Starten des neuen Containers

Die Anwendung erhält automatisch eine temporäre Adresse über den Dienst sslip.io http://<ID>.<Server-IP>.sslip.io, über die sie auch ohne Domain sofort getestet werden kann. Auf dem Bild ist anstelle der Server-IP-Adresse eine Beispieladresse zu sehen.

Eine in Coolify installierte Anwendung: die automatische sslip.io-Adresse im Bereich Public Access, der interne Hostname, das Docker-Netzwerk und der Port

Für eine eigene Domain sollten Sie gemäß der Dokumentation den A-Eintrag der Domain auf die IP-Adresse des Servers verweisen lassen und anschließend in der Einstellung Domains der Anwendung die Adresse mit dem Präfix https:// (z. B. https://app.pelda.hu) angeben; Traefik fordert daraufhin ein Let’s-Encrypt-Zertifikat dafür an. Diesen Schritt haben wir nicht getestet, da der Testrechner nicht über eine öffentliche IP-Adresse erreichbar war. Laut Dokumentation können die Ports 8000, 6001 und 6002 in der Firewall geschlossen werden, wenn Sie der Coolify-Oberfläche ebenfalls eine Domain zuweisen; die Oberfläche ist danach über Port 443 (HTTPS) erreichbar.

Sicherheit und Updates

  • Zwei-Faktor-Authentifizierung: Aktivieren Sie diese im Benutzermenü unten links auf der Seite Profile unter Two-factor authentication › Configure 2FA (mit einer Authentifizierungs-App). Passkeys können nur auf HTTPS-Domains oder unter der Adresse localhost verwendet werden, nicht jedoch über eine IP-Adresse.
  • Aktualisierung: Auf der Seite Settings › Updates war die Option Automatic updates nach einer frischen Installation aktiviert, sodass Coolify automatisch aktualisiert wird. Wenn Sie diese Option deaktivieren, kann die Aktualisierung an derselben Stelle über die Benutzeroberfläche gestartet werden. Laut Dokumentation kann die Aktualisierung über die Befehlszeile mit dem Skript upgrade.sh unter Angabe der Zielversion durchgeführt werden; das erneute Ausführen von install.sh zur Aktualisierung wird nicht empfohlen.
  • Telemetrie: Auf der Seite Settings › Advanced ist Anonymous telemetry standardmäßig aktiviert; dort kann sie auch deaktiviert werden.
  • Firewall: Lassen Sie in der Firewall des Anbieters bzw. auf dem Server nur die Ports 22 (SSH), 80 und 443 offen, die Ports 8000, 6001 und 6002 nur so lange, wie die Oberfläche noch keine Domain hat. Bitte beachten Sie, dass ufw die von Docker veröffentlichten Ports nicht sperrt.

Entfernung von Coolify

Wir haben die in der Dokumentation beschriebenen Schritte im Test durchlaufen. Durch die Deinstallation von Coolify werden die damit installierten Anwendungen und Datenbanken nicht gelöscht; diese laufen weiter (ohne den Proxy funktionieren ihre Domains jedoch nicht). Erstellen Sie zunächst eine Sicherungskopie und gehen Sie dann wie folgt vor:

sudo docker rm -f coolify coolify-db coolify-redis coolify-sentinel coolify-proxy
sudo docker volume rm coolify-db coolify-redis
sudo docker network rm coolify
sudo rm -rf /data/coolify

Im Test blieb auch ein Container namens coolify-proxy-error-pages übrig; bitte löschen Sie diesen separat (sudo docker rm -f coolify-proxy-error-pages). Der Befehl docker network rm coolify gibt so lange eine Fehlermeldung aus („network coolify has active endpoints“), wie ein mit Coolify installierter Anwendungscontainer mit dem Netzwerk verbunden ist: Bitte löschen Sie diese zunächst oder verschieben Sie sie. Die Images können Sie anhand der Liste von sudo docker images löschen, und den SSH-Schlüssel von Coolify können Sie widerrufen, indem Sie die auf coolify endende Zeile in der Datei /root/.ssh/authorized_keys löschen.

Alternativen

Diese Tools haben wir nicht getestet; die Beschreibung basiert auf ihrer Dokumentation.

  • Dokploy: eine PaaS-Lösung mit eigenem Server, ähnlich wie Coolify (Traefik-Proxy, Installation aus Git-Repository, Datenbanken, mehrere Server mit Docker Swarm).
  • Komodo: Verwaltung von Docker-Containern und Compose-Stacks auf mehreren Servern über eine einzige Oberfläche, auch aus einem Git-Repository heraus (GPL-3.0-Lizenz).
  • Yacht: eine einfache, auf Vorlagen basierende Docker-Oberfläche; prüfen Sie vor der Installation, wie aktiv die Weiterentwicklung ist.
  • Cockpit und cockpit-podman: Der webbasierte Server-Manager für Red-Hat-basierte Systeme (AlmaLinux, Rocky Linux) (standardmäßig auf Port 9090) mit einem Plugin zur Verwaltung von Podman-Containern (sudo dnf install cockpit cockpit-podman). Er verwaltet Podman, nicht die Docker Engine.

Für welche Option sollten Sie sich entscheiden?

  • Portainer CE, wenn Sie alle Komponenten von Docker (Container, Images, Volumes, Netzwerke) auf einer einzigen Oberfläche anzeigen und verwalten möchten und es Ihnen nichts ausmacht, dass die auf der Oberfläche erstellten Stacks im Portainer-Volume gespeichert sind.
  • Dockge ist ideal, wenn Sie mit Compose-Dateien arbeiten und lediglich eine einfache, schnelle Benutzeroberfläche dafür wünschen, ohne die die Stacks genauso gut funktionieren. Es läuft auch auf kleinen Rechnern.
  • Coolify, wenn Sie eine Installation aus einem Git-Repository vornehmen möchten – mit automatischem HTTPS, Datenbanken und Backups – und dafür einen ganzen Server bereitstellen.

Portainer und Dockge laufen bereits auf dem kleinsten VPS neben Docker; der Speicherbedarf wird durch die jeweiligen Anwendungen bestimmt. Für Coolify werden mindestens 4 GB Arbeitsspeicher und 40 GB Festplattenspeicher empfohlen, beispielsweise das AMD-VPS-4-Paket (2 vCPU, 4 GB, 40 GB NVMe), da das Erstellen der Images zusätzlich zu den eigenen Containern ebenfalls Arbeitsspeicher und Festplattenspeicher beansprucht. Ein praktisches Beispiel für die Installation einer Anwendung mit Docker Compose finden Sie in unserer Anleitung zur Installation von n8n auf einem VPS.

Zurück: Linux-Artikel (76)