Quinze étapes, toutes rejouables
Nom du site, domaine, compte d'administration, certificat, clé SSH : tout est demandé avant de commencer, puis résumé pour confirmation. Ensuite, plus rien à saisir. Chaque étape est idempotente — si l'une échoue, on corrige la cause et on relance la même commande, sans rien défaire.
[00] Pré-vol et vérifications
[01] Durcissement : pare-feu, SSH, fail2ban, sysctl, mises à jour auto
[02] Compte système, dossiers et permissions
[03] Dépendances système
[04] PostgreSQL — service et durcissement
[05] Base de données et rôle applicatif
[06] Memcached
[07] Environnement Python
[08] Paquet JEIKO et mécanisme de mise à jour
[09] Configuration Django (.env, settings, urls)
[10] Service Gunicorn
[11] Nginx
[12] Certificat Let's Encrypt et HTTPS
[13] Sauvegardes et surveillance
[14] Migrations, fichiers statiques, contrôle de santé
- Plusieurs sites par serveur. Chacun reçoit son compte Unix, sa base, son service et ses sauvegardes ; une faille dans l'un ne donne pas accès aux autres.
- Les secrets sont générés, pas choisis. La clé secrète de Django et, si vous laissez le champ vide, le mot de passe PostgreSQL (quarante caractères) sont tirés au hasard. Le mot de passe du compte d'administration sert une fois et n'est enregistré nulle part.
- Le compte d'administration peut se connecter tout de suite : son adresse est enregistrée comme vérifiée à la dernière étape.