Windmill ist eine Open-Source-Entwicklerplattform, die Skripte in Webhooks, Workflows, Cronjobs und interne Oberflächen verwandelt - positioniert gegen Retool und Temporal, nicht gegen einen Hoster für statische Seiten. Die Community Edition steht unter AGPL-3.0, die Enterprise-Variante hinter einem Lizenzschlüssel.
Die Dimensionierung unterscheidet sich von der einer üblichen Web-App, denn die Einheit der Kapazität ist der Worker, nicht die Anwendung.
Die Architektur, die deine Specs bestimmt
Die offizielle docker-compose.yml startet sieben Dienste:
| Dienst | Image | Aufgabe |
|---|---|---|
db | postgres:16 | Datenbank und Job-Queue |
windmill_server | ghcr.io/windmill-labs/windmill:main | API und Web-UI, Port 8000 |
windmill_worker | dasselbe Image, MODE=worker | Führt Jobs aus |
windmill_worker_native | dasselbe Image, NATIVE_MODE=true | Nur leichtgewichtige Jobs |
windmill_indexer | dasselbe Image, MODE=indexer | Volltextsuche über Jobs |
windmill_extra | ghcr.io/windmill-labs/windmill-extra:latest | Language Server für den Editor |
caddy | ghcr.io/windmill-labs/caddy-l4:2.11.4-1 | Reverse Proxy auf Port 80 |
Zwei Punkte darin wiegen schwerer als der Rest.
Es gibt kein Redis. Windmill nutzt PostgreSQL als Queue. Etliche fremde Anleitungen ergänzen einen Redis-Container und eine REDIS_URL; die offizielle Compose-Datei enthält beides nicht, und wer eine solche Anleitung kopiert, betreibt einen Dienst, mit dem Windmill nie spricht.
Die Worker sind der Kostenfaktor. Der Server liegt vergleichsweise brach. Wofür du tatsächlich bezahlst, ist Worker-Kapazität.
RAM und CPU: pro Worker dimensionieren
Die praktische Regel lautet ein Worker je vCPU, 1-2 GB RAM pro Worker, plus Reserve für Postgres und den Server.
| Aufbau | vCPU / RAM | Was du dafür bekommst |
|---|---|---|
| Test, ein Worker | 2 / 2 GB | Läuft, aber ein Job zur Zeit und keine Luft für eine große Abhängigkeitsinstallation |
| Standard-Stack, 1-2 Worker | 2-4 / 4 GB | Das praktische Minimum für echten Einsatz |
| Mehrere gleichzeitige Jobs | 4 / 8 GB | Das entspannte Ziel für ein kleines Team |
Native Worker sind die Ausnahme, die man kennen sollte: Sie führen leichtgewichtige Jobs mit rund 0,1 CPU und 128 MB aus. Deshalb bringt der Standard-Stack einen davon neben einem regulären Worker mit, ohne einen weiteren Kern zu verlangen.
Die Größe, die niemand einplant, ist die Installation von Abhängigkeiten. Ein Python-Job, der pandas zieht, oder ein TypeScript-Job mit großer Lockfile treibt den Speicherbedarf weit über den Dauerwert. Wenn Jobs nur beim ersten Lauf scheitern und danach durchlaufen, siehst du zu, wie der Dependency-Cache mit zu wenig RAM aufgebaut wird.
Speicher: der Dependency-Cache ist das Wachstum
Die Datenbank bleibt lange überschaubar - Job-Metadaten, Skripte, Flows und Logs sind Text. Das Volume, das wächst, ist worker_dependency_cache, in dem jedes Python-Wheel und jedes npm-Paket deiner Jobs liegt, damit spätere Läufe die Installation überspringen.
Starte mit 40 GB. Beobachte das Cache-Volume statt der Datenbank, wenn du über eine Vergrößerung nachdenkst, und bevorzuge NVMe oder SSD - Postgres erledigt hier neben der Speicherung auch den Queue-Dienst und reagiert empfindlich auf I/O-Latenz.
VPS-Tarife, die zu diesen Anforderungen passen
| Anbieter | Tarif | vCPU / RAM / Speicher | Preis | Urteil | Link |
|---|---|---|---|---|---|
| Contabo | Cloud VPS 4 | 4 / 8 GB / 100 GB SSD | 5,50 EUR/Mo netto | Luft für vier Worker zum Preis eines Einstiegstarifs | Contabo |
| Hetzner Cloud | CX23 | 2 / 4 GB / 40 GB NVMe | 5,49 EUR/Mo netto | Passend für den Standard-Stack mit zwei Workern | Hetzner |
| DigitalOcean | Basic 4 GB | 2 / 4 GB / 80 GB SSD | 24 USD/Mo | Gleiche Specs wie CX23, vierfacher Preis | DigitalOcean |
| Vultr | Regular 4 GB | 2 / 4 GB / 80 GB SSD | 20 USD/Mo | Größte Regionsauswahl | Vultr |
| Linode | Linode 4 GB | 2 / 4 GB / 80 GB SSD | 24 USD/Mo | Vorhersehbare Leistung, starke API | Linode |
Windmill ist eine der wenigen selbst gehosteten Anwendungen, bei denen ein 1-GB-Tarif nicht automatisch ausscheidet - ein einzelner nativer Worker passt tatsächlich hinein. Ein regulärer Worker läuft dort aber nicht, also keine Python- oder TypeScript-Jobs mit Abhängigkeiten. Das ist eine Demo, keine Installation.
Nach oben skalieren
Windmill skaliert horizontal über zusätzliche Worker-Container, nicht dadurch, dass ein Prozess größer wird. Für den doppelten Durchsatz ergänzt du einen zweiten windmill_worker-Dienst mit derselben DATABASE_URL und gibst der Maschine einen weiteren Kern.
Daraus folgt praktisch: mehr Kerne schlagen hier schnellere Kerne. Contabos 4 vCPU für 5,50 EUR netto kaufen Parallelität für vier Worker, Hetzners CX23 zum praktisch gleichen Preis für zwei. Besteht deine Last aus vielen kleinen statt wenigen schweren Jobs, ist dieses Verhältnis die ganze Entscheidung.
- Beobachte mit
docker stats, welcher Worker ausgelastet ist, bevor du vergrößerst. - Fasse Worker über Tags zu Gruppen zusammen, damit schwere Jobs auf der passend dimensionierten Maschine landen.
- Postgres trägt die Queue: gib ihm eher schnellen Speicher als mehr RAM.
Einen breiteren Blick auf die Tarife der Anbieter gibt unser vollständiger VPS-Vergleich.
Frequently asked questions
Wie viel RAM braucht eine selbst gehostete Windmill-Instanz?
Dimensioniere pro Worker statt pro Anwendung. Als Faustregel gilt ein Worker je vCPU mit 1-2 GB RAM, zusätzlich zu Postgres und dem Server-Prozess. Eine Instanz mit einem Worker läuft auf 2 GB, der Standard-Stack mit zwei Workern ist auf 4 GB entspannt, und 8 GB mit 4 vCPU sind das sinnvolle Ziel, sobald mehrere Jobs gleichzeitig laufen.
Wie viele CPU-Kerne sollte ich Windmill zuweisen?
Beginne mit 2 vCPU und rechne pro zusätzlichem Worker einen Kern dazu, denn ein Standard-Worker führt jeweils genau einen Job aus. Native Worker sind die Ausnahme: Sie erledigen leichtgewichtige Jobs mit rund 0,1 CPU und 128 MB, weshalb der Standard-Stack einen davon ohne zusätzlichen Kern mitbringt.
Benötigt Windmill Redis oder einen anderen Message Broker?
Nein. Windmill nutzt PostgreSQL sowohl als Datenbank als auch als Job-Queue. Das ist ungewöhnlich und wichtig zu wissen, weil viele fremde Anleitungen einen Redis-Dienst ergänzen, den die offizielle Compose-Datei gar nicht enthält. PostgreSQL ab Version 14 ist der einzige nötige Datenspeicher; ein zusätzliches Redis bringt nur einen überflüssigen Container.