Déploiement d'une application React Router 7
Apprends à déployer ton application React Router 7 en production avec un VPS pas cher et performant. Dans ce module pratique, tu découvriras les étapes clés : achat d’un nom de domaine, configuration d’un serveur (Hostinger), conteneurisation avec Docker, reverse proxy avec Caddy, déploiement automatisé via GitHub Actions, et liaison DNS. Maîtrise ta propre infrastructure pour un hébergement flexible, sécurisé et évolutif – le tout à moins de 20 €/mois.
Pourquoi un module “Déploiement” ?
Bravo ! Tu viens de terminer la partie back-end : base PostgreSQL, sessions cookies, authentification sécurisée. Il reste une dernière marche avant de montrer ton application au monde : la mettre en production.
Dans la vidéo (voir transcript) je t’explique qu’un déploiement nécessite deux éléments :
- un serveur qui exécute le code ;
- un nom de domaine qui pointe vers ce serveur.
L’objectif de cette leçon est de t’aider à choisir la bonne stratégie et de te présenter l’architecture que j’utilise sur tous mes projets.
Deux briques indispensables
| Brique | Rôle | Prix indicatif |
|---|---|---|
| Nom de domaine | Alias lisible → IP du serveur | ≈ 12 €/an (.com) |
| Serveur (VPS ou PaaS) | Exécute le process Node / Docker | 0 € – 15 €/mois |
Les noms de domaine s’achètent chez n’importe quel registrar (OVH, Ionos…). Le serveur, lui, peut prendre plusieurs formes ; c’est là que se situe l’arbre de décision.
Panorama des solutions d’hébergement
| Famille | Exemples | Pour qui ? |
|---|---|---|
| PaaS “long-lived” | Fly.io, DigitalOcean Apps, Render | besoin de WebSocket / tâches CRON |
| PaaS serverless | Vercel, Netlify, Cloudflare Workers | API simple, trafic irrégulier |
| VPS « à nu » | OVH, Hetzner, Hostinger, Scaleway | contrôle total, multi-project |
Les enseignements du transcript
- Vercel & Netlify sont ultra rapides à configurer mais limitent parfois les process (pas de cron, WebSocket instable).
- Un VPS demande plus de configuration mais offre – pour le même prix – un salaire complet de liberté (SMTP, stockage de fichiers, services self-hosted, plusieurs sites, etc.).
Important
Étape 1 – Acheter son nom de domaine
Le plus simple : se rendre chez un registrar et taper son idée dans la barre
de recherche.
Le transcript montre react-routeur-france.com à 13 €/an, alors que
algomax.com coûte 26 000 € (oui, ça pique !).
Une fois le domaine acheté, tu auras accès aux champs A et AAAA
(DNS) pour le pointer vers l’adresse IP de ton serveur.
Étape 2 – Louer un VPS et se connecter
1# Exemple : Hostinger KV M 2 (7 €/mois)2ssh root@146.59.123.42
Sur la console de gestion (capture dans la vidéo) tu vois une douzaine de services : deux applis Remix, deux bases PostgreSQL, un Redis, un serveur SMTP… et le CPU plafonne à 50 %. Bref : largement de la marge pour ton projet React Router 7.
Tip
Étape 3 – Installer la stack serveur
- Docker + Docker Compose pour conteneuriser l’app.
- Caddy (ou Nginx) pour le reverse-proxy HTTPS automatique.
- PostgreSQL (ou MariaDB) via un conteneur dédié.
1apt update && apt install docker.io docker-compose caddy -y
Étape 4 – Conteneuriser l’application
1services:2web:3build: .4ports:5- "3000:3000"6env_file: .env.production7restart: always89db:10image: postgres:1611environment:12POSTGRES_PASSWORD: supersecret13volumes:14- ./data/db:/var/lib/postgresql/data
web: l’image générée pardocker build ..db: PostgreSQL persistant.
Warning
.env.production et monte‐le en env_file.Étape 5 – Automatiser avec GitHub Actions
1name: Deploy2on:3push:4branches: [ "main" ]56jobs:7deploy:8runs-on: ubuntu-latest9steps:10- uses: actions/checkout@v411- uses: docker/setup-qemu-action@v312- uses: docker/setup-buildx-action@v313- name: Build image14run: |15docker build -t myapp:${{ github.sha }} .16- name: Push via ssh17uses: appleboy/ssh-action@v0.1.1018with:19host: ${{ secrets.VPS_HOST }}20username: root21key: ${{ secrets.VPS_KEY }}22script: |23docker stop myapp || true24docker rm myapp || true25docker pull myapp:${{ github.sha }}26docker run -d --name myapp -p 3000:3000 myapp:${{ github.sha }}
- La build tourne gratuitement sur GitHub.
- Le binaire est envoyé sur le VPS via SSH et redémarre sans downtime.
- Aucun rayon-laser de CI payante : full open-source.
Étape 6 – Lier domaine ⇄ VPS
- Récupère l’adresse IP publique dans la console de ton hébergeur.
- Crée un enregistrement
Achez ton registrar vers cette IP. - Lance Caddy : il ira chercher le certificat Let’s Encrypt automatiquement.
1caddy reverse-proxy --from https://www.mon-site.com --to http://localhost:3000
30 s plus tard : HTTPS vert, l’app est en ligne !
Pourquoi cette stack vaut l’effort ?
- Coût : ~19 €/mois (domaine + VPS) → illimité en nombre de projets.
- Contrôle total : ajoute un cron, un service Redis, un micro-service IA sans demander la permission.
- Skills transférables : comprendre le Linux que tu pilotes vaut de l’or sur le marché.
Note
Plan d’action résumé
1+ Acheter le domaine (OVH, IONOS…)2+ Louer un VPS 2 vCPU / 2 Go (Hostinger KVM 2)3+ Pointer l’enregistrement DNS vers l’IP du VPS4+ Installer Docker + Caddy sur le serveur5+ Conteneuriser l’app React Router 76+ Écrire le workflow GitHub Actions7+ Valider le déploiement HTTPS
👊 7 étapes et ton application est publique, sécurisée et prête à encaisser la production.
En guise de conclusion
Le déploiement peut paraître impressionnant ; en réalité c’est un processus répété. En maîtrisant ta propre infrastructure tu élimines les coûts cachés et tu acquiers des super-pouvoirs : héberger plusieurs projets, tester des services self-hosted, déployer une mise à jour en une commande.
À toi de jouer : réserve ce VPS, configure ton domaine
et rejoins-moi dans la prochaine leçon où l’on écrira ensemble
le Dockerfile de production !