−25%

sur Windows en paiement annuel, jusqu'au 31/10. Voir les offres

EQVPS
Commencer

VPS pour Activepieces : l'automatisation chez vous

Activepieces, l'outil d'automatisation open source, sur votre serveur : pas de facturation par tâche, des webhooks sur votre domaine. Installation testée.

Les services d'automatisation hébergés facturent à la tâche, et le compteur tourne même pour ce qui n'est pas vraiment du travail. Un flow qui vérifie un flux toutes les cinq minutes, c'est 8 640 exécutions par mois avant même d'avoir fait quoi que ce soit d'utile. Faites tourner le même flow sur votre serveur, et la facture, c'est le serveur.

Activepieces est un outil d'automatisation open source : déclencheurs, étapes, branches, quelques centaines d'intégrations prêtes à l'emploi, et des étapes de code quand celles-ci ne suffisent plus. L'édition communautaire est sous licence MIT et tourne sans problème sur un petit serveur avec Docker Compose.

Quelle offre

Nous l'avons installé sur un serveur de test et mesuré. Le fichier compose fourni lance l'application et cinq workers : environ 2,6 à 3 Go de RAM avec Postgres et Redis. Avec un seul worker, on descend vers 1,6 Go.

Ce que vous faites tournerOffre
Quelques flows personnels, un workerMicro-IP — 2 vCPU, 2 Go, 25 Go (10 $/mois), avec swap
La configuration par défaut : cinq workers, flows d'équipe, webhooksSmall-IP — 4 vCPU, 4 Go, 35 Go (16 $/mois)
Beaucoup d'exécutions simultanées, étapes de code lourdesMedium-IP — 6 vCPU, 6 Go, 45 Go (20 $/mois)

Prenez une offre avec sa propre IPv4. Les webhooks sont la raison principale d'héberger cet outil soi-même, et les services qui les appellent doivent atteindre les ports 80 et 443 ; sur les offres NAT, seul le port SSH est joignable de l'extérieur. Les emplacements sont l'Allemagne et la Finlande — la disponibilité s'affiche à la commande. Paiement en crypto possible, sans KYC.

Installation

Pointez d'abord un domaine — disons flows.example.com — vers le serveur. Puis, en root sur Ubuntu 24.04 ou Debian 12 :

curl -fsSL https://get.docker.com | sh
git clone --depth 1 https://github.com/activepieces/activepieces.git
cd activepieces
sh tools/deploy.sh

deploy.sh copie .env.example vers .env et remplit des secrets aléatoires. Avant le premier démarrage, modifiez deux lignes de .env et une du fichier compose :

sed -i 's|^AP_FRONTEND_URL=.*|AP_FRONTEND_URL=https://flows.example.com|; s|^AP_TELEMETRY_ENABLED=.*|AP_TELEMETRY_ENABLED=false|' .env
sed -i "s|- '8080:80'|- '127.0.0.1:8080:80'|" docker-compose.yml

C'est la première ligne qui compte. AP_FRONTEND_URL ne sert pas qu'aux liens de l'interface : les workers se connectent à l'application par cette adresse. Laissez http://localhost:8080 et chaque conteneur worker cherche l'application en lui-même, ne la trouve pas, et vos flows ne se publient jamais. C'est exactement ce qui nous est arrivé : « Socket.IO connection error » dans les logs du worker, une publication bloquée et des webhooks qui répondaient 404. Avec le vrai domaine, le même flow s'est publié et le webhook a fonctionné.

Le sed sur docker-compose.yml garde le port 8080 sur localhost. Les ports publiés par Docker contournent ufw ; sans cela, l'application serait ouverte sur un port brut à côté de votre HTTPS.

Sur Micro-IP, passez aussi à un seul worker :

sed -i 's/replicas: 5/replicas: 1/' docker-compose.yml

Maintenant HTTPS et le démarrage :

apt install -y caddy
cat > /etc/caddy/Caddyfile <<'EOF'
flows.example.com {
    reverse_proxy 127.0.0.1:8080
}
EOF
systemctl reload caddy
ufw allow 22/tcp && ufw allow 80/tcp && ufw allow 443/tcp && ufw enable
docker compose -p activepieces up -d

