Aller au contenu principal

Server Checklist

StatutActif — v1.0 — 2026-06-27
PrioritéP0
Obligatoire V1Oui
ResponsableSylvain
Voir aussiPlaybook 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 root sans accès SSH direct (PermitRootLogin no)
  • Compte deploy dé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.conf déployé)
  • Supervisor installé et configuré (deployment/supervisor.conf dé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-run passe)
  • 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/
  • .env production configuré avec les vraies valeurs
  • APP_KEY généré (php artisan key:generate)
  • php artisan migrate --force passé sans erreur
  • php artisan config:cache route:cache view:cache exécuté
  • Workers Supervisor démarrés et en état RUNNING

Déploiement automatique

  • Clé SSH GitHub Actions ajoutée au compte deploy
  • Secret SSH_HOST configuré dans GitHub
  • Secret SSH_PRIVATE_KEY configuré dans GitHub
  • Premier déploiement automatique testé (push sur main)

Monitoring et backup

  • Cron de backup configuré (crontab -l vé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/health retourne 200
  • 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/.