ContenuPied de page
Roadmaps Faciles
Roadmaps Faciles
BienvenuePremiers pas

Comprendre

Utiliser

Gérer

Technique

Documentation techniqueConfiguration DNSDéploiementSelf-hostingSécuritéTracking & AnalyticsFeature Flags

FAQ
Technique

Déploiement

Guide de déploiement de Roadmaps Faciles sur différentes plateformes.

Section technique

Cette page s'adresse aux équipes techniques en charge du déploiement et de l'hébergement de l'instance.

Prérequis

  • Node.js 24 ou supérieur
  • PostgreSQL 18 - Base de données principale
  • Redis - Cache et sessions
  • SMTP - Envoi d'emails (magic links, invitations)

Plateformes supportées

Scalingo

Roadmaps Faciles supporte nativement le déploiement sur Scalingo. Le fournisseur de domaine Scalingo gère automatiquement les certificats TLS et l'ajout de domaines personnalisés via l'API Scalingo.

Variables d'environnement spécifiques :

  • DOMAIN_PROVIDER=scalingo ou DOMAIN_PROVIDER=scalingo-wildcard
  • DOMAIN_SCALINGO_API_TOKEN, DOMAIN_SCALINGO_API_URL, DOMAIN_SCALINGO_APP_ID

Clever Cloud

Le déploiement sur Clever Cloud est supporté avec la gestion automatique des domaines personnalisés.

Variables d'environnement spécifiques :

  • DOMAIN_PROVIDER=clevercloud
  • DOMAIN_CLEVERCLOUD_* (consumer key, secret, token, app ID)

Docker / VPS

Pour un déploiement sur serveur dédié ou VPS, utilisez Caddy comme reverse proxy pour la gestion TLS on-demand :

  • DOMAIN_PROVIDER=caddy
  • DOMAIN_CADDY_ADMIN_URL - URL de l'API admin Caddy

Caddy interroge l'endpoint /api/domains/check?domain=... avant d'émettre un certificat, pour vérifier que le domaine est autorisé.

Coolify (self-host)

Roadmaps Faciles peut être déployé sur une instance Coolify self-hosted, qui orchestre Docker Compose + Traefik + ressources managées (PostgreSQL, Redis). Configuration complète, Dockerfiles et workflows GHA fournis dans le dépôt.

L'architecture recommandée s'appuie sur :

  • Wildcard DNS (Gandi LiveDNS ou équivalent) pour couvrir les sous-domaines tenants en un seul certificat Let's Encrypt
  • DNS challenge Traefik (provider gandiv5) pour la génération automatique des certificats wildcard
  • MinIO comme stockage S3-compatible self-hosted (ou S3 externe)
  • STORAGE_S3_KEY_PREFIX pour mutualiser un bucket S3 entre environnements (review apps notamment)

3 environnements isolés : production (deploy sur tag v*), staging (deploy sur push dev), review (preview deployment par PR). Chaque PR ouverte spawn une app éphémère avec sa propre DB Postgres (créée à la volée par l'entrypoint) et un préfixe S3 dédié, automatiquement nettoyés à la fermeture de la PR.

Déploiement automatisé (CI/CD)

Le dépôt fournit un workflow d'exemple .github/workflows/deploy.yml qui couvre un schéma classique trois-tiers : staging, production, review apps. Il peut servir de base pour votre propre instance, à adapter selon votre plateforme cible.

Pattern recommandé :

ÉvénementEnvironnementAction
Push sur la branche d'intégration (ex: dev)StagingDéploiement automatique après passage des jobs CI
Tag de release (ex: pattern v*)ProductionDéploiement automatique sur tag stable
workflow_dispatchStaging ou ProductionDéclenchement manuel ponctuel
Pull requestReview appSpawn d'une instance éphémère par PR

Quel que soit l'orchestrateur utilisé (Scalingo, Clever Cloud, Coolify, k8s…), les review apps méritent une attention particulière : prévoir une DB par PR (créée à la volée à l'entrypoint, ou via une instance partagée + base par PR) et un stockage S3 isolé (bucket dédié, ou bucket partagé avec préfixe par PR via STORAGE_S3_KEY_PREFIX=pr-<n>/). Le cleanup à la fermeture de PR (drop DB + purge prefix S3) est typiquement géré par un workflow GHA dédié.

Les secrets de la plateforme (token API, credentials S3, etc.) gagnent à être scopés par GitHub Environment (staging, production, review-cleanup) plutôt qu'en secrets globaux du dépôt.

Variables d'environnement principales

VariableDescriptionObligatoire
DATABASE_URLURL de connexion PostgreSQLOui
REDIS_URLURL de connexion RedisOui
SECURITY_JWT_SECRETSecret pour les tokens JWT et HMACOui
SECURITY_WEBHOOK_SECRETSecret pour la signature des webhooksOui
MAILER_SMTP_HOSTHôte du serveur SMTPOui
MAILER_FROM_EMAILAdresse d'expédition des emailsOui
NEXT_PUBLIC_SITE_URLURL publique de l'instanceOui
ADMINSIdentifiants des super-administrateurs (séparés par virgule)Oui
DOMAIN_PROVIDERFournisseur de domaine (noop, scalingo, caddy...)Non
DNS_PROVIDERFournisseur DNS (noop, manual, ovh, cloudflare)Non
PLATFORM_DOMAINDomaine de la plateforme d'hébergement (ex: scalingo.io) - redirige vers NEXT_PUBLIC_SITE_URLNon
SENTRY_DSNDSN Sentry pour le suivi d'erreurs (vide = désactivé)Non

La liste complète des variables est documentée dans le fichier .env.development du projet.

Observabilité

ComposantDescription
Logs structurésPino (JSON en production, formaté en dev). Logger serveur uniquement.
Suivi d'erreursSentry (optionnel, activé par SENTRY_DSN). Auto-instrumente RSC, Server Actions, Prisma.
Health checkGET /api/healthz - Vérifie la connectivité DB et Redis. HTTP 200 si OK, 503 sinon.
Correlation IDUUID généré par requête, propagé via l'en-tête x-correlation-id (requête et réponse).

Configuration DNS

Guide technique pour la configuration DNS des domaines personnalisés.

Self-hosting

Guide complet pour déployer Roadmaps Faciles sur votre propre infrastructure.

On this page

PrérequisPlateformes supportéesScalingoClever CloudDocker / VPSCoolify (self-host)Déploiement automatisé (CI/CD)Variables d'environnement principalesObservabilité