Skip to Content
Serveur LinuxPartie 16 — Cookbook & Annexes16.4 — Glossaire, quiz & suite

Chapitre 16.4 — Glossaire, quiz & suite

⏱️ TL;DR — On boucle le cours. D’abord un glossaire alphabétique de tout le vocabulaire rencontré (du VPS au RPO/RTO), à relire quand un terme t’échappe. Ensuite un quiz final de synthèse — une douzaine de questions transversales qui balaient tout le parcours, du durcissement SSH au rollback. Enfin, où aller ensuite : Ansible, Terraform, Kubernetes, observabilité avancée, sécurité approfondie — et surtout, le seul vrai conseil : pratique sur un vrai VPS. Tu sais maintenant prendre une machine nue et y faire vivre une prod. Le reste, c’est de l’approfondissement.

🎯 Objectifs

  • Fixer le vocabulaire : un terme, une définition courte, sans rouvrir dix chapitres.
  • T’auto-évaluer sur l’ensemble du cours avec un quiz transversal.
  • Savoir quoi apprendre après, dans quel ordre, et pourquoi.

Glossaire

Les termes clés du cours, par ordre alphabétique. Définitions courtes : pour le détail, suis les parties référencées ailleurs.

  • 3-2-1 (règle) — Stratégie de sauvegarde : 3 copies des données, sur 2 supports différents, dont 1 hors-site. Le socle de toute résilience.
  • ACME — Le protocole automatisé par lequel Certbot prouve à Let’s Encrypt que tu contrôles le domaine, et obtient/renouvelle le certificat sans intervention humaine.
  • APT / dpkg — Le gestionnaire de paquets de Debian/Ubuntu. apt install, apt update, apt upgrade ; dpkg est la couche basse.
  • CA (Autorité de certification) — L’organisme qui signe les certificats TLS et que les navigateurs font confiance. Let’s Encrypt est une CA gratuite et automatisée.
  • Certbot — Le client officiel qui obtient et renouvelle les certificats Let’s Encrypt (via ACME), et sait configurer Nginx.
  • CI/CDIntégration continue (build + tests automatiques à chaque push) et déploiement/livraison continue (mise en prod automatisée). Remplace le déploiement manuel fragile.
  • Conteneur — Un processus isolé qui embarque son environnement (dépendances, runtime), lancé à partir d’une image. Léger, reproductible. Cœur de Docker.
  • DNS — L’annuaire qui traduit un nom (formacampus.fr) en adresse IP. Enregistrements A, AAAA, CNAME, MX, TXT.
  • Enregistrement A / AAAA — L’entrée DNS qui associe un nom à une IPv4 (A) ou IPv6 (AAAA). C’est ce qui « pointe » ton domaine vers le VPS.
  • fail2ban — Service qui bannit temporairement les IP qui multiplient les tentatives de connexion (bruteforce SSH notamment).
  • FHSFilesystem Hierarchy Standard : la convention qui range Linux (/etc config, /var données variables, /home, /usr, /tmp…).
  • FPM (PHP-FPM) — Le gestionnaire de processus PHP qui exécute le code derrière Nginx (via fastcgi_pass). L’équivalent PHP d’un serveur applicatif.
  • HSTS — En-tête HTTP (Strict-Transport-Security) qui force le navigateur à n’utiliser que HTTPS pour ton domaine, même si l’utilisateur tape http://.
  • Hyperviseur — La couche de virtualisation qui découpe un serveur physique en plusieurs VPS isolés, chacun avec ses ressources dédiées.
  • Image — Un modèle figé et versionné (le « moule ») à partir duquel on lance des conteneurs. Construite par couches via un Dockerfile.
  • journald / journalctl — Le journal centralisé de systemd et l’outil pour le lire (journalctl -u <service>).
  • Let’s Encrypt — La CA gratuite qui délivre des certificats TLS valides 90 jours, renouvelés automatiquement.
  • Load average — Trois chiffres (charge moyenne à 1/5/15 min) indiquant combien de processus attendent le CPU. Au-dessus du nombre de cœurs = surcharge.
  • Load balancer — Répartiteur qui distribue le trafic entre plusieurs serveurs (scaling horizontal), et retire un serveur tombé.
  • Nginx — Le reverse proxy en façade : reçoit le trafic web, gère TLS/compression/cache, sert le statique et relaie vers l’app locale.
  • OOM (Out Of Memory) — Situation de mémoire saturée où le noyau tue un processus (l’OOM killer) pour sauver la machine. Se prévient avec du swap et un build hors du VPS.
  • PaaSPlatform as a Service (Vercel, Netlify, Render…) : tu pousses du code, la plateforme gère l’infra. Simple mais contraint et coûteux à l’échelle. L’inverse du VPS auto-géré.
  • Pare-feu (UFW) — Le filtre qui n’ouvre que les ports autorisés. default deny incoming + allow explicites. Première ligne de défense.
  • Port — Le « numéro de porte » d’un service sur une IP. HTTP 80, HTTPS 443, SSH 22, Postgres 5432. En dessous de 1024 = privilégié (root requis).
  • Registre (registry) — Le dépôt où l’on publie et récupère des images Docker (Docker Hub, GitHub Container Registry…).
  • Release — Une version déployée de l’app, souvent dans un dossier daté ; on bascule dessus via un symlink current pour un rollback instantané.
  • Reverse proxy — Un serveur (Nginx) placé devant l’app : il reçoit les requêtes publiques et les transmet à l’app privée, qu’on n’expose jamais directement.
  • RPO / RTORPO = quantité de données qu’on accepte de perdre (fenêtre entre deux sauvegardes) ; RTO = temps qu’on accepte pour tout remonter après une panne. Ils dimensionnent ta stratégie.
  • Reverse DNS — L’inverse du DNS classique : de l’IP vers le nom. Utile surtout pour l’envoi d’e-mails (réputation).
  • SPOFSingle Point Of Failure : un maillon unique dont la panne fait tomber tout le système. La résilience consiste à les éliminer.
  • SSH — Le protocole d’accès distant chiffré au serveur. Recommandé : clés ed25519, root désactivé, mots de passe désactivés.
  • Clé publique / clé privée — La paire SSH : la publique se dépose sur le serveur (authorized_keys), la privée reste secrète sur ton poste. On s’authentifie sans mot de passe, sans jamais transmettre le secret.
  • sudo — Exécuter une commande avec les privilèges d’administration, ponctuellement, sans travailler en root en permanence.
  • swap — De l’espace disque utilisé comme extension de la RAM. Filet de sécurité contre l’OOM (lent, donc pas une solution de performance).
  • Symlink (lien symbolique) — Un « raccourci » de fichier/dossier. Clé du déploiement par releases : current pointe vers la release active ; le rollback = repointer le symlink.
  • systemd — Le système d’init de Linux : il démarre, surveille et redémarre les services. On y décrit une app dans un fichier unit .service.
  • TLS — Le chiffrement du transport (l’« S » de HTTPS). Négocié à la connexion, il vérifie le certificat et protège le trafic. Versions actuelles : 1.2 et 1.3.
  • TTLTime To Live : durée de mise en cache d’un enregistrement DNS. Un TTL bas accélère la propagation d’un changement, mais sollicite plus les résolveurs.
  • Unit — Un fichier de configuration systemd (ex. un .service) décrivant comment lancer et surveiller quelque chose. Sections [Unit] / [Service] / [Install].
  • Upstream — Dans le vocabulaire du reverse proxy, le serveur d’arrière-plan vers lequel Nginx relaie (ton app locale). Un 502 = « upstream injoignable ».
  • Volume — Un espace de stockage persistant monté dans un conteneur Docker, pour que les données survivent à la destruction du conteneur.
  • VPSVirtual Private Server : une machine virtuelle louée, avec ses ressources dédiées (CPU/RAM/disque/IP), sur laquelle tu es root. Le terrain de jeu du cours.
  • WSGI / ASGI — L’interface entre un serveur web et une app Python (Django, Flask…), servie par un serveur applicatif comme Gunicorn/Uvicorn. L’équivalent Python de PHP-FPM.

