Heroku et Vercel : quand la facture dépasse la valeur
Heroku était la référence du déploiement sans friction pour les startups et les agences depuis la fin des années 2000. La plateforme absorbait la complexité d'infrastructure en échange d'un abonnement mensuel prévisible. Depuis le rachat par Salesforce et la suppression du plan gratuit en novembre 2022, la proposition de valeur s'est détériorée : un dyno Standard-1X coûte 25 $/mois, un dyno Standard-2X monte à 50 $/mois, et une application avec un dyno web, un worker et un add-on Postgres dépasse facilement les 100 $/mois. Vercel a suivi un mouvement similaire : le plan Pro est à 20 $/mois par développeur, mais les dépassements sur les Serverless Functions, les Edge Requests et la bande passante s'accumulent discrètement en fin de mois. En septembre 2026, un fil Hacker News titré « Should I run plain Docker Compose in production in 2026? » (discussion #47962032, 22 sept. 2026) a cumulé plusieurs centaines de commentaires, révélant une tendance de fond : les équipes de taille moyenne reviennent en masse vers l'auto-hébergement, non par idéologie mais par arithmétique. Un VPS à 10-20 € par mois avec Coolify installé dessus reproduit 90 % de l'expérience Heroku — déploiement Git-push, rollbacks, variables d'environnement, domaines personnalisés — sans la structure tarifaire à l'usage qui punit la croissance. La question n'est plus « est-ce techniquement possible ? » mais « à quel moment le coût d'opportunité devient-il insupportable ? ».
Les 5 signaux qui indiquent qu'il faut migrer
- Facture PaaS > 80 €/mois — Au-delà de ce seuil, un VPS entrée de gamme + Coolify amortit sa mise en place en moins de deux mois. Additionnez tous les dynos, workers et add-ons avant de comparer.
- Scaling imprévisible — Les plateformes à tarification à l'usage (bandwidth, invocations, Edge Requests) rendent le budget mensuel difficile à prévoir ; un VPS offre un coût fixe et un scaling manuel ou automatisé sous votre contrôle.
- Lock-in vendor — Heroku buildpacks propriétaires, Procfile non portable, add-ons liés à l'écosystème Salesforce : si votre stack ne peut pas tourner ailleurs sans réécriture, c'est un signal de dépendance critique.
- Pas d'accès root — Certains besoins (réglages noyau, modules kernel, outils de performance bas niveau) sont impossibles sur PaaS managé ; un VPS donne l'accès complet à la machine.
- CI/CD imposée par la plateforme — Heroku et Vercel privilégient leur propre pipeline de build ; sur un VPS avec Coolify, vous branchez GitHub Actions ou GitLab CI selon votre propre logique et déclenchez le déploiement via webhook.
- Support dégradé ou réponse lente — Plusieurs utilisateurs signalent des temps de réponse du support Heroku allongés depuis la transition Salesforce ; auto-héberger votre stack vous libère de cette dépendance pour les incidents courants.
Break-even : Heroku Pro vs VPS + Coolify
Faites défiler le tableau
| Heroku Pro | VPS Start + Coolify | |
|---|---|---|
| Coût mensuel | ~50 $/dyno | 99 DH/mois |
| Scalabilité | Dynos payants à l'unité | RAM/CPU modifiables à chaud |
| Buildpacks | Heroku buildpacks natifs | Nixpacks (compatibles Heroku) |
| Accès root | Non | Oui |
| Zero-downtime deploy | Health checks basiques | Coolify intégré |
| Add-ons base de données | Heroku Postgres (payant) | PostgreSQL autogéré gratuit |
| Logs | Logplex (limité) | Accès complet journald / Docker |
Coolify vs Dokploy vs Kamal
Faites défiler le tableau
| Coolify | Dokploy | Kamal | |
|---|---|---|---|
| Buildpacks Heroku (Nixpacks) | Oui | Non | Non |
| Zero-downtime deploy | Oui | Oui | Oui |
| Interface web | Oui | Oui | Non (CLI) |
| Multi-serveur | Oui | Oui | Via SSHKit |
| Docker Compose natif | Oui | Oui | Non |
| Licence | AGPL-3.0 | MIT | MIT (Basecamp) |
| Prérequis serveur | 2 vCPU / 2 Go RAM | 1 vCPU / 1 Go RAM | Ruby + Docker |
Coolify sur VPS : le plus compatible avec Heroku
Coolify est aujourd'hui l'outil d'auto-hébergement le plus proche de l'expérience Heroku, en version open source sous licence AGPL-3.0. Sa caractéristique principale est la prise en charge de Nixpacks, le moteur de buildpack open source créé par Railway qui comprend les Procfiles Heroku et construit des images Docker sans que vous ayez à écrire un Dockerfile. Concrètement, une application Node.js, Python (Django, FastAPI), Ruby on Rails ou PHP déployée sur Heroku peut être importée dans Coolify en pointant le même dépôt Git, sans modification du code. Le prérequis minimum recommandé par la documentation officielle de Coolify est 2 vCPU et 2 Go de RAM, ce qui correspond exactement au profil d'un VPS entrée de gamme. L'interface web propose la gestion des variables d'environnement par projet, les déploiements automatiques sur push Git, les rollbacks en un clic, les certificats TLS via Let's Encrypt et la gestion des domaines personnalisés. Coolify supporte également Docker Compose directement : si vous avez déjà une stack Compose pour votre développement local, vous pouvez la déployer telle quelle. L'installation sur un VPS neuf prend moins de dix minutes grâce au script officiel, et Coolify se met à jour via son propre mécanisme de mise à jour intégré à l'interface. Pour les équipes qui veulent gérer plusieurs serveurs depuis un tableau de bord unique, Coolify supporte le multi-serveur nativement depuis la version 4.
Migrer une app Heroku vers Coolify en 7 étapes
Installer Coolify sur votre VPS
Connectez-vous en SSH à votre VPS, puis lancez le script officiel :
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash. L'installation configure Docker, installe Coolify et lance l'interface sur le port 8000. Ouvrez ensuitehttp://<IP-VPS>:8000pour créer votre compte administrateur.Créer un projet dans Coolify
Dans l'interface Coolify, cliquez sur « New Project », donnez-lui le même nom que votre application Heroku. Ajoutez ensuite un « Resource » de type « Application » dans ce projet. Coolify va vous demander la source : choisissez « GitHub » ou « GitLab » selon votre dépôt, puis autorisez l'accès via OAuth.
Connecter le dépôt Git et choisir le buildpack
Sélectionnez votre dépôt et la branche de production. Coolify détecte automatiquement le type d'application via Nixpacks. Si votre projet a un
Procfile, Coolify le lit et configure le processus web. Vous pouvez aussi forcer un Dockerfile existant ou passer en mode Docker Compose si vous avez undocker-compose.yml.Configurer les variables d'environnement
Récupérez vos variables depuis Heroku avec
heroku config -a <nom-app>. Copiez-les dans l'onglet « Environment Variables » de Coolify. Vérifiez particulièrementDATABASE_URL— le format Heroku (postgres://user:pass@host/db) est généralement compatible, mais si vous migrez aussi la base de données, mettez à jour l'URL pour pointer vers votre PostgreSQL autogéré.Lancer le premier déploiement
Cliquez sur « Deploy ». Coolify construit l'image via Nixpacks, la pousse dans son registry interne et démarre le conteneur avec un health check. Surveillez les logs en temps réel dans l'onglet « Deployments ». Si le build échoue, l'erreur est affichée ligne par ligne — cherchez en priorité les dépendances système manquantes (librairies C, binaires natifs) que les buildpacks Heroku incluaient implicitement.
Changer le DNS
Dans Coolify, ajoutez votre domaine personnalisé dans les paramètres de l'application. Coolify génère automatiquement le certificat TLS via Let's Encrypt. Modifiez ensuite l'entrée DNS (A ou CNAME) pour pointer vers l'IP de votre VPS. La propagation prend entre quelques minutes et 48 heures selon le TTL de la zone.
Valider 24-48 h en parallèle avant de supprimer Heroku
Gardez votre application Heroku active pendant au moins 24 à 48 heures après la bascule DNS. Testez toutes les fonctionnalités critiques (paiement, notifications, webhooks entrants, tâches planifiées) sur la nouvelle instance. Ce n'est qu'une fois la validation complète que vous pouvez résilier l'abonnement Heroku et désactiver les dynos.
Gardez votre abonnement Heroku actif 48 h après la migration DNS pour disposer d'un rollback immédiat. Ne résiliez pas dès que le DNS pointe vers le nouveau serveur — les webhooks tiers, les tâches planifiées et les sessions utilisateur en cours nécessitent une validation sur la durée avant de couper définitivement l'ancienne plateforme.
Erreurs courantes lors de la migration
La migration depuis Heroku vers un VPS avec Coolify concentre quelques pièges récurrents qu'il vaut mieux connaître avant de commencer. Le premier est la conversion du Procfile : Heroku utilise un format web: node server.js qui est lu par Nixpacks, mais si votre application utilise des processus release (migrations automatiques au déploiement), ces hooks doivent être reconfigurés dans les scripts de démarrage Coolify ou via un point d'entrée Docker personnalisé. Le deuxième piège concerne les variables d'environnement manquantes : Heroku injecte automatiquement certaines variables (DYNO, PORT, HEROKU_APP_NAME) que votre code peut lire sans les avoir déclarées explicitement — vérifiez que votre application ne dépend pas de ces variables implicites. Le troisième problème est le timeout du health check : Coolify configure par défaut HEALTHCHECK --interval=30s --timeout=10s, et une application lente à démarrer sera considérée comme défaillante et redémarrée en boucle. Augmentez --start-period à 60 ou 120 secondes pour les applications volumineuses. Enfin, le format DATABASE_URL peut différer : Heroku utilise le schéma postgres://, tandis que certaines librairies modernes requièrent postgresql:// — une simple substitution dans la variable d'environnement règle le problème. Pour les bases de données, évitez de migrer Heroku Postgres et les données applicatives en même temps que l'infrastructure : faites d'abord tourner l'application sur le nouveau VPS en pointant toujours vers la base Heroku, puis migrez la base dans un second temps avec pg_dump et pg_restore.
Après la migration — optimisations
Une fois l'application stabilisée sur le VPS, plusieurs optimisations permettent d'atteindre un niveau de fiabilité supérieur à ce qu'offrait Heroku par défaut. La première priorité est les sauvegardes automatiques : configurez des snapshots quotidiens de votre VPS via le panneau de votre hébergeur, et ajoutez une sauvegarde applicative pour PostgreSQL avec pg_dump planifié par cron ou via l'interface de Coolify (qui intègre un gestionnaire de sauvegardes de bases de données depuis la version 4.0). La deuxième étape est le monitoring : installez Uptime Kuma sur le même VPS ou sur un second pour surveiller la disponibilité de vos applications avec des alertes par email, Telegram ou Slack. Pour un monitoring système plus complet (CPU, RAM, disque, réseau), Beszel est une alternative légère et moderne à Netdata, conçue pour les auto-hébergeurs. La troisième optimisation concerne la CI/CD : plutôt que de déclencher les déploiements uniquement depuis l'interface Coolify, configurez un webhook dans votre pipeline GitHub Actions pour automatiser les déploiements en production après validation des tests. Coolify expose un webhook par application qui accepte un POST HTTP avec un token — branchez-le en dernière étape de votre workflow CI. Cette architecture donne un pipeline complet : push → tests → build → déploiement automatique → health check, entièrement sous votre contrôle et sans dépendance vers une plateforme externe.
Migrer depuis Vercel — cas particulier des frontends SSR
Vercel est conçu pour les déploiements de frontends statiques et SSR, en particulier Next.js dont Vercel est l'éditeur. Si vous hébergez une application Next.js sur Vercel, Coolify supporte Next.js via Nixpacks et peut déployer l'application en mode next start dans un conteneur Docker. La migration est directe pour les projets qui n'utilisent pas les Edge Functions de Vercel ou le réseau CDN Edge distribué (les Vercel Edge Middleware). En revanche, si votre application dépend fortement des Edge Functions — logique d'authentification, redirections géolocalisées, A/B testing au niveau du CDN — une migration 1:1 vers Coolify n'est pas immédiate, car Coolify déploie sur un seul serveur et ne reproduit pas la topologie edge distribuée. Dans ce cas, deux approches sont envisageables : utiliser Dokploy pour les applications full-stack avec moins de dépendances Vercel-spécifiques, ou adopter Kamal (de Basecamp) combiné avec Nginx pour les équipes qui préfèrent une approche CLI pure sans interface web. Pour les frontends Nuxt.js, SvelteKit ou Astro sans Edge Functions, Coolify est la migration la plus simple : ces frameworks génèrent soit un build statique (exportable sur n'importe quel serveur), soit un serveur Node.js standard que Nixpacks détecte et conteneurise automatiquement. L'économie réalisée sur une stack Vercel Pro avec plusieurs développeurs peut dépasser 60 à 80 €/mois en passant sur un VPS unique avec Coolify, sans dégradation perceptible pour les utilisateurs finaux dans la grande majorité des cas d'usage.