Plane ist ein Open-Source-Werkzeug für Projektmanagement - Issues, Cycles, Module und Pages, im selben Feld wie Jira und Linear - und gehört zu den schwergewichtigeren Anwendungen, die man auf einen kleinen VPS stellen kann. Die Community Edition bringt einen Stack aus dreizehn Containern mit. Der interessante Teil dieser Anleitung ist deshalb die richtige Dimensionierung des Servers, nicht das Tippen von docker compose up.
Warum Plane selbst hosten?
Der gehostete Tarif rechnet pro Nutzer ab. Selbsthosting streicht diese Kosten und hält Issue-Historie, Anhänge und Projektdaten auf einer Infrastruktur, die dir gehört - was zählt, wenn im Issue-Tracker Kundennamen, Sicherheitslücken oder unveröffentlichte Roadmap-Punkte stehen. Die Community Edition steht unter AGPL-3.0, du kannst sie also ohne Lizenzgebühr im Unternehmen betreiben.
Der Preis dafür ist real: Upgrades, Backups und die Postgres-Instanz liegen bei dir. Wenn niemand im Team diese Aufgabe übernehmen will, ist die gehostete Variante die ehrlichere Antwort.
Voraussetzungen
Die Dokumentation von Plane nennt die Anforderungen unmissverständlich:
- 2 CPU-Kerne, x64/AMD64 oder AArch64/ARM64
- Mindestens 4 GB RAM, 8 GB empfohlen für den Produktivbetrieb
- Ubuntu, Debian, CentOS oder Amazon Linux 2/2023
- Docker Engine 20.10+ und Docker Compose v2
- Erreichbare Ports 80 und 443 sowie eine auf den Server zeigende Domain
Diese 4-GB-Grenze ist kein Puffer. Der Stack fährt web, admin, space, api, worker, beat-worker, migrator, live, einen Proxy sowie postgres:15.7-alpine, valkey/valkey:7.2.11-alpine, rabbitmq:3.13.6-management-alpine und minio/minio hoch. Dreizehn Container im Leerlauf belegen den größten Teil von 4 GB, bevor sich der erste Nutzer anmeldet.
Falls du noch einen Server brauchst: Contabo, Hetzner Cloud und DigitalOcean haben Tarife, die die Hürde nehmen - siehe die Tabelle unten und unseren vollständigen VPS-Vergleich.
Schritt 1: Einen Tarif mit mehr als 4 GB wählen
Hier scheitern die meisten Plane-Installationen. Der günstigste Tarif hat bei fast jedem Anbieter 1 GB RAM - ein Viertel dessen, was Plane dokumentiert verlangt.
| Tarif | vCPU / RAM / Speicher | Preis | Urteil für Plane |
|---|---|---|---|
| Contabo Cloud VPS 4 | 4 / 8 GB / 100 GB SSD | 5,50 EUR/Mo netto | Erfüllt die empfohlenen 8 GB |
| Hetzner CX33 | 4 / 8 GB / 80 GB NVMe | 8,49 EUR/Mo netto | Erfüllt die empfohlenen 8 GB |
| Hetzner CX23 | 2 / 4 GB / 40 GB NVMe | 5,49 EUR/Mo netto | Genau das Minimum; für ein kleines Team ausreichend |
| DigitalOcean Einstiegs-Droplet | 1 / 1 GB / 25 GB | 6 USD/Mo | Zu klein - darauf läuft Plane nicht |
Setze Ubuntu 24.04 LTS auf, lege dann einen Nutzer ohne Root-Rechte an und aktiviere die Firewall:
sudo apt update && sudo apt upgrade -y
sudo adduser plane
sudo usermod -aG sudo plane
sudo ufw allow OpenSSH && sudo ufw allow 80 && sudo ufw allow 443
sudo ufw enable
Schritt 2: Docker installieren
Plane benötigt Compose v2. Installiere aus dem Repository von Docker, damit du docker-compose-plugin bekommst und nicht das abgekündigte v1-Skript:
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
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker $USER
Melde dich ab und wieder an, dann prüfe die Version:
docker compose version
Schritt 3: DNS zuerst auf den Server zeigen lassen
Erledige das, bevor du den Installer startest. Er fragt während der Einrichtung nach deiner Domain und schreibt sie in WEB_URL und CORS_ALLOWED_ORIGINS. Löst DNS noch nicht auf, schlägt die Zertifikatsausstellung fehl und du editierst hinterher Umgebungsdateien.
Lege einen A-Record für plane.example.com auf die IP-Adresse des VPS an und warte, bis er auflöst:
dig +short plane.example.com
Schritt 4: Den offiziellen Installer ausführen
Plane liefert ein einzelnes Installationsskript, das fertige Images zieht und eine verwaltete docker-compose.yaml schreibt:
curl -fsSL https://prime.plane.so/install/ | sh -
Das Skript fragt nach deiner Domain und bietet dann Express (Standardwerte) oder Advanced (einzelne Variablen setzbar) an. Für die erste Installation ist Express richtig. Danach läuft Plane auf den Ports 80 und 443, gesteuert über LISTEN_HTTP_PORT und LISTEN_HTTPS_PORT.
Eine Anmerkung zum Repository: Die docker-compose.yml im GitHub-Repo baut jeden Dienst aus dem Quellcode, statt Images zu ziehen. Das ist ein Workflow für Mitwirkende - ein Build braucht deutlich mehr RAM als der laufende Betrieb und wird auf einem 4-GB-VPS scheitern oder ins Swapping laufen. Nimm den Installer.
Rufe https://plane.example.com auf und lege das erste Konto an. Dieses Konto wird Administrator der Instanz; das Admin-Panel liegt unter /god-mode/, wo du SMTP, Registrierungsbeschränkungen und Authentifizierung konfigurierst.
Schritt 5: Die Teile sichern, auf die es ankommt
Zwei Dinge halten deine Daten: das PostgreSQL-Volume und das MinIO-Volume, in dem jeder Dateianhang liegt. Ein Snapshot des VPS deckt beides ab, aber ein Datenbank-Dump, den du gezielt zurückspielen kannst, ist Gold wert:
docker exec plane-db pg_dump -U plane plane | gzip > plane-$(date +%F).sql.gz
Kopiere den Dump vom Server herunter. Ein Backup, das auf der gesicherten Platte liegt, ist kein Backup.
VPS-Optionen für das Selbsthosting von Plane im Vergleich
| Anbieter | Einstiegstarif ab 4 GB | Preis (pro Monat) | Anmerkungen | Link |
|---|---|---|---|---|
| Contabo | Cloud VPS 4 - 4 vCPU, 8 GB, 100 GB SSD | 5,50 EUR netto | Günstigster Weg zu den empfohlenen 8 GB | Contabo |
| Hetzner Cloud | CX23 - 2 vCPU, 4 GB, 40 GB NVMe | 5,49 EUR netto | Erfüllt das Minimum; CX33 für 8,49 mit 8 GB | Hetzner |
| DigitalOcean | 2 vCPU, 4 GB, 80 GB SSD | 24 USD | Teurer, aber Doku und Snapshots sind hier am besten | DigitalOcean |
| Vultr | 2 vCPU, 4 GB, 80 GB SSD | 20 USD | Der günstigste der drei; große Regionsauswahl | Vultr |
| Linode (Akamai) | 2 vCPU, 4 GB, 80 GB SSD | 24 USD | Vorhersehbare Leistung, starke API | Linode |
Das Muster ist schwer zu übersehen: Die US-Anbieter verlangen 20 bis 24 USD für die 4-GB-Stufe, ungefähr das Drei- bis Vierfache des europäischen Gegenstücks. Für einen selbst gehosteten Issue-Tracker, der ohnehin ein Büro in einer Region bedient, ist dieser Abstand schwer zu rechtfertigen.
Das gesamte Feld findest du in unserem vollständigen VPS-Vergleich.
Wo Teams hängen bleiben
Dimensionierung nach der Produktseite statt nach der Doku. Plane sieht aus wie eine Web-App, verhält sich aber wie eine kleine Plattform. Vier GB sind die Untergrenze, nicht das Ziel.
SMTP überspringen. Ohne konfigurierten Mailversand in /god-mode/ kommen Einladungen nie an und du kannst niemanden in den Workspace holen. Richte das vor dem Onboarding ein.
MinIO im Backup vergessen. Nur Postgres zu sichern liefert dir jedes Issue und jeden Kommentar - ohne einen einzigen Anhang.
Plane lohnt den Aufwand, wenn dein Team ohnehin in einem Issue-Tracker lebt und nicht pro Kopf dafür zahlen möchte. Dimensioniere den Server ordentlich, lege die Backups woanders ab, und der Dienst läuft unauffällig vor sich hin.
Weitere Projekte und Tipps rund ums Selbsthosting findest du in der Liste awesome-selfhosted und in der Community r/selfhosted.
Frequently asked questions
Kann ich Plane auf einem VPS mit 1 GB oder 2 GB RAM selbst hosten?
Nein. Die Dokumentation von Plane setzt die Untergrenze bei 2 CPU-Kernen und 4 GB RAM, und der Compose-Stack der Community Edition startet dreizehn Container, darunter PostgreSQL, Valkey, RabbitMQ und MinIO. Auf einer 2-GB-Maschine läuft der Installer zwar durch, aber bei echter Nutzung werden Container wegen Speichermangel beendet. 4 GB sind das Minimum, 8 GB empfiehlt die Dokumentation für den Produktivbetrieb.
Wie aktualisiere ich Plane auf eine neuere Version?
Rufe das Verwaltungsskript auf, das der Installer auf dem Server abgelegt hat, und wähle die Upgrade-Option. Alternativ genügen im Installationsverzeichnis docker compose pull und anschließend docker compose up -d. Der migrator-Container führt beim Start die Datenbankmigrationen aus, lege also vorher einen PostgreSQL-Dump und einen Snapshot an. Lies zuerst die Release Notes, da größere Versionen gelegentlich Umgebungsvariablen ändern.
Brauche ich eine eigene Domain, um Plane zu betreiben?
In der Praxis ja. Der Installer fragt während der Einrichtung nach der Domain und schreibt sie in WEB_URL und CORS_ALLOWED_ORIGINS, worüber Frontend und API miteinander sprechen. Eine reine IP-Adresse funktioniert für einen lokalen Test, bricht aber die CORS-Konfiguration, sobald sich die Adresse ändert, und ohne Domain lässt sich kein Let's-Encrypt-Zertifikat ausstellen.