🧠 Quiz final de synthèse

Une douzaine de questions transversales : si tu réponds à toutes sans hésiter, tu as le cours en main. Sinon, la question pointe la partie à relire.

1. Quand un VPS auto-géré bat-il un PaaS, et à quel prix ?

Le VPS gagne quand tu veux maîtriser les coûts (un PaaS devient cher à l’échelle), garder le contrôle (services longue durée, cron, binaires système, WebSockets, base à toi), et éviter la dépendance à une plateforme. Le prix à payer : tu es responsable de la sécurité, des mises à jour, des sauvegardes et du dépannage — ce que le PaaS faisait pour toi. Le VPS échange de la simplicité contre de l’autonomie et de l’économie.

2. Pourquoi ne jamais travailler en root, et que met-on en place à la place ?

Parce que root peut tout casser sans garde-fou, et qu’une session root compromise donne les pleins pouvoirs à l’attaquant. À la place : un utilisateur dédié (ex. deploy) avec sudo pour les actions ponctuelles d’admin, la connexion root en SSH désactivée, et le moindre privilège partout (l’app tourne aussi en non-root). C’est de la défense en profondeur : limiter ce qu’un compromis peut atteindre.

3. Pourquoi l’authentification SSH par clés est-elle plus sûre qu’un mot de passe ?

