Tests indépendants Mis à jour août 2026 387 guides d'auto-hébergement 5 fournisseurs VPS testés

guide

Comment héberger soi-même Windmill sur un VPS (Guide complet)

Déployez Windmill, l'alternative open source à Retool et Temporal, sur un VPS avec la pile Compose officielle. Dimensionnement par worker, TLS Caddy, sauvegardes.

Windmill transforme des scripts en webhooks, workflows, tâches planifiées et interfaces internes - une alternative open source à Retool et Temporal. L’auto-hébergement est simple, avec un piège à connaître avant de commencer : il n’utilise pas Redis, quoi qu’en disent bon nombre de guides sur le web.

Pourquoi héberger soi-même Windmill ?

L’offre cloud facture par utilisateur et par exécution. L’auto-hébergement supprime les deux compteurs, ce qui compte pour une plateforme d’automatisation : les tâches que vous voulez le plus faire tourner régulièrement sont précisément celles qui accumuleraient des frais d’exécution. Cela garde aussi vos scripts, vos identifiants et vos journaux de tâches sur votre propre machine - et ces scripts détiennent couramment des clés d’API pour tout le reste de votre infrastructure.

L’édition communautaire est sous AGPL-3.0. L’édition entreprise se trouve derrière une clé de licence et une autre étiquette d’image ; elle n’est pas nécessaire pour exploiter la plateforme.

Choisir le bon VPS

Windmill se dimensionne par worker, pas par application. La règle empirique est d’un worker par vCPU avec 1 à 2 Go de RAM chacun, en plus de Postgres et du processus serveur.

HébergeurOffrevCPU / RAM / DisquePrixRemarquesLien
ContaboCloud VPS 44 / 8 Go / 100 Go SSD5,50 EUR/mois HTQuatre cœurs, donc quatre workers en parallèleContabo
Hetzner CloudCX232 / 4 Go / 40 Go NVMe5,49 EUR/mois HTConvient à la pile par défaut à deux workersHetzner
DigitalOceanBasic 4 Go2 / 4 Go / 80 Go SSD24 USD/moisMêmes specs que le CX23 à quatre fois le prixDigitalOcean
VultrRegular 4 Go2 / 4 Go / 80 Go SSD20 USD/moisLe plus large choix de régionsVultr
LinodeLinode 4 Go2 / 4 Go / 80 Go SSD24 USD/moisPerformances prévisiblesLinode

Comme le débit suit le nombre de workers, le nombre de cœurs pèse ici plus que la fréquence. Pour une comparaison détaillée, consultez notre page comparatif VPS complet.

Prérequis

Étape 1 : préparer le VPS

Connectez-vous et mettez à jour :

ssh root@votre-ip-vps
apt update && apt upgrade -y

Installez Docker et le greffon Compose :

apt install -y docker.io docker-compose-v2
systemctl enable --now docker
docker compose version

Ouvrez les ports qu’utilisera Caddy :

ufw allow OpenSSH && ufw allow 80 && ufw allow 443
ufw enable

Étape 2 : récupérer la pile Compose officielle

N’écrivez pas votre propre fichier Compose pour Windmill. Le projet en publie un, et il câble correctement les workers, l’indexeur et les serveurs de langage :

mkdir -p ~/windmill && cd ~/windmill
curl -fsSL -o docker-compose.yml https://raw.githubusercontent.com/windmill-labs/windmill/main/docker-compose.yml
curl -fsSL -o .env https://raw.githubusercontent.com/windmill-labs/windmill/main/.env
curl -fsSL -o Caddyfile https://raw.githubusercontent.com/windmill-labs/windmill/main/Caddyfile

La pile que vous venez de télécharger fait tourner sept services :

Il n’y a pas de Redis dans cette liste, et il ne devrait pas y en avoir dans la vôtre.

Étape 3 : définir mot de passe et domaine

Le fichier .env fourni contient une valeur par défaut délibérément faible :

DATABASE_URL=postgres://postgres:changeme@db/windmill?sslmode=disable
WM_IMAGE=ghcr.io/windmill-labs/windmill:main

