Public visé : l'administrateur système du prestataire de la Mairie de Lauris, qui découvre ce projet sans contexte préalable. Cette page est la version en ligne du dossier de transfert remis avec le projet ; elle oriente, sans dupliquer le reste de la documentation (architecture, guide d'exploitation, plan de reprise après sinistre).
← Retour à la présentation générale.env, jamais dans git, conservé au coffre-fort) et par
des scripts idempotents du dépôt. Aucun nom de domaine, aucune adresse,
aucun secret n'est en dur. Changer une valeur du .env puis rejouer le script
concerné est la procédure — il n'y a pas de gestes manuels à connaître par cœur.
Un guichet de demandes GLPI 11 pour la mairie : demandes des administrés par email uniquement (boîte collecteur), interface web réservée aux agents/élus (2FA TOTP imposée), sur un VPS OVH dédié (Debian 12, Docker : Caddy → GLPI → MariaDB), sauvegardé chaque nuit (chiffré, hors du serveur) avec test de restauration mensuel automatique, supervisé par une sonde externe.
L'exploitation quotidienne se fait depuis n'importe quel hôte disposant
du dossier projet + du .env (SSH vers le VPS). Le VPS lui-même est
jetable : le provisioning et la restauration sont scriptés et le
reconstruisent de zéro — c'est testé (plan de reprise après sinistre, RPO 24 h,
RTO ≤ ½ journée).
Vous n'avez pas encore accès au dépôt : voici son contenu exact. Tout ce qui vous est
remis tient dans cette arborescence — le .env (les secrets), transmis à part
par canal sûr, est la seule pièce manquante.
gestion-de-lauris/
├── README.md ← commencez ici : architecture + schéma
├── RUNBOOK.md ← gestes courants : mise à jour, secrets, incidents
├── DRP.md ← reprise après sinistre (perte serveur, corruption…)
├── HANDOVER.md ← le dossier de transfert (version complète de cette page)
├── .env.example ← toutes les variables attendues, documentées (sans valeurs)
├── migrate-domain.sh ← LE script du jour J (bascule assistance.lauris.fr)
├── deploy/
│ ├── deploy.sh ← (re)déploie la stack ; --provision pour un serveur vierge
│ ├── configure-glpi.sh← (re)configure GLPI de A à Z (comptes, collecteur, 2FA…)
│ └── templates/ ← Caddyfile, docker-compose, jails fail2ban…
├── backup/ ← backup.sh + restore.sh + timers (README dédié)
├── monitoring/ ← probe.sh + scheduler.sh + alertes (README dédié)
├── glpi/branding/ ← logos « Mairie de Lauris » montés dans le conteneur
└── docs/architecture.svg
Les 5 scripts, et quand les lancer :
| Script | Quand le lancer | Fréquence réelle |
|---|---|---|
deploy/deploy.sh | changement de .env côté infra (S3, base, version GLPI), reconstruction | rare |
deploy/configure-glpi.sh | changement de mot de passe (boîte email, comptes GLPI), ajout d'un agent | rare |
monitoring/probe.sh --remote | vérification après toute intervention | à volonté (lecture seule) |
backup/backup.sh / restore.sh | jamais à la main en temps normal — automatiques ; manuellement uniquement pour valider (§ 4) ou restaurer | automatique |
migrate-domain.sh | une fois, au jour J du passage à assistance.lauris.fr (§ 5) | une fois |
Tout le reste (templates/, unités systemd, scripts d'alerte) est de la
mécanique interne appelée par ces cinq-là — vous n'avez pas à y toucher.
Les 3 commandes du quotidien :
./monitoring/probe.sh --remote # état de santé complet, après toute intervention
cd deploy/ && ./deploy.sh # (re)déployer après un changement de .env
cd deploy/ && ./configure-glpi.sh # (re)configurer GLPI après un changement de mot de passe
| Accès | Sert à | Transfert propre |
|---|---|---|
| VPS OVH (SSH par clé uniquement) | héberger la stack | § 3 — changement de contact OVH (IP conservée) ; puis rotation des clés SSH (§ 6) |
| DNS (zone du domaine) | enregistrement A vers l'IP du VPS | le domaine cible final est lauris.fr : l'enregistrement se crée dans votre zone (§ 5) ; le jeton API actuel (limité à la zone de construction) devient inutile après migration |
| Object Storage S3 (bucket des sauvegardes) | archives nocturnes chiffrées | non transférable avec le VPS : créez votre bucket + clés S3 et re-pointez le .env (§ 4) |
| GLPI super-admin | administration applicative | mot de passe dans le .env — à changer à la reprise (§ 6) |
| Boîte email du collecteur | réception des demandes + envoi des notifications | aujourd'hui Zimbra OVH (assistance@gestion-de-lauris.fr) ; cible : assistance@lauris.fr sur le Workspace de la mairie (§ 5) |
Coffre-fort des secrets (copie du .env) | source de vérité des secrets | remettez une copie du .env après rotation dans votre propre coffre ; la phrase de chiffrement des sauvegardes est irremplaçable (sans elle, les archives sont illisibles) |
| Dépôt git (le dossier projet) | scripts + documentation | export en dépôt autonome (§ 8) |
Procédure OVH « changement de contact » sur le service VPS, depuis l'espace client du titulaire actuel : Tableau de bord → service VPS → Contacts → modifier — désigner le compte OVH du prestataire (ou de la mairie) comme contacts admin + tech + facturation. Validation par email des deux parties, effectif en quelques minutes. L'IP est conservée : aucune interruption, aucun changement DNS, la stack ne redémarre même pas.
Conditions OVH : comptes dans la même zone OVH (Europe), pas d'impayé, moyen de paiement valide côté destinataire.
Plan B (si le changement de contact est impossible ou non souhaité) : nouveau VPS chez vous + reconstruction scriptée — c'est le scénario 1 du plan de reprise après sinistre, environ 30 à 45 minutes de travail effectif. Ce plan B prouve au passage que le DRP fonctionne.
.env : S3_ENDPOINT, S3_REGION,
S3_BUCKET, S3_ACCESS_KEY, S3_SECRET_KEY
(et une nouvelle phrase de chiffrement si vous préférez — les anciennes
archives restent alors lisibles seulement avec l'ancienne : conservez les deux au coffre
pendant la rétention de 14 jours).Outil : le script migrate-domain.sh, livré avec le dossier — testé
à blanc en réel : l'instance a réellement basculé sur un second nom de
domaine puis est revenue, avec vérifications automatiques de bout en bout (HTTPS/certificat,
connexion 2FA, email→ticket, accusé de réception, sonde de supervision).
Prérequis côté mairie (ses seules actions) :
A assistance.lauris.fr → <IP du VPS> dans la
zone lauris.fr (le script affiche la ligne exacte s'il ne le trouve pas,
et ne modifie rien tant que le DNS n'est pas prêt) ;assistance@lauris.fr dans son Google Workspace, avec
mot de passe d'application (IMAP activé) — ou OAuth2 via le plugin
oauthimap si votre politique l'exige (non couvert par le script).# 1. Éditer le .env : boîte email cible + hôtes IMAP/SMTP Gmail
# (le préflight du script vérifie ces accès AVANT de toucher à la prod)
./migrate-domain.sh to assistance.lauris.fr
# → DNS vérifié, bascule, vérifications de bout en bout ; l'ancien nom reste
# servi en redirection et le retour arrière est trivial :
./migrate-domain.sh rollback # retour exact à l'état d'avant
./migrate-domain.sh finalize # quand tout est validé côté utilisateurs
finalize,
et que rollback restaure l'état complet d'avant migration.
Le domaine gestion-de-lauris.fr reste la propriété de Nicolas Ziegle :
après finalize, plus rien n'en dépend.
Objectif : vous repartez avec des secrets que l'ancien exploitant ne connaît
plus. Le mécanisme est toujours le même : générer la nouvelle valeur, la mettre
dans le .env (+ votre coffre), rejouer le script concerné.
| Secret | Générer / changer où | Puis rejouer |
|---|---|---|
| Clé SSH du VPS | ajoutez votre clé publique sur le VPS, puis retirez les clés de l'ancien exploitant (celle de son hôte d'exploitation incluse) | la sonde en mode distant (test) |
| Mot de passe de la boîte email | fournisseur de la boîte (admin Workspace) | le script de configuration GLPI |
| Mots de passe des comptes GLPI | générer forts (≥ 12 caractères) | le script de configuration GLPI |
| Mots de passe base de données | générer forts ; changement dans MariaDB avant mise à jour du .env | le script de déploiement |
| Clés S3 + phrase de chiffrement des sauvegardes | votre bucket (§ 4) | déploiement + sauvegarde et test immédiats |
| Jeton API DNS de l'ancien domaine | inutile après migration — révoquez-le (espace OVH du titulaire) | — |
| 2FA (TOTP) des agents | chaque agent ré-enrôle à sa première connexion si vous réinitialisez sa 2FA dans GLPI | — |
Après rotation : nouvelle copie du .env au coffre-fort, puis validation
d'un coup — sonde toute verte + un email de test qui devient un ticket.
C'est le cas nominal prévu par conception : la sonde vit dans le dossier projet et tourne de n'importe où ; l'hôte d'ordonnancement n'a que le déclencheur périodique.
.env, lancer la sonde en mode distant
→ tout doit être ok.Ou remplacez-le par votre propre supervision (Zabbix, Centreon,
Elastic…) : seule compte l'interface de la sonde — une ligne JSON par vérification
({"check": …, "status": "ok|warn|crit", "detail": …}) + un code retour
0/1/2, directement exploitable comme check Nagios/Centreon, item Zabbix ou document
à indexer.
Le dossier projet est conçu pour être extrait de son dépôt d'origine et vivre dans
votre propre dépôt git : tous les scripts d'exploitation (déploiement, sauvegarde,
restauration, supervision, migration de domaine) sont autosuffisants
(bash + curl + ssh + python3 standard, aucun outil propriétaire). Le .env
reste à part, au coffre-fort — il est déjà exclu de git.
Quatre phases. Chaque étape se termine par une vérification observable ; tant qu'elle n'est pas verte, on ne passe pas à la suivante. Les § renvoient au détail plus haut. Aucune étape n'est irréversible avant la phase D.
Avant la séance de remise : lire la présentation de l'architecture (15 min) et survoler le guide d'exploitation ; côté mairie/prestataire, identifier le compte OVH qui recevra le VPS (§ 3) — c'est le seul prérequis administratif.
.env par canal sûr (jamais par email) →
racine du dossier + copie dans votre coffre-fort. La phrase de chiffrement des
sauvegardes qu'il contient est irremplaçable../monitoring/probe.sh --remote → toutes les lignes ok.
Ce seul test prouve : accès SSH au serveur, HTTPS, conteneurs, sauvegardes, DNS.Fin de phase A : vous avez tout ; techniquement rien n'a changé.
.env → redéploiement, puis première sauvegarde et test de restauration
immédiats. Vérification : les deux se terminent OK, la sonde reste verte..env
au coffre.Fin de phase B : l'ancien exploitant n'a plus aucun accès technique. Le service tourne toujours à l'identique sur l'ancien domaine.
A assistance.lauris.fr → <IP du VPS> dans la zone
lauris.fr, et boîte assistance@lauris.fr (Workspace) avec
mot de passe d'application IMAP..env : boîte cible + hôtes IMAP/SMTP Gmail. Le
préflight du script les vérifie avant de toucher à la production../migrate-domain.sh to assistance.lauris.fr.
Vérifications automatiques de bout en bout (HTTPS, connexion 2FA, email→ticket,
accusé de réception, sonde) ; l'ancien nom reste servi en redirection ; en cas de
doute : ./migrate-domain.sh rollback — retour exact à l'état d'avant../migrate-domain.sh finalize..env dans votre coffre ; détruire les copies
intermédiaires.gestion-de-lauris.fr (boîte, sous-domaine) — plus rien n'en dépend.À l'issue : l'ancien exploitant n'a plus aucun accès (SSH retiré, secrets renouvelés, monitoring désinstallé de son côté) et n'est plus un point de passage.