DOC / ARCHI-002 v0.1 · DRAFT CONFIDENTIEL — FOLIO 01 —
Cartographie IT Infrastructure globale · v0.1

Infrastructure
& pilotage IT.

Vue panoramique de l'écosystème : entrée réseau, services métier, services tiers, multi-scope et plan de management sécurisé.

Document jumeau : ce dossier complète ARCHI-001 — Distribution de contenus par bornes, dont les 4 VM (App, DB, Storage, ProFTPD) constituent un sous-système de cette infrastructure globale.
§ 01 — Contexte

Une infrastructure,
plusieurs métiers.

Le système d'information ne se réduit pas à la distribution de contenus vers les bornes. Il porte aussi un outil de monitoring de flotte, une application tierce sous Windows, deux instances GLPI cloisonnées par client, et un plan de management complet permettant aux admins d'opérer l'ensemble à distance et de manière sécurisée. Ce document décrit cette vue d'ensemble.

Objectif du document

Établir une cartographie commune à tous les publics qui ont besoin de comprendre l'infrastructure : équipes techniques au quotidien, pilotage IT pour la gouvernance, direction pour les arbitrages, et auditeurs ou partenaires pour la conformité. Chaque section reste lisible indépendamment, sans nécessiter la lecture des autres.

Lien avec le document ARCHI-001

Le sous-système Distribution de contenus — 4 VM (App, DB, Storage, ProFTPD), V2 backoffice, sync HTTP et SFTP des bornes — est entièrement décrit dans ARCHI-001. Ce dossier-ci se concentre sur tout ce qui l'entoure : ce qui se trouve devant (Front), à côté (services tiers, monitoring) et au-dessus (management, gouvernance).

§ 02 — Composants

Panorama
des machines.

Au-delà des 4 VM de la distribution de contenus, l'écosystème compte cinq composants supplémentaires, regroupés en quatre catégories fonctionnelles : entrée réseau, métier, tiers, management.

Entrée VM · F01

Front

10.0.0.1
Firewall + reverse proxy + handler HTTPS + multi-WAN.
  • Seul point d'entrée Internet
  • Bascule automatique multi-WAN
  • Terminaison TLS, certificats Let's Encrypt
  • Reverse proxy par vhost vers les services internes
  • Rate limiting, IP block-list
Métier VM · M01

Monitoring bornes

10.0.0.50
Surveillance, gestion de config & rapports de la flotte.
  • Lit l'état des bornes (DB Distribution)
  • Écrit la config des bornes (récupérée en pull)
  • Passif : aucun flux direct vers les bornes
  • Commandes internes, alertes, rapports
  • Dashboard via vhost dédié sur le Front
Tiers VM · T01

Windows Service

10.0.0.60
Hébergement d'une application propriétaire tierce.
  • Service métier nécessitant Windows
  • Cloisonnement réseau renforcé
  • Accès admin via Guacamole (RDP) uniquement
  • Backup planifié indépendant
  • Surface d'attaque limitée par le Front
Métier · A VM · G01

GLPI — Client A

10.0.0.70
Helpdesk + asset management du client A.
  • Tickets, inventaire, contrats
  • DB MariaDB locale, isolée
  • Aucune communication avec GLPI Client B
  • Accès web via vhost dédié sur le Front
  • Backup quotidien
Métier · B VM · G02

GLPI — Client B

10.0.0.71
Helpdesk + asset management du client B.
  • Instance jumelle de G01, étanche
  • DB MariaDB locale, isolée
  • Aucune communication avec GLPI Client A
  • Vhost dédié, certificat dédié
  • Backup quotidien indépendant
Sous-système VM · D01-D04

Distribution

10.0.0.10 — 10.0.0.40
Plateforme de publication & sync bornes. Voir ARCHI-001.
  • App (10.0.0.10) — backoffice V2 + API
  • DB (10.0.0.20) — base unifiée, propre
  • Storage (10.0.0.30) — fichiers + NFS interne
  • ProFTPD (10.0.0.40) — sync SFTP legacy
Observabilité VM · L01

Logs & supervision

10.0.0.80
Collecteur centralisé de logs (stack Elasticsearch).
  • Collecte syslog de toutes les VM
  • Indexation, recherche, corrélation
  • Indispensable pour les VM RAM (logs volatils)
  • Rétention & audit des événements
  • Édition community, usage interne uniquement
Backup off-site SRV · B01

Backup déporté

site distant · réseau parallèle
Petit serveur physique, en lieu différent. 3e copie.
  • Règle 3-2-1 : 3e copie, hors-site
  • Essentiels uniquement (DB, config, apkovl)
  • Ni prod, ni VLAN admin — réseau parallèle isolé
  • Accès aux seuls backups de l'hyperviseur
  • Pull chiffré : il va chercher, on ne le contacte pas
CI/CD VM · C01

Git & déploiement

10.0.0.90
Héberge les sources, déploie le code vers les apps.
  • Dépôts Git = source de vérité du code
  • Détecte les commits, pousse vers la VM App
  • Écrase les sources de l'app cible (montage dédié)
  • Alpine/RAM, dépôts sur volume persistant
  • N'écrase jamais les data client (SQLite inclus)

▸ La VM Proxy Management est hébergée séparément, sur un VPS indépendant — elle n'apparaît pas dans le réseau privé principal et fait l'objet d'une section dédiée (§ 08).