Remplacez changeme par un secret généré avant le premier démarrage, car la base est créée à ce démarrage précis :

openssl rand -hex 24

Définissez BASE_URL sur votre domaine dans le même fichier. Caddy le lit pour demander un certificat.

Étape 4 : démarrer

docker compose up -d
docker compose ps

Le premier démarrage télécharge plusieurs images et applique les migrations de base, laissez-lui une minute. Ouvrez votre domaine et créez le premier compte : il devient le superadministrateur de l’instance.

Étape 5 : ajouter des workers au besoin

C’est ce qui distingue Windmill de la plupart des applications auto-hébergées. Vous ne montez pas en charge en grossissant un processus, mais en ajoutant des conteneurs worker. Copiez le bloc windmill_worker du docker-compose.yml, donnez-lui un nouveau nom de service, conservez la même DATABASE_URL et MODE=worker, puis appliquez :

docker compose up -d

Les workers se coordonnent via Postgres, aucune autre configuration ne change. Comptez environ un vCPU et 1 à 2 Go de RAM pour chacun.

Étape 6 : sauvegarder la base

Tout ce qui compte - scripts, flux, planifications, ressources, historique des tâches - vit dans Postgres. Le volume de cache des dépendances contient des données dérivées et se reconstruit tout seul.

docker compose exec db pg_dump -U postgres windmill | gzip > windmill-$(date +%F).sql.gz

Copiez-le hors du serveur. Notez que Windmill stocke les identifiants de vos autres systèmes : traitez ce dump comme un secret et chiffrez-le au repos.

Là où les gens se font piéger

Recopier depuis un blog un fichier Compose fondé sur Redis. Windmill n’en a jamais eu besoin. Le conteneur démarrera et restera simplement inactif pendant que vous vous demandez pourquoi la file d’attente ne l’utilise pas.

Dimensionner sur le régime permanent. L’installation des dépendances est le pic de mémoire. Une tâche Python important pandas réclame bien plus de RAM au premier lancement qu’aux suivants : une pile qui semble saine au repos peut échouer sur une tâche à froid.

Laisser changeme en place. C’est le mot de passe Postgres du .env publié, et la première chose qu’essaie un balayage opportuniste si vous exposez un jour le port 5432.

Windmill récompense une machine dotée de plus de cœurs plutôt que de cœurs plus rapides, ce qui rend les offres européennes multicœurs bon marché particulièrement intéressantes ici. Dimensionnez selon le nombre de tâches que vous voulez voir tourner ensemble, gardez le dump Postgres chiffré ailleurs, et le service se fera oublier.

Pour d’autres projets et conseils d’auto-hébergement, parcourez la liste awesome-selfhosted ou la communauté r/selfhosted.

Frequently asked questions

Ai-je besoin de Redis pour auto-héberger Windmill ?

Non, et c'est un piège fréquent. Windmill utilise PostgreSQL à la fois comme base de données et comme file d'attente, si bien que le fichier Compose officiel ne contient ni service Redis ni variable REDIS_URL. Plusieurs guides tiers en ajoutent un malgré tout. Si vous avez copié un fichier Compose comportant un conteneur Redis, vous faites tourner un service auquel Windmill ne se connecte jamais, et vous pouvez le supprimer sans risque.

Comment ajouter des workers à une instance Windmill déjà en service ?

Ajoutez au fichier Compose un autre service windmill_worker pointant sur la même DATABASE_URL avec MODE=worker, puis lancez docker compose up -d. Les workers se coordonnent via Postgres, rien d'autre n'est à reconfigurer. La limite pratique est votre nombre de cœurs : chaque worker standard exécute une tâche à la fois et réclame environ un vCPU et 1 à 2 Go de RAM.

Comment passer Windmill en HTTPS ?

La pile embarque déjà Caddy, qui sert du HTTP simple sur le port 80 par défaut. Pour obtenir le TLS automatique, définissez BASE_URL sur votre domaine puis modifiez le Caddyfile et le service caddy afin d'exposer le port 443, comme l'expliquent les commentaires du fichier .env fourni. Faites pointer le DNS vers le serveur avant de démarrer, pour que le certificat soit émis au premier lancement.