Déménagez une appli Heroku au Canada.
La plupart des applis Heroku passent à Canner sans changer le code : Canner détecte les mêmes environnements d’exécution, lit PORT de la même façon et vous donne une base Postgres à Montréal. Vous copiez vos variables de configuration, transférez la base avec une commande et pointez votre domaine. Voici ce que devient chaque fonction de Heroku, et les quelques-unes qui ne suivent pas.
Faits vérifiés le
Pourquoi les équipes regardent ailleurs
Le 6 février 2026, Heroku a annoncé passer à un modèle d’« ingénierie de maintien » axé sur la stabilité, la sécurité, la fiabilité et le soutien, en mettant l’accent sur la qualité plutôt que sur de nouvelles fonctions. Rien ne change pour les clients actuels qui paient par carte, et les contrats Enterprise Account ne sont plus offerts aux nouveaux clients. Heroku n’a annoncé aucune date de fin et reste une plateforme soutenue.
Pour une équipe canadienne, l’autre raison est l’emplacement : l’environnement standard de Heroku est aux États-Unis et en Europe. Montréal n’existe que pour les Private Spaces.
| Source | Ce qu’elle dit |
|---|---|
| Blogue de Heroku, 6 février 2026 † | Ingénierie de maintien, aucune nouvelle fonction; aucun changement pour les clients qui paient par carte; plus de nouveaux contrats Enterprise Account |
† Les détails sur les concurrents proviennent des pages publiées par chaque fournisseur aux dates indiquées; les prix et forfaits changent, vérifiez auprès du fournisseur avant de décider. Blogue de Heroku, 6 février 2026 (2026-10-29)
Ce que devient chaque fonction de Heroku
| Chez Heroku | Chez Canner |
|---|---|
| Buildpacks | Détectés à partir de votre manifeste : Node, Python, Ruby, PHP, Go, Java, Rust et sites statiques |
Processus web: du Procfile | Commande de démarrage détectée selon le cadriciel; définissez la vôtre dans Paramètres → Build au besoin. Le Procfile n’est pas lu |
Processus release: | La commande de mise en production, dans Paramètres → Build. Elle s’exécute après la compilation et avant le démarrage de la nouvelle version |
Dynos worker: | Pas encore offert comme deuxième processus. Faites rouler la file de tâches dans le processus web (Solid Queue ou GoodJob pour Rails) |
| Config vars | Variables d’environnement; collez-les toutes d’un coup dans l’éditeur en bloc |
| Heroku Postgres | Postgres Canner 17 ou 18, avec DATABASE_URL injectée |
| Heroku Key-Value Store (Redis) † | Non offert. Solid Cache, Queue et Cable de Rails 8 utilisent Postgres; Sidekiq exige un Redis hébergé ailleurs |
| Heroku Scheduler | Tâches planifiées : une expression cron qui appelle une URL de votre appli, donc chaque tâche devient un point d’accès |
| Review apps | Déploiements d’aperçu pour chaque demande de tirage |
| Domaines personnalisés et ACM | Domaines personnalisés avec TLS automatique, avec Live |
| Dynos Eco qui dorment | Les projets Démarrage dorment après 3 heures d’inactivité et se réveillent à la requête suivante; Live en garde deux toujours actifs |
† Les détails sur les concurrents proviennent des pages publiées par chaque fournisseur aux dates indiquées; les prix et forfaits changent, vérifiez auprès du fournisseur avant de décider. Heroku Key-Value Store (Redis) (2026-10-29)
Le déménagement, étape par étape
- Créez le projet. Connectez le dépôt GitHub, ou lancez
canner deploydepuis le dossier. Canner choisit l’environnement à partir de votre Gemfile, package.json, requirements.txt ou composer.json. - Copiez les variables de configuration. Affichez-les en lignes
CLÉ=valeuret collez-les dans l’éditeur en bloc (commandes ci-dessous). SautezDATABASE_URL. - Définissez la commande de mise en production. Reprenez la ligne
release:de votre Procfile, par exemplebundle exec rails db:migrateoupython manage.py migrate. Une appli Rails 8 sans commande reçoitbundle exec rails db:prepare. - Transférez la base. Utilisez l’une des deux méthodes ci-dessous, à un moment tranquille ou avec l’appli en mode maintenance.
- Pointez votre domaine. Ajoutez-le au projet, puis changez l’enregistrement DNS. Gardez l’appli Heroku en marche jusqu’à ce que le trafic ait basculé.
# Afficher toutes les variables en lignes CLÉ=valeur
heroku config --shell --app your-app
# Collez le résultat dans Paramètres → Variables d’environnement → éditeur en bloc.
# Laissez DATABASE_URL de côté : Canner définit la sienne.Transférer Heroku Postgres
La méthode A transfère la base directement depuis Heroku, sans fichier intermédiaire, ce qui convient à une grosse base. La méthode B utilise la sauvegarde de Heroku : Heroku documente pg:backups:capture et pg:backups:download pour l’exportation, et ses sauvegardes sont au format personnalisé de pg_dump que lit canner db import. Heroku présente ses sauvegardes comme destinées aux bases d’au plus 20 Go.
Les propriétaires et les privilèges ne suivent dans aucun cas : les tables appartiennent au rôle de votre base Canner. Pour une bascule presque sans interruption, l’instance dédiée peut suivre un serveur source en direct; voyez le guide de migration Postgres pour ce que la source exige.
# Méthode A : transférer directement depuis Heroku Postgres
heroku config:get DATABASE_URL --app your-app
canner db migrate-in --from "postgres://…de la ligne ci-dessus…"
# Méthode B : télécharger la sauvegarde de Heroku et importer le fichier
heroku pg:backups:capture --app your-app
heroku pg:backups:download --app your-app # crée latest.dump
canner db import latest.dump| Source | Ce qu’elle dit |
|---|---|
| Heroku Dev Center, Importing and Exporting Heroku Postgres Databases † | Exporter avec pg:backups:capture et pg:backups:download |
† Les détails sur les concurrents proviennent des pages publiées par chaque fournisseur aux dates indiquées; les prix et forfaits changent, vérifiez auprès du fournisseur avant de décider. Heroku Dev Center, Importing and Exporting Heroku Postgres Databases (2026-10-29)
Ce qui ne suit pas
- Un processus de travail distinct, toujours actif, à côté du processus web.
- Redis. Utilisez des files et des caches appuyés sur Postgres, ou un Redis hébergé ailleurs.
- Les modules du marché de Heroku. Cherchez l’offre hébergée de chacun, ou une fonction de Canner qui le remplace (stockage objet, tâches planifiées, analytique).
- La haute disponibilité et les répliques en lecture pour Postgres. Canner roule dans une seule région, avec sauvegardes et récupération à un instant précis, sans basculement.
Questions
Heroku ferme-t-il?
Aucune fermeture n’a été annoncée. En février 2026, Heroku est passé à un modèle d’ingénierie de maintien : aucune nouvelle fonction, soutien maintenu, aucun changement pour les clients actuels qui paient par carte.
Dois-je changer mon code?
Habituellement non. L’appli doit lire PORT dans l’environnement, ce que Heroku exige déjà. Les applis Rails, Django et Spring qui vérifient l’en-tête Host doivent accepter votre hôte canner.app ou votre domaine.
Canner peut-il faire rouler mon dyno worker?
Pas encore comme deuxième processus. Faites rouler la file de tâches dans le processus web; le guide des tâches en arrière-plan le montre avec Rails et GoodJob.
Combien ça coûte par rapport à Heroku?
Le forfait Démarrage de Canner est gratuit et inclut Postgres. Live coûte 9 $ par mois et garde deux projets toujours actifs, avec domaines personnalisés. Voir les tarifs.
À lire aussi
- BlogueL'alternative canadienne à AWS — par accident
- BlogueAWS Canada est-elle assujettie au CLOUD Act?
- BlogueL'état de l'infrastructure infonuagique canadienne en 2026 — ce qui existe, ce qui manque, et pourquoi c'est important
- GuideAlternatives canadiennes à Heroku en 2026
- GuideRender a-t-il une région au Canada? Solutions
- GuideAlternatives canadiennes à Railway, comparées
Essayez le déménagement avec le forfait gratuit.
Déployez une copie de votre appli et de votre base avec Démarrage, vérifiez-la, puis pointez votre domaine.