Serveur Linux & déploiement — du VPS nu à la prod
⏱️ TL;DR — Ton app tourne en local,
next buildpasse… et après ? Ce cours te fait franchir le mur de la mise en production : prendre un VPS Linux nu, t’y déplacer sans peur, le sécuriser, y servir ton app derrière Nginx en HTTPS, la faire tourner comme un service qui redémarre tout seul, brancher une base de données, automatiser le déploiement (CI/CD), puis surveiller et sauvegarder. De la première connexion SSH augit pushqui déploie en prod : la compétence qui fait de toi un dev autonome, capable de livrer de bout en bout — sans dépendre d’un PaaS ni d’un ops.
À qui s’adresse ce cours
À toi : un développeur web (Next.js / React / TypeScript, mais aussi Symfony / PHP / Node — les principes valent partout) qui sait coder mais pour qui « le serveur », c’est Vercel, Netlify ou un git push magique. Tu n’as jamais administré de machine Linux et le terminal t’intimide un peu. Aucune connaissance système préalable n’est requise. À la fin, tu sauras provisionner un VPS, le durcir, y déployer un front Next.js et une API, les servir en HTTPS, brancher Postgres, conteneuriser avec Docker, automatiser avec GitHub Actions, et opérer le tout (logs, monitoring, sauvegardes, dépannage) — comme un pro.
💡 Le pari central de ce cours — Héberger soi-même a la réputation d’être « compliqué » et « réservé aux ops ». Faux. C’est une compétence de dev qui s’apprend, et elle change tout : tu deviens autonome (plus prisonnier des limites et des prix d’un PaaS), tu économises (un VPS à quelques euros fait tourner ce qui te coûterait cent fois plus en cloud managé), et tu débloques ce qu’un PaaS interdit — services longue durée, cron, bases de données, binaires système, WebSockets, contrôle total. Peu de devs front/full-stack maîtrisent vraiment leur infra. Ceux qui le font livrent seuls des projets entiers. C’est exactement ce qui te rend rare.
Ce que tu sauras faire à la fin
- Choisir entre PaaS et VPS selon le projet, et dimensionner un serveur.
- Te déplacer au terminal Linux sans hésiter : fichiers, permissions, processus,
systemd. - Te connecter en SSH par clés et durcir l’accès (root off, mot de passe off, pare-feu, fail2ban).
- Provisionner un VPS de zéro : utilisateur
deploy, mises à jour, UFW, hardening initial. - Pointer un domaine (DNS) et diagnostiquer le réseau (
dig,ss,curl). - Servir une app derrière Nginx (reverse proxy) en HTTPS avec Let’s Encrypt (auto-renouvelé).
- Faire tourner Next.js, Symfony/PHP-FPM, WordPress ou une app Python en service (systemd / PM2).
- Installer et sécuriser PostgreSQL / MySQL, et sauvegarder une base (restauration testée).
- Conteneuriser avec Docker & docker compose (app + DB + proxy).
- Automatiser le déploiement avec GitHub Actions (build, test, deploy par SSH, releases, rollback).
- Observer (logs, métriques, monitoring, alerting) et sauvegarder (règle 3-2-1, restic, offsite).
- Dépanner en prod (502, disque plein, OOM, cert expiré) et préparer le scaling.
Le sommaire
| # | Partie | Ce que ça couvre |
|---|---|---|
| 1 | Comprendre le déploiement | localhost → prod, PaaS vs VPS vs cloud, choisir & dimensionner. |
| 2 | Linux : les fondamentaux | Distrib, système de fichiers, naviguer, éditer, pipes & redirections. |
| 3 | Utilisateurs, permissions, processus | Users/groupes, sudo, permissions rwx, processus, systemd. |
| 4 | SSH : accès & durcissement | Clés ed25519, ~/.ssh/config, durcir sshd, scp/rsync, tunnels. |
| 5 | Provisionner & durcir le VPS | apt, utilisateur deploy, UFW, fail2ban, MàJ auto, checklist. |
| 6 | Réseau, DNS & domaine | TCP/IP, ports, DNS (A/AAAA/CNAME), pointer un domaine, diagnostic. |
| 7 | Nginx : le reverse proxy | Server blocks, statique, proxy_pass, vhosts, gzip, logs. |
| 8 | HTTPS avec Let’s Encrypt | TLS, Certbot, auto-renouvellement, HSTS, redirection HTTP→HTTPS. |
| 9 | Déployer Node / Next.js | Build prod, systemd vs PM2, Nginx devant Next, zéro-downtime. |
| 10 | Autres stacks | PHP-FPM, Symfony prod, WordPress, SPA statique, Python. |
| 11 | Bases de données en prod | Postgres/MySQL, accès, pg_hba, tuning, sauvegardes DB. |
| 12 | Docker & conteneurs | Images/volumes, Dockerfile Next, compose, Docker en prod. |
| 13 | CI/CD & automatiser | Deploy par git, GitHub Actions, releases & rollback, secrets. |
| 14 | Observer & superviser | Logs, métriques, monitoring/alerting, supervision applicative. |
| 15 | Sauvegardes, résilience & scaling | 3-2-1, restic, restauration testée, vertical vs horizontal. |
| 16 | Cookbook & Annexes | Runbooks de dépannage, cheatsheets, checklist prod, glossaire, quiz. |
Le fil rouge : FormaCampus
Tout au long du cours, on met en production FormaCampus — la même EdTech française (SaaS Next.js) que dans les cours Moodle, RGPD et Interop EdTech, vue cette fois sous l’angle infra & déploiement. Elle rapatrie sa prod d’un PaaS vers son propre VPS Ubuntu LTS pour maîtriser coûts, données et services. On va : provisionner et durcir le serveur, pointer son domaine, servir son front Next.js et son API Symfony derrière Nginx + HTTPS, les faire tourner en services, brancher Postgres, puis industrialiser — Docker, CI/CD (GitHub Actions), monitoring et sauvegardes. Chaque partie fait avancer un chantier réel, dans l’encadré 🧭 Sur FormaCampus.
Comment lire ce cours
- Dans l’ordre la première fois : on part du VPS nu et on empile les couches — comprendre, Linux, accès, sécurité, réseau, web, HTTPS, apps, données, industrialisation. Chaque partie suppose la précédente.
- En référence ensuite : le Cookbook & Annexes rassemble les runbooks de dépannage, les cheatsheets (Linux, Nginx, systemd, SSH, UFW, Docker, Certbot), la checklist de mise en prod et un glossaire.
- On tape les commandes : ce cours s’apprend les mains sur le clavier. Prends un petit VPS (quelques euros/mois) et fais les gestes en vrai — c’est là que ça rentre.
🔒 La sécurité n’est pas une partie, c’est un fil — Un serveur exposé sur Internet est attaqué en permanence (des bots scannent le port 22 dès la première minute). La sécurité traverse tout le cours : SSH par clés, root désactivé, pare-feu, fail2ban, HTTPS partout, ports fermés, moindre privilège, secrets hors du code, sauvegardes testées. On ne « sécurise pas à la fin » : on construit sécurisé dès le départ.
⚠️ Piège — Le plus grand piège du débutant, c’est de croire que « ça marche donc c’est bon ». Un site accessible n’est pas un site en prod : sans HTTPS, sans redémarrage auto, sans pare-feu, sans sauvegardes, sans monitoring, c’est une panne ou une fuite qui attend son heure. Ce cours t’apprend à livrer du robuste, pas du « ça tourne pour l’instant ».
Prêt ? On commence par la carte du territoire : comprendre le déploiement.