§ 03 — Schéma

Topologie
globale.

Une entrée Internet unique via la VM Front. Un réseau privé 10.0.0.0/24 qui héberge tous les services. Un plan de management entièrement séparé, sur un VPS externe, accessible par WireGuard.

FIG. 01 · Topologie de l'infrastructure Vue d'ensemble
── INTERNET / WAN ── utilisateurs · bornes · partenaires IP pub. #1 app / sync SFTP / backoffice IP pub. #2 windows IP pub. #3 monitoring ── ADMINS IT ── équipe d'exploitation toutes via le FW VM · F01 · ENTRÉE Front 10.0.0.1 · multi-WAN Firewall · Reverse proxy · TLS WireGuard VPS EXTERNE · HORS INFRA Proxy Management WireGuard · 2× Guacamole Bastion custom (reverse SSH) → VLAN privé vers serveurs RÉSEAU PRIVÉ · 10.0.0.0/24 · PRODUCTION → App → Monitoring → Windows → GLPI A → GLPI B SQL PUT/NFS NFS état bornes (SQL) SOUS-SYSTÈME · DISTRIBUTION (ARCHI-001) App 10.0.0.10 backoffice V2 Alpine · RAM DB 10.0.0.20 MariaDB disque Storage 10.0.0.30 Nginx + NFS disque ProFTPD 10.0.0.40 sync SFTP Alpine · RAM M01 · MÉTIER Monitoring 10.0.0.50 flotte bornes T01 · TIERS Windows 10.0.0.60 app propriétaire G01 · MÉTIER · SCOPE A GLPI — A 10.0.0.70 G02 · MÉTIER · SCOPE B GLPI — B 10.0.0.71 L01 · OBSERVABILITÉ Logs & supervision — Elasticsearch 10.0.0.80 · collecte syslog de toutes les VM · disque ↑ toutes les VM poussent leurs logs vers L01 C01 · CI/CD Git & déploiement · 10.0.0.90 · → pousse vers App ZONE BACKUP & SNAPSHOTS Snapshots LVM · dump DB · rsync externalisé · apkovl des VM RAM (VM RAM : seule la config est sauvegardée, pas le système volatile) Admin hyperviseurs via WG management · cf. FIG. 06 tunnel admin SRV · B01 · SITE DISTANT Backup déporté 3ᵉ copie · essentiels only réseau parallèle · backups seuls WG via VPS → VLAN backup jamais direct (cf. FIG. 06) réplica via VLAN synchro SERVEUR BACKUP · RÉPLICA À FROID · 10.0.0.0/24 (mêmes adresses) Mêmes VM que la prod : Front · App · DB · Storage · ProFTPD · Monitoring · GLPI · Logs · Git Sans lien Internet (IP virtuelles non basculées) · prêtes à démarrer · swap manuel si désastre (pas de HA) Entrée Métier Tiers Management / CI-CD Observabilité Tunnel chiffré
§ 04 — Entrée

La VM Front,
porte d'entrée unique.

Toute requête venant d'Internet passe par la VM Front. C'est elle qui gère le multi-WAN, termine le TLS, applique les règles de sécurité, et fait suivre vers le bon service interne. Les autres VM n'exposent rien à l'extérieur.

Responsabilités

Quatre rôles cumulés sur cette unique VM, qui ne portent aucune donnée applicative : tout est passe-plat avec contrôle.

Pourquoi un seul Front ?

Concentration des règles de sécurité, certificats, et politique de routage en un seul endroit. Toute modification de sécurité se fait à un seul endroit, pas à dupliquer sur chaque VM. Single point of failure assumé, mitigé par snapshots fréquents et restore rapide depuis backup.

§ 05 — Cœur métier

Distribution
& monitoring de flotte.

Le cœur métier de l'infrastructure regroupe deux blocs : la plateforme de distribution de contenus (entièrement décrite dans ARCHI-001), et le monitoring du parc bornes qui consomme les mêmes données.

Sous-système Distribution de contenus

Quatre VM coordonnées qui assurent la publication des contenus par le backoffice et leur synchronisation vers les bornes en HTTP (cible) et en SFTP (legacy, transition). Architecture détaillée, flux, stratégie de migration : voir le document ARCHI-001.

App
10.0.0.10
backoffice V2 · API
DB
10.0.0.20
MariaDB — dédiée V2
Storage
10.0.0.30
Nginx + NFS
ProFTPD
10.0.0.40
sync SFTP legacy

VM Monitoring bornes

Service dédié au pilotage du parc bornes. Il ne supervise pas l'infrastructure elle-même (c'est le rôle d'outils sysadmin séparés, hébergés sur la VM Proxy Management) — il s'intéresse uniquement aux bornes : leur état, leur configuration, ce qu'elles diffusent, ce qu'elles ont consommé.

Un modèle strictement passif vis-à-vis des bornes

Point d'architecture essentiel : le monitoring ne se connecte jamais directement à une borne. Il n'existe aucun flux monitoring → borne. Le monitoring écrit des intentions (configuration, planning, commandes) côté serveur ; les bornes les récupèrent d'elles-mêmes à leur prochain auto-refresh, exactement comme elles récupèrent leurs contenus. Même principe pull que la distribution : les bornes tirent, personne ne pousse. Aucune borne n'a besoin d'être joignable, aucun port entrant n'est ouvert côté borne.

