9 leçons · 95 min Intermédiaire

Déployer sur un VPS · le DevOps minimal

Un serveur Debian/Ubuntu chez n'importe quel hébergeur, durci, en HTTPS, déployé automatiquement à chaque git push. Le système d'un projet perso bien géré.

FR EN
Progression 0/9
1

C'est quoi un VPS ?

Hôtel, appartement vide ou Airbnb ? Mutualisé, VPS, PaaS : choisir le bon niveau de contrôle, le bon hébergeur, la bonne taille, puis ta première connexion SSH.

10 min
2

Durcir son VPS

Les bots attaquent ton IP dès la première minute. Les 5 gestes qui ferment la porte : utilisateur deploy, clés SSH, firewall ufw, fail2ban, mises à jour automatiques.

12 min
3

systemd, le concierge

Ton worker Messenger doit survivre à un crash à 3h du matin et à un reboot. Un fichier .service, Restart=always, et journalctl pour lire ce qui s'est passé.

10 min
4

Docker Compose sur VPS

En finir avec « ça marche chez moi » : ton app Symfony emballée avec FrankenPHP, sa base et ses workers dans une seule recette compose.yml.

11 min
5

HTTPS automatique avec Caddy

Un domaine en HTTPS sans rien installer de plus : FrankenPHP embarque Caddy. SERVER_NAME, un volume pour les certificats, et le mécanisme ACME expliqué.

9 min
6

La pipeline CI

À chaque push, GitHub teste (PHPUnit, composer audit) puis construit ton image et la pousse sur GHCR, taguée par commit. Le rouge bloque tout.

10 min
7

Déployer automatiquement

git push = en ligne : le VPS tire l'image finie (pull, up -d --wait), applique les migrations Doctrine et relance les workers. Clé SSH dédiée, secrets.

12 min
8

Robustesse et rollback

Un déploiement cassé se répare en 15 secondes : chaque commit a son image taguée sha, le rollback = re-pointer un tag. Et le piège des migrations.

10 min
9

Sauvegardes et monitoring

Le minimum qui sauve : dump de la base depuis le conteneur + copie hors-site rclone, volumes, alerte UptimeRobot. Et l'étape 2 : le mode worker de FrankenPHP.

11 min

Ce que vous allez apprendre

Durcir un VPS en 5 gestes : utilisateur deploy, clés SSH, firewall, fail2ban, mises à jour auto

Faire tourner une app qui survit aux crashs et aux reboots (systemd, Docker Compose) en HTTPS automatique (Caddy)

Mettre en place le déploiement automatisé : git push → tests → SSH → healthcheck, avec les secrets bien gérés

Rendre le système robuste : bascule atomique, rollback en une commande, sauvegardes hors-site, alerte de panne

Prérequis : être à l'aise avec le terminal et Git (voir le cours Git & terminal). Le cours Tester son code est le compagnon idéal : ce sont tes tests qui bloqueront un mauvais déploiement. Toutes les commandes se pratiquent ici dans un terminal simulé, donc aucun serveur à payer pour suivre le cours.

Commencer la leçon 1

Gratuit · Sans inscription · 10 minutes