Une clé privée ne quitte jamais ton poste et n’est jamais transmise ; le serveur ne connaît que la clé publique. Impossible à deviner par bruteforce (contrairement à un mot de passe), rien à intercepter sur le réseau. On désactive alors PasswordAuthentication : les milliers de tentatives de bruteforce sur le port 22 deviennent inutiles. On garde une session de secours ouverte le temps de valider.

4. Quel est le rôle exact de Nginx, et pourquoi ne pas exposer l’app directement ?

Nginx est le reverse proxy en façade : il écoute sur 80/443, gère le TLS, la compression, le cache, les logs, sert le statique, plafonne la taille des requêtes, et relaie (proxy_pass) vers l’app locale sur un port privé. Exposer l’app nue, ce serait la priver de ces protections (requêtes lentes, TLS, filtrage) et l’ouvrir directement — on la garde sur 127.0.0.1, cachée derrière Nginx.

5. Différence entre une erreur 502 et une erreur 504 ? Que fait-on pour chacune ?

502 Bad Gateway = Nginx n’a pas pu joindre l’app (tombée, mauvais port) → on relance l’app après avoir lu systemctl status / journalctl. 504 Gateway Timeout = l’app répond trop lentement et Nginx se lasse → on accélère (requête SQL, cache, asynchrone) ou, exceptionnellement, on augmente le timeout d’un endpoint précis. En un mot : 502 = « ne répond pas », 504 = « répond trop tard ».

6. Pourquoi faut-il « enable » un service systemd, et pas seulement le « start » ?

start démarre le service pour maintenant ; enable l’inscrit au boot. Sans enable, au prochain reboot (ou après une panne du VPS), le service ne remonte pas tout seul — ta prod reste à terre. On combine les deux : systemctl enable --now. On ajoute Restart=always pour qu’il redémarre aussi après un crash. C’est ce qui rend une prod autonome.

7. Pourquoi la base de données ne doit-elle jamais écouter sur 0.0.0.0 ?

Parce que 0.0.0.0 = joignable depuis Internet. Une base exposée est scannée et attaquée en minutes (identifiants par défaut, failles). La base doit écouter en local uniquement (127.0.0.1), n’accepter que l’app sur la même machine (pg_hba.conf), et son port (5432/3306) rester fermé au pare-feu. Vérification : sudo ss -tulpn ne doit jamais montrer la base sur 0.0.0.0.

8. Les certificats Let’s Encrypt durent 90 jours : comment ne jamais tomber en panne dessus ?

Par le renouvellement automatique : Certbot installe un timer systemd qui renouvelle bien avant l’échéance. On le vérifie avec certbot renew --dry-run et systemctl list-timers | grep certbot. On garde le port 80 ouvert (le challenge ACME en a besoin) et le DNS qui pointe. Et on ajoute une alerte d’expiration (J-14) : l’automatisation doit être surveillée, pas supposée acquise.

9. Que dit la règle 3-2-1, et pourquoi « une sauvegarde non testée n’existe pas » ?

3 copies, sur 2 supports différents, dont 1 hors-site : ça protège contre la panne disque, l’erreur humaine, le ransomware et le sinistre du datacenter. Mais une sauvegarde qu’on n’a jamais restaurée peut être corrompue, incomplète ou impossible à remonter — on ne le découvre qu’au pire moment. D’où la restauration testée de bout en bout : c’est elle, et non le fait de « faire des backups », qui garantit la reprise.

10. Un processus meurt sans erreur applicative, souvent au build : que suspecter, comment confirmer, comment corriger ?

Le OOM killer : la RAM a saturé, le noyau a tué le process le plus gourmand. Confirmation : sudo journalctl -k | grep -i "killed process" (ou dmesg). Corrections : ajouter du swap (filet), et surtout builder dans la CI plutôt que sur le petit VPS (next build est glouton), voire monter la taille du VPS si l’app dépasse durablement la RAM en fonctionnement normal.

