Guide complet pour installer et mettre à jour Road To sur votre propre infrastructure avec Docker et docker-compose.selfhost.yml.
Ce guide décrit l'installation de Road To en auto-hébergement (self-hosted) avec Docker, du téléchargement de l'image jusqu'à la mise à jour d'une instance existante. Pour les tarifs et les licences, consultez la page Tarifs.
app)Récupérez l'image Docker officielle de Road To, publiée sur Docker Hub sous baptcompany/road-to-next (multi-arch amd64/arm64) :
docker pull baptcompany/road-to-next
La stack self-hosted référence cette image par défaut via la variable ROADTO_IMAGE dans docker-compose.selfhost.yml :
services:
app:
image: ${ROADTO_IMAGE:-baptcompany/road-to-next:latest}
docker-compose.selfhost.yml et .env.example du dépôt Road To.cp .env.example .env
docker compose -f docker-compose.selfhost.yml up -d
La stack lance trois services : app (Road To), postgres (PostgreSQL 17) et redis (Redis 7). Le service app attend que postgres et redis soient en bonne santé (healthcheck) avant de démarrer.
.envLe fichier .env (basé sur .env.example) configure l'application et la base de données. Variables principales :
| Variable | Description |
|---|---|
POSTGRES_PASSWORD | Mot de passe PostgreSQL — requis, sans valeur par défaut |
POSTGRES_USER / POSTGRES_DB | Utilisateur et base PostgreSQL (défaut : roadto) |
BETTER_AUTH_URL | URL publique de l'instance (ex. https://roadto.mondomaine.fr) |
BETTER_AUTH_SECRET | Secret de session — générer avec openssl rand -base64 32 |
APP_PORT | Port exposé sur l'hôte (défaut 3000) |
EMAIL_FROM | Adresse d'expédition des emails transactionnels (requis) |
SMTP_HOST / SMTP_PORT / SMTP_USER / SMTP_PASSWORD / SMTP_SECURE | Transport SMTP (recommandé en self-host). Si SMTP_HOST est défini, il prime sur Resend |
RESEND_API_KEY | Alternative cloud : clé Resend. Inutile si SMTP est configuré |
GEMINI_API_KEY / AI_CHAT_HMAC_SECRET | Assistant IA et génération de templates (optionnel) |
GITHUB_CLIENT_ID / GITHUB_CLIENT_SECRET, GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET | Connexion OAuth (optionnel) |
DATABASE_URL, DATABASE_URL_UNPOOLED et REDIS_URL sont construites automatiquement par docker-compose.selfhost.yml à partir des services postgres et redis — ne les définissez pas manuellement en mode compose.
Les templates React Email sont agnostiques du transport. Configurer l'un ou l'autre :
SMTP (self-hosted) — n'importe quel serveur (Postfix, Mailgun SMTP, Amazon SES SMTP, etc.) :
EMAIL_FROM=Road To <noreply@mondomaine.fr>
SMTP_HOST=smtp.mondomaine.fr
SMTP_PORT=587
SMTP_USER=roadto
SMTP_PASSWORD=
# SMTP_SECURE=true uniquement pour TLS implicite (port 465)
SMTP_SECURE=false
Resend (cloud) — si SMTP_HOST est vide :
EMAIL_FROM=Road To <noreply@mondomaine.fr>
RESEND_API_KEY=re_xxx
Si les deux sont renseignés, SMTP gagne. Sans aucun des deux, l'envoi échoue avec un log explicite (No mail transport configured) — pas d'échec silencieux. RESEND_AUDIENCE_ID (audiences marketing) est optionnel et ignoré sans clé Resend.
Aucune étape manuelle n'est requise pour la base de données : l'image applique automatiquement les migrations Prisma au démarrage du conteneur app (entrypoint prisma migrate deploy), une fois postgres prêt.
Une fois la stack démarrée, l'application est accessible sur http://localhost:${APP_PORT:-3000} (ou sur l'URL configurée via BETTER_AUTH_URL derrière votre reverse proxy). Créez votre premier compte et votre organisation depuis l'écran d'inscription.
Licence (modèle n8n) : aucune clé n'est requise pour démarrer (édition Community, 2 projets). Pour passer à Community registered (10 projets), Settings → Licence → Unlock (email) puis coller la clé, ou ROADTO_LICENSE_KEY. Une clé Pro (émise manuellement pour l'instant) débloque projets illimités et options payantes. L'instance ne se bloque jamais si la clé est invalide : retour Community.
Avec une licence Pro ou Enterprise, personnalisez le nom, le logo et les couleurs de toute l'instance :
| Variable | Description |
|---|---|
BRAND_NAME | Nom affiché (nav, emails, onglet) |
BRAND_LOGO_URL | URL HTTPS ou chemin /… |
BRAND_PRIMARY | Couleur primary #RRGGBB |
BRAND_ACCENT | Couleur accent optionnelle #RRGGBB |
L'édition Community ignore ces réglages (marque Road To partout). Après un premier enregistrement via l'UI, les valeurs en base priment sur BRAND_*.
L'envoi d'emails transactionnels se configure uniquement via les variables SMTP_* / RESEND_API_KEY (pas d'UI SMTP) — voir aussi les notes d'installation ci-dessus.
Pour mettre à jour une instance existante vers la dernière version de l'image :
docker compose -f docker-compose.selfhost.yml pull
docker compose -f docker-compose.selfhost.yml up -d
Les migrations Prisma sont réappliquées automatiquement au redémarrage du conteneur app, sans intervention manuelle.