Attendez une trentaine de secondes, ouvrez https://flows.example.com et créez votre compte tout de suite. La première inscription possède la plateforme ; ensuite, l'inscription se fait uniquement sur invitation.

Vérifier que les webhooks fonctionnent

Créez un flow avec le déclencheur Webhook (Catch Webhook), ajoutez une étape quelconque, publiez-le. Le panneau du déclencheur affiche l'URL. Envoyez-lui un événement de test :

curl -X POST https://flows.example.com/api/v1/webhooks/YOUR_FLOW_ID \
  -H 'content-type: application/json' \
  -d '{"event":"payment.paid","amount":16}'

Vous devriez obtenir un 200, et l'exécution apparaît dans Runs comme réussie. Si vous obtenez 404, revenez vérifier AP_FRONTEND_URL.

Au quotidien

  • Mises à jour. Le fichier compose fixe une version exacte (0.92.2 au moment de la rédaction). Changez le tag dans docker-compose.yml, puis docker compose -p activepieces pull && docker compose -p activepieces up -d. Parcourez d'abord les notes de version ; les outils d'automatisation adorent renommer les choses.
  • Sauvegardes. Les flows, les connexions et l'historique d'exécution vivent dans le volume Postgres. Faites-en un dump régulier et gardez la copie hors du serveur — les connexions contiennent vos jetons API pour d'autres services.
  • Les étapes de code ne sont pas en sandbox dans cette configuration (AP_EXECUTION_MODE=UNSANDBOXED). C'est votre serveur et ce sont vos flows, donc c'est acceptable. Ça cesse de l'être dès que vous laissez construire des flows à des personnes en qui vous n'avez pas confiance.

Si vous connaissez déjà n8n, l'idée est la même — voir VPS pour n8n. Choisissez l'éditeur dans lequel vous réfléchissez le plus facilement ; les deux se plaisent sur les mêmes offres.

Sur le même sujet

Prêt à déployer ? Payez en crypto, sans KYC — en ligne en une minute environ.

Déployer →

FAQ

De combien de RAM Activepieces a-t-il besoin ?

Le docker-compose.yml fourni lance l'application et cinq workers ; sur notre serveur de test, cela faisait environ 2,6 à 3 Go avec Postgres et Redis. Avec un seul worker, environ 1,6 Go. Small-IP (4 Go) fait tourner la configuration par défaut avec de la marge ; Micro-IP (2 Go) ne fonctionne qu'avec un seul worker et un fichier swap.

Mon flow ne se publie pas et le webhook répond 404. Que se passe-t-il ?

Vérifiez AP_FRONTEND_URL. Les workers joignent l'application par cette adresse, et si elle est restée à http://localhost:8080, « localhost » dans un conteneur worker désigne le worker lui-même. Les workers ne peuvent pas se connecter, la publication reste bloquée et les webhooks renvoient 404. Mettez votre vrai domaine en https:// avant le premier démarrage.

Ai-je besoin d'une IP dédiée ?

Oui, si vous utilisez des webhooks — et c'est le cas de presque tout le monde. Les services qui appellent vos flows doivent atteindre les ports 80 et 443 de votre domaine, et une offre NAT n'accepte de l'extérieur que votre port SSH.

N'importe qui peut-il s'inscrire sur mon instance ?

Seulement la toute première personne. Dans notre test, la première inscription est passée et la deuxième a reçu « User is not invited to the platform » : après le premier compte, l'inscription se fait uniquement sur invitation. Créez donc votre compte dès que le site répond, avant que quelqu'un d'autre ne tombe sur la page.

Les étapes de code sont-elles isolées ?

Pas par défaut : la configuration compose exécute les étapes de code avec AP_EXECUTION_MODE=UNSANDBOXED, directement dans le worker. Cela convient tant que seuls vous et des personnes de confiance construisez des flows. Ne donnez pas accès à l'éditeur à des inconnus sur cette installation.

Commentaires

Pas encore de commentaires. Soyez le premier.

Laisser un commentaire

Les commentaires sont modérés avant leur publication.