# Migrer depuis Heroku

> Passer une application Heroku sur Fransys : le Procfile, les config vars, Heroku Postgres, le Scheduler et les add-ons.

Source : https://docs.fransys.cloud/guides/migrer-depuis-heroku/ Vérifié sur la console le 2026-10-23.

## La correspondance

| Sur Heroku | Sur Fransys |
|---|---|
| un dyno `web` du Procfile | une **Application** |
| un dyno `worker` | une copie du service, avec un rôle lu par le point d'entrée |
| la phase `release` | **Commandes de déploiement** › **Avant une mise à jour** |
| les config vars | **Variables**, en important un `.env` |
| Heroku Postgres | une base **PostgreSQL** |
| Heroku Redis | une base **Redis** |
| Heroku Scheduler | une **tâche planifiée** |
| un buildpack | un Dockerfile dans votre dépôt |
| le domaine | **Ajouter un domaine**, puis l'enregistrement DNS |

## 1. Le Dockerfile

Fransys construit une image Docker : ajoutez un Dockerfile à votre dépôt. Voir [Déployer Laravel](https://docs.fransys.cloud/guides/laravel/) ou [Node.js et Next.js](https://docs.fransys.cloud/guides/node-nextjs/). Écoutez sur le port de votre choix, réglé ensuite dans **Port du conteneur** (Heroku impose `$PORT`, Fransys non).

## 2. Le service et ses variables

Ajoutez l'application et branchez la CI ([Depuis GitHub ou GitLab](https://docs.fransys.cloud/projets/github-gitlab/)). Récupérez vos config vars :

```sh
heroku config -s -a mon-app > heroku.env
```

puis importez le fichier dans **Variables** (mode **Plusieurs variables (.env)**). Retirez `DATABASE_URL` et `REDIS_URL` : elles viendront des bases Fransys. Protégez les secrets.

## 3. Les données

Ajoutez une base PostgreSQL reliée à l'application, activez son **accès à distance**, puis :

```sh
heroku pg:backups:capture -a mon-app
curl -o dump.backup "$(heroku pg:backups:url -a mon-app)"
pg_restore --no-owner --no-acl -h <hôte> -p <port> -U <utilisateur> -d <base> dump.backup
```

avec les identifiants de la base Fransys. Coupez l'accès à distance une fois l'import fait.

## 4. Les workers et le scheduler

- Chaque dyno `worker` : copiez le service et donnez-lui son rôle. Voir [Application](https://docs.fransys.cloud/projets/application/#workers-files-dattente-tâches-planifiées).
- Chaque tâche du Scheduler : une [tâche planifiée](https://docs.fransys.cloud/projets/taches-planifiees/).

## 5. Basculer

Déployez, vérifiez l'adresse en `fransysapp.com`, puis ajoutez votre domaine et changez le DNS. Gardez l'application Heroku en lecture seule le temps que le DNS se propage. Voir [Domaine et HTTPS](https://docs.fransys.cloud/projets/domaine-et-https/).
