Server Checklist
| Statut | Actif — v1.0 — 2026-06-27 |
| Priorité | P0 |
| Obligatoire V1 | Oui |
| Responsable | Sylvain |
| Voir aussi | Playbook Security · Playbook Backup · DevOps Infrastructure |
Checklist de configuration d'un nouveau serveur VPS ou lors d'une réinstallation.
Système de base
- Accès SSH par clé uniquement — désactiver l'authentification par mot de passe (
PasswordAuthentication no) - Compte
rootsans accès SSH direct (PermitRootLogin no) - Compte
deploydédié avec accès sudo limité - UFW ou équivalent configuré — ports ouverts : 22, 80, 443 uniquement
- Mises à jour automatiques de sécurité activées (
unattended-upgrades)
Stack applicative
- PHP 8.4 + FPM installé et configuré
- Nginx installé et configuré (
deployment/nginx.confdéployé) - Supervisor installé et configuré (
deployment/supervisor.confdéployé) - Redis installé et accessible localement uniquement
- PostgreSQL accessible (Supabase ou local)
TLS et domaine
- Certificat TLS Let's Encrypt configuré via Certbot
- Renouvellement automatique actif (
certbot renew --dry-runpasse) - Redirection HTTP → HTTPS active dans Nginx
- Headers de sécurité Nginx en place (X-Frame-Options, X-Content-Type-Options, etc.)
Application
- Code cloné dans
/srv/dmv/api/ -
.envproduction configuré avec les vraies valeurs -
APP_KEYgénéré (php artisan key:generate) -
php artisan migrate --forcepassé sans erreur -
php artisan config:cache route:cache view:cacheexécuté - Workers Supervisor démarrés et en état
RUNNING
Déploiement automatique
- Clé SSH GitHub Actions ajoutée au compte
deploy - Secret
SSH_HOSTconfiguré dans GitHub - Secret
SSH_PRIVATE_KEYconfiguré dans GitHub - Premier déploiement automatique testé (push sur
main)
Monitoring et backup
- Cron de backup configuré (
crontab -lvérifié) - Premier backup manuel déclenché et vérifié
- Stockage distant configuré pour les backups
- UptimeRobot ou équivalent configuré sur le health check
- Alerte disque configurée
Vérification finale
- Health check API :
curl https://api.monvillage.fr/api/v1/healthretourne200 - Connexion HTTPS sans warning navigateur
- Logs Nginx sans erreur
- Workers actifs
- Backup J0 présent et intègre
Conserver une trace de la date de mise en place et des choix de configuration dans ce document ou dans
docs/decisions/.