Concrètement, le monitoring assure trois fonctions, et il a donc besoin de lire ET d'écrire — pas seulement d'observer :

⚙ Deux décisions d'architecture à trancher
Où le monitoring écrit-il ses données ?
(config bornes, état dérivé, historique de surveillance)
  • DB locale sur la VM Monitoring — simple, isolé, mais crée un silo et duplique potentiellement des infos de la DB Distribution.
  • DB dédiée monitoring — propre et séparée, au prix d'une instance de plus à administrer.
  • Table dédiée dans la DB Distribution — mutualisé et cohérent (même périmètre « bornes »), mais recouple deux services sur une même base. À arbitrer selon l'appétence au couplage.
Où stocke-t-il les artefacts lourds ?
(screenshots, logs volumineux, rapports PDF)
  • Stockage local sur la VM Monitoring — simple, mais capacité et backup à gérer à part.
  • VM Storage, dossier dédié — réutilise l'infra de stockage déjà en place (NFS / HTTP interne), backup mutualisé. Option la plus cohérente avec l'existant.
  • Volume dédié auto-hébergé (MinIO interne ou volume bloc séparé) — découplé du reste, scalable, et entièrement sous contrôle. Aucune dépendance à un service tiers.

Le dashboard de pilotage est servi via le Front (vhost dédié, reverse proxy), comme tous les autres services web, et accessible aux équipes de pilotage. La VM Monitoring n'expose donc rien directement vers l'extérieur.

VM Git & déploiement (CI/CD)

La VM Git (10.0.0.90) héberge les dépôts — source de vérité du code — et assure le déploiement : elle détecte les commits et pousse le code vers la VM App, écrasant les sources de l'app concernée. Git est la source, l'App est la cible. La VM est stateless (Alpine/RAM) ; seuls les dépôts vivent sur un volume persistant.

FIG. 02 · Déploiement Git → App Le code s'écrase, les données se préservent
VM · C01 · CI/CD Git & déploiement source de vérité du code détecte les commits, pousse VM · APP · 10.0.0.10 (cible) App / Backoffice V2 reçoit le code, le code est écrasé données préservées (hors arbre) déploie (push SSH) SUR LA VM APP Sources (montage A) poussées par Git · écrasées · jetables Data client (montage B) poussées par le client · SQLite inclus · jamais écrasées RÈGLE Les sources et les data client vivent sur deux montages distincts. Le déploiement écrase les sources, jamais les data du client. Le SQLite fait partie des documents/data client (poussés par le client), pas de l'arbre des sources. Les migrations de schéma font évoluer la base, sans l'écraser.

Le point de vigilance — c'est la question ouverte de cette VM — est le SQLite vivant de l'app. Il fait partie des documents / data du client (poussés par le client) et vit donc avec les data persistantes, sur un disque/montage distinct de celui des sources. Le déploiement Git écrase les sources (montage A), jamais les data client (montage B) — le SQLite est donc à l'abri par construction. C'est le même principe que le socle Alpine/RAM : la zone jetable (les sources) et la donnée à préserver (les data client, SQLite inclus, cf. § 10) sont physiquement séparées. Seules les migrations de schéma font évoluer la base — sans jamais l'écraser.

§ 06 — Storage & accès concurrents

Accès concurrents
& cloisonnement du Storage.

La VM Storage exporte /srv/storage en NFS, monté par plusieurs consommateurs (App, ProFTPD, éventuellement Monitoring). Le partage d'un même export n'est pas un risque en soi : le seul danger réel est deux écritures simultanées sur le même fichier. Toute l'architecture vise donc à garantir un seul écrivain par zone, et cette garantie vient du Storage lui-même — pas de la bonne volonté des clients.

Qui lit, qui écrit

Point clé hérité d'ARCHI-001 : les écritures de contenu ne passent pas par NFS, elles passent par HTTP PUT vers le Nginx du Storage (sérialisé localement). Le NFS sert surtout à lire. Les bornes en HTTP lisent le contenu directement sur le Nginx du Storage via URL signées (sans NFS, I/O locales optimales) pour leur affichage et leur synchro ; en retour, elles poussent leurs statistiques au backoffice (via URL), qui les consolide en MariaDB (cf. § 10) — jamais sur le Storage.

FIG. 03 · Flux NFS autour du Storage Qui lit, qui écrit
VM STORAGE · 10.0.0.30 /srv/storage Nginx (PUT + URL signées) + export NFS VM APP · 10.0.0.10 Backoffice V2 NFS (ro) en lecture · écrit via HTTP PUT VM PROFTPD · 10.0.0.40 ProFTPD contenus/ en RO (sert les bornes) incoming/ en RW (dépôt tiers) BORNES (HTTP) Direct Nginx lecture contenu (ro) · affichage/synchro push stats → backoffice (URL) NFS ro NFS ro+rw lecture (HTTP signé) push stats → backoffice (→ MariaDB) RÈGLE D'OR Un fichier n'a qu'un seul écrivain. Le NFS partagé sert à lire, pas à co-écrire. Écriture atomique partout : .part puis rename().

Le modèle deux-montages : un RO, un RW