11. Comment un déploiement par releases + symlink permet-il un rollback instantané ?

Chaque déploiement crée un nouveau dossier de release (daté ou taggé), et un lien symbolique current pointe vers la release active. Publier = repointer current vers la nouvelle release (opération atomique, sans downtime). Revenir en arrière = repointer current vers la release précédente, en une commande : le rollback est instantané car l’ancienne version est encore là, intacte. On purge juste les très vieilles releases pour le disque.

12. Cite les couches de « défense en profondeur » d’un VPS bien configuré.

De l’extérieur vers l’intérieur : pare-feu (UFW, seuls 22/80/443 ouverts) + fail2ban ; SSH par clés, root off, mots de passe off ; TLS qui chiffre tout ; Nginx en façade qui cache et filtre l’app ; app en utilisateur non-root, écoutant en local ; base non exposée ; secrets hors git en 600 ; mises à jour de sécurité automatiques ; sauvegardes testées. Si une couche tombe, les autres tiennent — aucune n’est censée être la seule.

Où aller ensuite

Tu sais prendre un VPS nu et y faire vivre une prod sécurisée, servie en HTTPS, en service, sauvegardée, monitorée, déployée automatiquement. C’est le socle. Pour aller plus loin, dans un ordre raisonnable :

  • Infrastructure as Code (Ansible) — Tu as tout fait à la main ce cours-ci, pour comprendre. L’étape suivante : décrire ta configuration serveur dans des fichiers Ansible (playbooks), pour reprovisionner un VPS identique en une commande, sans réinventer. Le geste devient reproductible et versionné.
  • Terraform — Pendant qu’Ansible configure l’intérieur de la machine, Terraform provisionne la machine elle-même (et le DNS, le réseau, le stockage) chez ton fournisseur, en code. Créer/détruire une infra entière devient déclaratif.
  • Conteneurs à l’échelle (Kubernetes) — Quand un docker compose sur un VPS ne suffit plus (plusieurs machines, auto-scaling, redéploiements sans coupure à grande échelle), Kubernetes orchestre les conteneurs sur un cluster. Puissant et complexe : n’y va que quand le besoin est réel — beaucoup de projets n’en auront jamais besoin.
  • Observabilité avancée (Prometheus + Grafana) — Au-delà d’Uptime Kuma : Prometheus collecte des métriques détaillées, Grafana les met en tableaux de bord, avec de l’alerting fin. Tu passes de « est-ce que ça tourne ? » à « pourquoi est-ce lent à 14 h ? ».
  • Cloud managé — AWS, GCP, Azure, Scaleway… Les mêmes concepts (réseau, DNS, TLS, load balancer, secrets, IAM) à plus grande échelle, avec des services managés. Le socle Linux de ce cours te rend ces plateformes lisibles au lieu de magiques.
  • Sécurité approfondie — Audit (Lynis), durcissement CIS, gestion centralisée des secrets (Vault), scan de vulnérabilités, revue de logs, SIEM. La sécurité est un fil sans fin : ce cours t’a donné les réflexes de base, la suite est un métier.

💡 Réflexe — Le seul vrai conseil : pratique sur un vrai VPS. Prends une petite machine à quelques euros, casse-la, répare-la, reconstruis-la de zéro avec la checklist. Aucune lecture ne remplace un ssh deploy@… réel, un vrai 502 à 23 h, une vraie restauration de sauvegarde. C’est que la compétence se grave.

Mot de la fin

Tu es parti d’un mur : « mon app tourne en local, et après ? ». Tu as maintenant la carte et les mains. Tu sais provisionner un VPS, t’y déplacer sans peur, le durcir, servir ton app derrière Nginx en HTTPS, la faire tourner en service, brancher une base, l’automatiser, la surveiller, la sauvegarder — et la dépanner quand elle tombe. C’est exactement ce qui fait le dev qui livre de bout en bout, autonome, sans dépendre d’un PaaS ni d’un ops.

La prod n’est plus une boîte noire. C’est une machine que tu comprends et que tu contrôles. Garde ce cookbook ouvert, pratique en vrai, et livre.


Fin du cours. Reviens à l’accueil du cours pour réviser une partie, ou situe ce cours dans le parcours global. Bonne prod.

Last updated on