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.
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.
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é.
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.
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é.
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.
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.
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.
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.
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.