Plutôt que de jouer sur les permissions dans un arbre partagé, ProFTPD monte deux points NFS distincts depuis le Storage : un /mnt/ro pour servir les contenus, un /mnt/rw pour recevoir les dépôts. Les droits ne se chevauchent jamais parce que ce sont deux montages et deux exports séparés — la garantie est physique, pas logique. Bonus : on peut régler les options différemment (soft sur le RO qui sert, hard,intr sur le RW qui reçoit).

Décision imposée : incoming/ en RW pour le SFTP, RO pour l'App

Pour le dépôt entrant du tiers, le modèle est tranché et imposé afin d'éliminer tout risque par construction : incoming/ est RW pour le SFTP (le tiers, seul écrivain) et RO pour l'App (lecteur occasionnel). Le vchroot ProFTPD du tiers pointe sur incoming/, lui-même monté dans un dossier dédié côté Storage.

FIG. 04 · Modèle imposé du dépôt entrant Un écrivain, un lecteur
TIERS · VIA SFTP/PROFTPD Écrivain unique NFS rw · HiddenStores on incoming/ vchroot du tiers monté en dossier dédié VM APP · BACKOFFICE V2 Lecteur à la demande NFS ro · selon mappage/client écrit (rw) lit (ro) ~1/100 CONSÉQUENCES — Un seul écrivain → aucune collision, aucun lock cross-NFS, corruption impossible (pas improbable). — L'App lit rarement (~1 cas sur 100), à la demande, selon le mappage/liens et le client concerné. — HiddenStores masque les uploads en cours ; l'App ne voit que le fichier finalisé. — Montage ro côté App = garantie noyau, pas convention. L'App ne touche pas au dépôt du tiers. — Si l'App doit déposer un jour : sa propre zone (incoming_app/), jamais partager incoming/.

Ce choix supprime tout le débat sur les écritures concurrentes : pas de double producteur, pas de collision de noms, pas de verrou hasardeux entre NFS et écriture locale. L'App (Backoffice V2, via son Nginx) ne lit incoming/ qu'à la demande et rarement — de l'ordre d'un cas sur cent — lorsqu'un client ou un traitement en a besoin, en résolvant le bon chemin via le mappage / les liens propres au client. Le reste du temps, le dépôt du tiers n'est pas sollicité. En lecture seule, l'App ne crée ni ne supprime rien dans incoming/ — la zone reste celle du tiers.

Trois barrières de cloisonnement, indépendantes

La garantie « un seul écrivain par zone » et l'étanchéité entre clients reposent sur trois couches cumulatives — si l'une cède, les autres tiennent. Surtout, la décision appartient au Storage : ProFTPD propose, le Storage dispose.

①
Chroot ProFTPD (confort & UX). Chaque compte est enfermé dans sa zone (VRoot d'ARCHI-001). Le compte de dépôt ne voit que son incoming/, un compte client ne peut pas remonter vers le scope d'un autre. Utile, mais contournable seul — d'où les barrières suivantes.
②
Exports NFS distincts par IP + ro/rw (le verrou décisif). Le Storage n'accorde rw qu'à une seule IP par sous-zone. Même si ProFTPD était mal configuré, un montage ro fait refuser l'écriture au niveau noyau. La garantie est structurelle, pas conventionnelle.
③
Étanchéité de scope client. client_X/ n'apparaît dans aucun export destiné à un autre client. Cumulé avec le chroot, un client ne voit jamais les données d'un autre — cohérent avec le multi-scope GLPI (§ 07).

Matrice des exports (modèle retenu)

Exemple pour un client, avec la décision imposée. Chaque sous-zone n'a qu'un seul rw, accordé à une seule IP.

Sous-zone IP cliente Mode Rôle
contenus/10.0.0.40 (ProFTPD)roSert les bornes (jamais écrit ici en NFS)
contenus/10.0.0.10 (App)roLecture (preview, à la demande)
incoming/10.0.0.40 (ProFTPD)rwDépôt du tiers — écrivain unique
incoming/10.0.0.10 (App)roLecture du dépôt — lecteur unique

Côté Storage, /etc/exports :

/srv/storage/.../contenus  10.0.0.40(ro,sync,no_subtree_check,root_squash)
/srv/storage/.../contenus  10.0.0.10(ro,sync,no_subtree_check)
/srv/storage/.../incoming  10.0.0.40(rw,sync,no_subtree_check,root_squash)
/srv/storage/.../incoming  10.0.0.10(ro,sync,no_subtree_check)

Vérification automatisable

Pour s'assurer qu'aucune sous-zone n'est exportée rw à deux machines (ce qui réintroduirait le risque), un contrôle simple, posable en CI ou en hook de la VM Logs :

# Liste les zones rw en double — sortie vide = règle d'or respectée
grep -oP '^\S+(?=.*\brw\b)' /etc/exports | sort | uniq -d

Dimensionnement I/O

Le NFS reporte les lectures des consommateurs (ProFTPD, App) sur le disque du Storage. Pour des fichiers de plusieurs Go, prévoir du stockage rapide (SSD/NVMe, au moins pour les fichiers chauds) et un réseau interne dimensionné (viser 10 Gb/s entre Storage et consommateurs ; du 1 Gb/s sature vite). Les bornes en HTTP ne pèsent pas sur le NFS — leurs I/O restent locales au Storage.

§ 07 — Services tiers

Windows
& GLPI multi-scope.

Trois VM portant des services qui ne sont pas le cœur du métier mais dont l'infrastructure assure l'hébergement, l'isolation et l'accès contrôlé. Une VM Windows pour une application propriétaire, et deux GLPI distincts pour deux clients aux périmètres étanches.

VM Windows — Service propriétaire

Hébergement d'une application tierce qui nécessite un OS Windows. Le choix de l'OS est subi (contrainte éditeur), pas choisi. La VM est donc traitée comme une boîte noire à cloisonner :

VM GLPI — Double instance, deux scopes

Deux clients utilisent GLPI (helpdesk + asset management) avec des besoins, des utilisateurs et des données strictement séparés. Plutôt qu'une instance unique avec multi-tenant fragile, deux instances jumelles totalement isolées :

Dimension GLPI Client A (G01) GLPI Client B (G02)
IP interne 10.0.0.70 10.0.0.71
Vhost public glpi-a.example.com glpi-b.example.com
Base de données MariaDB locale, isolée MariaDB locale, isolée
Comptes admin Équipe client A Équipe client B
Backup Indépendant, planning A Indépendant, planning B
Communication inter-VM ⛔ Aucune. Étanchéité totale.

Avantage de l'isolation par VM : aucune chance qu'une modification ou un bug sur l'instance A impacte l'instance B. Aucun risque qu'un audit du client A expose les données du client B. Aucun couplage de version, de plugin, ou de schéma.

§ 08 — Management

Le plan de management,
hors-bande.

L'administration de l'infrastructure ne passe jamais par les ports publics (HTTPS, SFTP). Elle emprunte un canal séparé, hébergé sur un VPS externe, accessible aux admins via WireGuard, avec Guacamole pour les sessions graphiques et un bastion custom pour les sessions SSH à redirection dynamique.

FIG. 05 · Plan de management VPS externe + tunnels chiffrés
Admin IT poste de travail WireGuard (UDP/51820) VPS EXTERNE (hors infra principale) VM Proxy Management WireGuard endpoint TLS auth par clé 2× Guacamole RDP / SSH / VNC web scope A · scope B Bastion custom — reverse SSH + DNS dynamique subdomain.bastion.example.com → tunnel SSH ciblé script maison de redirection à la connexion VLAN privé (IPsec ou WG) SERVEURS DERRIÈRE Prod #1 toutes les VM /24 Prod #2 infra annexe Backup snapshots, rsync Aucun accès admin direct depuis Internet vers les serveurs. Tout passe par le VPS Proxy Management, en hors-bande. PROCÉDURE D'ACCÈS ① WireGuard up L'admin établit le tunnel chiffré jusqu'au VPS. ② Choix interface Guacamole web pour RDP/VNC, ou SSH via subdomain dynamique. ③ Tunnel ciblé Le bastion crée à la volée le tunnel vers la machine demandée. ④ Traçabilité Toutes les sessions sont loggées sur le VPS (qui, quand, vers quoi).
▸ ACCÈS

WireGuard endpoint

Tunnel chiffré moderne (UDP/51820) pour l'établissement de session. Authentification par clé publique. Pas de mot de passe possible — seule la clé compte.

Configuration par admin, rotation possible, révocation immédiate d'un poste compromis sans impacter les autres.

▸ INTERFACE GRAPHIQUE

Deux instances Guacamole

Accès RDP/VNC/SSH dans le navigateur. Deux instances pour cloisonner les accès par scope (A et B), avec audit séparé.

Pratique pour les sessions admin Windows, les démos clients, et les interventions sur des postes graphiques.

▸ INTERFACE TERMINAL

Bastion custom maison

Reverse SSH natif + script de redirection dynamique liée au sous-domaine appelé. Exemple : app1.bastion.example.com ouvre automatiquement un tunnel vers app1 en interne.

Pas de configuration par machine cible à maintenir — le mapping est calculé à la volée. Léger, transparent, scriptable.

▸ CONNECTIVITÉ INTERNE

VLAN privé vers les serveurs

Entre le VPS Proxy Management et les serveurs (prod #1, prod #2, backup), un VLAN privé chiffré (IPsec ou WireGuard site-à-site).

Les serveurs n'acceptent les commandes admin que depuis ce VLAN. Aucune autre voie d'entrée pour l'administration.

Pourquoi hors-bande (VPS externe) ?

Le plan de management ne dépend pas de l'infrastructure qu'il administre. Si la VM Front tombe, ou si tout le réseau privé est compromis, les admins gardent accès via le VPS externe. C'est le principe du plan de management hors-bande : on s'administre à côté de ce qu'on administre, pas à travers.

Le VPS lui-même est minimaliste : seuls WireGuard, Guacamole et le bastion tournent dessus. Pas d'application métier, pas de données sensibles stockées. Sa compromission éventuelle n'expose que les sessions en cours, pas les bases de données ou les fichiers métier.

Segmentation réseau : VLAN prod interne, management & backup sur le RPN

Les trois VLAN ne sont pas au même niveau. Le VLAN production est interne à chaque hyperviseur : il sert uniquement à l'intercommunication des VM, n'est pas routé vers l'extérieur et n'apparaît pas sur le réseau inter-serveurs. Les VLAN management et backup, eux, sont portés par le LAN-RPN — le réseau privé inter-serveurs de l'hébergeur (type Scaleway/Online) — qui relie les deux serveurs (prod et backup) et le VPS. Sur ce RPN, management et backup sont deux VLAN distincts.

Les hyperviseurs sont à cheval sur management et backup (via le RPN), jamais sur la production — qui reste confinée dans l'hyperviseur. Le VPS est physiquement sur le RPN, rattaché au VLAN management. Sur le RPN, on distingue trois VLAN : management (administration), backup (exposition des snapshots/dumps) et synchro (réplication des VM de prod vers le serveur backup) — chacun isolé des autres.

Le serveur backup héberge un réplica à froid des mêmes VM que la prod (Front, App, DB, Storage…), prêtes à démarrer mais sans lien Internet (les IP virtuelles ne sont pas basculées). Il n'y a pas de HA : en cas de désastre, on swap manuellement — simple et efficace dans un premier temps. La synchronisation prod→backup est régulière voire continue, via le VLAN synchro dédié.

Évolution prévue : un VLAN HA / intercom VM entre serveurs (live migration, réplication à chaud, cluster) viendra s'ajouter sur le même RPN, sans toucher au cloisonnement existant.

Le cloisonnement d'accès distant repose sur un mécanisme simple : le VPS expose deux endpoints WireGuard distincts, et c'est le tunnel utilisé qui détermine le VLAN atteignable. Le WG admin ne route que le VLAN management ; le WG du backup déporté ne route que le VLAN backup. Un tunnel ne peut pas atteindre le périmètre de l'autre.

FIG. 06 · Segmentation VLAN & endpoints WireGuard Le tunnel détermine le périmètre
SERVEUR PROD · HYPERVISEUR VLAN PRODUCTION · interne hyperviseur Front · App · DB · Storage · ProFTPD Monitoring · GLPI · Logs · Git intercom des VM seulement · non routé absent du RPN SERVEUR BACKUP · HYPERVISEUR réplica à froid + expose backups mêmes VM que la prod (Front, App…) prêtes à démarrer · sans Internet VM de prod aussi hébergeables ici (VLAN prod interne propre) LAN-RPN · réseau privé inter-serveurs (hébergeur) VLAN MANAGEMENT administration des VM (SSH, RDP via bastion) VLAN BACKUP exposition des backups (snapshots / dumps) VLAN SYNCHRO réplica prod→backup régulier voire continu sur RPN sur RPN VPS · PHYSIQUEMENT SUR LE RPN Proxy Management WG admin → management WG backup → backup only VLAN production = interne à chaque hyperviseur. Sur le RPN : management, backup (exposition) et synchro (réplica) = 3 VLAN distincts. Réplica à froid prêt à démarrer (pas de HA : swap manuel des IP virtuelles en cas de désastre). Futur : un VLAN HA / intercom VM s'ajoutera.
§ 09 — Flux & sécurité

Tableau
des flux réseau.

Récapitulatif des flux autorisés. Tout ce qui n'est pas listé est rejeté. La règle est l'isolation, l'exception est la communication explicite.

De Vers Port Protocole Usage
InternetFront443HTTPSTous les services web publics
InternetFront80HTTPRedirection vers HTTPS uniquement
InternetFront22SFTPBornes legacy (relayé vers ProFTPD)
FrontApp (Distrib.)80HTTPReverse proxy backoffice
FrontStorage80HTTPReverse proxy URLs signées
FrontMonitoring80HTTPDashboard supervision
FrontWindows80HTTPApp propriétaire web
FrontGLPI A80HTTPVhost glpi-a
FrontGLPI B80HTTPVhost glpi-b
FrontProFTPD22SFTPForward SFTP bornes
MonitoringDB (Distrib.)3306MySQLLecture état bornes + écriture config
MonitoringStorage*8080HTTPDépôt artefacts (screenshots, rapports) — à confirmer
Git / CI-CDApp22SSHDéploiement du code (écrase les sources, pas les données)
Toutes les VMLogs (L01)514SyslogEnvoi centralisé des journaux (TCP/UDP ou TLS)
Backup déportéVLAN backup (via VPS)WGPull chiffréWG backup → VLAN backup uniquement ; tire les snapshots/dumps exposés par les hyperviseurs (cf. FIG. 06)
Admin (via VPS)Toutes—SSH/RDPVia WireGuard + bastion / Guacamole

* Le flux Monitoring → Storage et l'emplacement d'écriture des données du monitoring dépendent des deux décisions d'architecture en suspens (voir § 05). La ligne ci-dessus reflète l'option « stockage sur la VM Storage », privilégiée pour sa cohérence avec l'existant.

** Le serveur de backup déporté n'atteint que le VLAN backup, via l'endpoint WG backup du VPS — jamais d'accès direct, ni à la production ni au management. Les hyperviseurs y exposent snapshots et dumps, que le serveur distant tire en pull chiffré (cf. § 08 et FIG. 06).

Principes de sécurité directeurs

①
Un seul point d'entrée Internet. Toute la surface d'attaque externe se concentre sur la VM Front. Plus facile à durcir, à monitorer, à patcher.
②
Cloisonnement par scope. GLPI A et GLPI B n'ont aucune voie de communication. Pareil pour les services métier vs services tiers. Une faille sur l'un n'impacte pas l'autre.
③
Administration hors-bande. Le management ne passe pas par les ports applicatifs publics — il a son propre canal, son propre serveur, ses propres logs.
④
TLS terminé au Front. Les certificats et les clés privées ne se trouvent qu'à un endroit. Rotation, renouvellement, audit centralisés.
⑤
Whitelisting des flux internes. Chaque VM accepte exactement les flux décrits dans le tableau ci-dessus, rien de plus. Firewall local + règles centrales.
§ 10 — Socle technique

Alpine en RAM,
systèmes immuables.

Les VM stateless tournent sur Alpine Linux avec la racine / montée en tmpfs — tout le système vit en mémoire. À chaque redémarrage, la VM repart d'un état connu et propre. La configuration est persistée localement, les données vivent sur le stockage central. Rien d'important ne réside dans la RAM volatile.

Le principe : diskless, run-from-RAM

Alpine est démarré puis sa racine est basculée en tmpfs : le système d'exploitation, les binaires et le runtime s'exécutent entièrement en mémoire. Le disque ne sert qu'à amorcer et à conserver une petite couche de configuration (mécanisme lbu / apkovl d'Alpine). Le système devient immuable : toute modification non explicitement persistée disparaît au reboot.

Quelles VM, et pourquoi

Seules les VM stateless passent en Alpine/RAM : elles ne portent aucune donnée propre, donc rien n'est perdu au reboot. Les VM à état restent sur disque classique.

VM Mode Justification
FrontAlpine · RAMPasse-plat (reverse proxy, TLS) — aucune donnée propre
AppAlpine · RAMBackoffice V2 — data vers Storage & DB, rien en local
ProFTPDAlpine · RAMLit le NFS, auth via DB — aucune donnée locale
DBDisqueL'état est la donnée — persistance indispensable
StorageDisquePorte les fichiers (plusieurs Go)
MonitoringAlpine · RAMStateless — données en DB, artefacts sur Storage (cf. § 05)
GLPI A / BDisqueBase MariaDB locale par instance
WindowsDisqueOS imposé par l'éditeur — hors périmètre Alpine
Git / CI-CDAlpine · RAMStateless — dépôts sur volume persistant

Modèle de persistance à trois couches

Sur une VM stateless en RAM, on distingue clairement ce qui est volatile, ce qui est persisté localement, et ce qui vit ailleurs.

FIG. 07 · Les trois couches d'une VM stateless Alpine en RAM
VM STATELESS · ex. FRONT / APP / PROFTPD COUCHE 1 · RAM (tmpfs) — VOLATILE OS Alpine + runtime + binaires Reconstruit propre à chaque boot · rien d'important ici COUCHE 2 · CONFIG LOCALE (apkovl / lbu) — PETITE Conf services, clés, vhosts · versionnée, rejouable COUCHE 3 · DATA — JAMAIS EN LOCAL Contenus → NFS · bases → iSCSI/disque (jamais NFS) STOCKAGE CENTRAL VM Storage 10.0.0.30 NFS / iSCSI · backupé LOGS Envoyés en syslog distant (la RAM est effacée au reboot)

Stockage des données : le bon support pour chaque usage

La couche 3 ci-dessus (« data, jamais en local ») recouvre en réalité deux supports très différents, à ne pas confondre. NFS partage un système de fichiers (niveau fichier) ; iSCSI expose un disque brut (niveau bloc). Chacun a un usage précis.

Critère NFS (fichier) iSCSI / disque (bloc)
Partage multi-clientsOui, natifNon (un seul initiateur)
Performance I/OCorrecteExcellente (quasi-local)
Bases de données⛔ déconseillé✓ recommandé
Partage de fichiers✓ idéalInadapté
Qui gère le système de fichiersLe serveurLe client
Cloisonnement par droitsro/rw par IPAu niveau du volume

La règle qui en découle, et qui désambiguïse la couche data :

▸
NFS pour les contenus partagés. Le Storage (§ 06) sert ses fichiers à plusieurs VM (App, ProFTPD, Monitoring) avec cloisonnement ro/rw par IP. C'est l'usage canonique de NFS — plusieurs lecteurs sur les mêmes fichiers.
▸
iSCSI / disque pour les bases de données. MariaDB et les fichiers SQLite ont besoin d'I/O performantes et de locks fiables — donc jamais sur NFS (corruption, locks défaillants). Soit disque local de la VM, soit volume iSCSI dédié si l'on veut un volume détachable/réattachable.
!
Jamais de base sur le tmpfs ni sur NFS. Pour une app stateless en RAM, son fichier SQLite doit pointer vers un volume persistant (disque/iSCSI), pas vers le tmpfs (perdu au reboot) ni vers le NFS (corruption). Même principe « rien d'important en local volatil ».

Deux natures de données : fonctionnel local vs consolidé central

La migration des apps vers SQLite ne signifie pas que tout part en local. Le partage des responsabilités est net :

Conséquence sur le dimensionnement : une seule VM MariaDB (10.0.0.20, sur disque), dédiée au Backoffice V2 et à son multi-scope logique — pas une instance par client (l'isolation est assurée dans le schéma, pas par duplication de VM). Les apps, elles, n'encombrent plus le serveur central une fois migrées sur SQLite.

Bénéfices

Points d'attention

Corollaire : une VM dédiée aux logs

Le point « logs volatils » ci-dessus impose un collecteur central. Les VM en RAM doivent envoyer leurs journaux ailleurs en temps réel, sinon ils disparaissent au reboot. C'est le rôle de la VM Logs & supervision (10.0.0.80), qui s'appuie sur une stack Elasticsearch.

Toutes les VM (RAM comme disque) y poussent leurs logs en syslog. La stack indexe, permet la recherche et la corrélation d'événements, et assure la rétention nécessaire à l'audit. C'est aussi le socle d'une supervision transverse : détection d'anomalies, tableaux de bord techniques, traçabilité de sécurité.

⚖ Note de licence
Édition community, usage interne
à valider selon l'évolution des licences éditeur

La stack est utilisée dans son édition gratuite / community, dans un cadre professionnel interne et non redistribuable : les logs et la supervision servent l'exploitation de notre propre infrastructure, sans revente ni mise à disposition du service à des tiers. Ce cadre d'usage doit être revérifié à chaque évolution des conditions de licence de l'éditeur (les termes des stacks de ce type ayant historiquement évolué).

Stratégie de sauvegarde : la règle 3-2-1

Les sauvegardes suivent le principe 3-2-1 : trois copies des données, sur deux supports différents, dont une hors-site. La troisième copie est assurée par un petit serveur de backup déporté, physiquement situé dans un lieu différent.

Copie Où Contenu Rôle
1 — PrimaireSur chaque VM / StorageDonnées vivantesProduction
2 — LocaleZone backup du réseau privéSnapshots, dumps, apkovlRestore rapide
3 — DéportéeServeur distant (hors-site)Essentiels uniquementRésilience sinistre

Le serveur déporté ne reçoit que les données essentielles : bases de données, configurations, apkovl des VM RAM, métadonnées critiques. Il ne duplique pas les gros volumes facilement régénérables ou déjà redondés ailleurs — l'objectif est la survie au sinistre physique (incendie, dégât des eaux, vol, panne site), pas la copie exhaustive.

Pour la sécurité, le serveur déporté n'est raccordé ni à la production, ni au VLAN d'administration. Il vit sur un réseau parallèle dédié, monté en parallèle du VLAN management, dont le seul périmètre visible est un point de collecte de backups exposé par l'hyperviseur : snapshots / exports de VM et dumps applicatifs (DB, config, apkovl). Il ne voit rien d'autre — ni les VM vivantes, ni le management, ni les données applicatives en ligne.

Conséquence : une compromission de la production ne donne aucun chemin vers la copie hors-site, et une compromission du VLAN admin n'expose pas davantage le serveur déporté (réseau séparé, périmètre séparé, accès restreint aux seuls backups). Double protection contre les ransomwares qui cherchent à détruire les sauvegardes.

⚙ Mécanisme d'accès — à trancher
Comment le serveur déporté atteint-il les backups ?
le chemin est acté (WG backup via VPS → VLAN backup, cf. § 08) ; reste à choisir ce qui expose les backups sur ce VLAN
  • Exposition directe par l'hyperviseur — l'hyperviseur publie ses snapshots/exports sur le VLAN backup, le serveur distant y pioche en pull.
  • Point de collecte intermédiaire (NAS / dépôt de backup) — une zone tampon sur le VLAN backup reçoit les snapshots et les dumps, le serveur distant lit cette zone uniquement.
  • Dans les deux cas : accès via l'endpoint WG backup du VPS, pull initié par le distant, aucun accès retour vers la prod ni le management.
§ 11 — Synthèse

Une lecture
par public.

Cette infrastructure a quatre lecteurs naturels : ceux qui l'opèrent, ceux qui la pilotent, ceux qui la financent, et ceux qui la contrôlent. Voici ce qu'il faut retenir, selon le rôle.

▸ POUR LES ÉQUIPES TECHNIQUES

Architecture lisible & opérable

Chaque VM a un rôle unique. Les flux sont explicites et listés. Le management passe par un canal dédié, on n'opère jamais en exposant des ports d'admin. Le tout est documenté, scriptable, reproductible. La cartographie est la source de vérité.

▸ POUR LE PILOTAGE IT

Gouvernance claire

Découplage strict entre métier, tiers et management. Mutualisation des ressources mais isolation des données. Multi-scope client garanti par architecture, pas par configuration. Capacité d'évolution (V2 Distribution en cours, voir ARCHI-001) sans toucher au reste.

▸ POUR LA DIRECTION

Maîtrise opérationnelle

Une infrastructure qui sait répondre aux exigences clients (multi-scope), aux contraintes éditeurs (Windows tiers cloisonné) et aux besoins métier (monitoring, distribution, V2). Pas de zone d'ombre, pas de boîte noire incontrôlée. Capacité à présenter un dossier à un partenaire ou à un client exigeant.

▸ POUR L'AUDIT

Traçabilité & isolation

Isolation par VM, par scope, par réseau. Logs centralisés sur le plan de management. Cartographie écrite, à jour, défendable. Accès admin tracé, authentifié par clé, hors-bande. Aucun accès direct possible depuis Internet vers la production. Conformité RGPD et standards d'audit (ISO, SOC) facilités.

▸ Pour le détail du sous-système Distribution de contenus (V2 backoffice, migration SFTP→HTTP, gestion des bornes), se référer au document jumeau ARCHI-001.