commun:architecture_serveur
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| commun:architecture_serveur [2026/06/17 18:24] – créée francois | commun:architecture_serveur [2026/09/20 12:22] (Version actuelle) – francois | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Architecture complète du serveur ====== | ====== Architecture complète du serveur ====== | ||
| - | Dernière mise à jour : juin 2026 | + | Dernière mise à jour : septembre |
| + | |||
| + | Cette page donne la vue d' | ||
| ===== Vue d' | ===== Vue d' | ||
| - | Infrastructure à trois machines sur un LAN1 filaire, | + | L' |
| + | |||
| + | Les applications web historiques | ||
| < | < | ||
| Internet | Internet | ||
| - | | 443/80 | + | | 443 | 8329 (SSH Gitea) |
| - | v | + | |
| - | [ Routeur ] ──(isolé)──> | + | [ Routeur |
| - | | | + | |
| - | v LAN1 | + | v LAN1 192.168.1.0/ |
| - | [ Proxy — Caddy ] | + | [ proxyhttp .25 — Caddy ] | |
| - | | | + | | |
| - | v | + | v ports autorisés uniquement |
| - | [ Serveur | + | [ cahute .9 — serveur |
| - | |── | + | |── |
| - | |── Services | + | | NFS 4.2 · Cockpit |
| - | |── | + | |── |
| - | └── Stockage | + | └── Stockage |
| - | [ Portables ×4 ] | + | [ homeassistant .67 ] |
| - | |── kanidm-unixd | + | |
| - | |── | + | [ 2 PC tour LAN1 ] sssd → LLDAP (LDAPS) · partages en NFS 4.2 |
| - | |── Client Nextcloud | + | [ Portables ] WiFi · sssd → LLDAP (LDAPS, cache offline) · home local · NFS par le VPN |
| </ | </ | ||
| - | ===== Les trois machines | + | ===== Réseaux |
| - | ==== Routeur ==== | + | ^ Réseau ^ Plage ^ Rôle ^ |
| + | | LAN1 | 192.168.1.0/ | ||
| + | | LAN1, zone de confiance | 192.168.1.0/ | ||
| + | | LAN2 | 192.168.115.0/ | ||
| + | | VPN | 10.1.100.0/ | ||
| - | * NAT entrant : ports 80 et 443 redirigés vers Caddy | + | Le proxy (.25) se trouve dans la plage /26, mais une règle |
| - | * Pare-feu : LAN2 wifi isolé du LAN1 filaire | + | |
| - | * Le serveur principal n'est jamais exposé directement | + | |
| - | ==== Proxy — Caddy ==== | + | Home Assistant (.67) est hors de la plage /26 : il n'a accès à aucun de ces services. |
| - | * Terminaison TLS et gestion des certificats Let's Encrypt | + | ===== Les trois machines ===== |
| - | * Reverse proxy vers les services du serveur principal | + | |
| - | * '' | + | |
| - | * Machines : proxy dédié sur LAN1, indépendant du serveur | + | |
| - | ==== Serveur principal | + | ==== Routeur |
| - | * **OS :** Debian Trixie (13), kernel 6.x | + | Le routeur est un OpenWrt à l' |
| - | * **Matériel :** AMD x86, 8 Go RAM, 2 To en soft-RAID | + | |
| - | * **Conteneurisation :** Docker CE (dépôt officiel), Docker Compose v2 | + | |
| - | * Cockpit installé en bare-metal (hors Docker), accessible LAN uniquement sur '' | + | |
| - | ===== Services Docker ===== | + | Il redirige le 443 vers le proxy, le 6360 et le 9090 vers '' |
| - | ==== Authentification | + | ==== Proxy — Caddy ==== |
| - | ^ Service | + | Le proxy est un NUC sous Debian 13, à l' |
| - | | Kanidm | + | |
| - | | Authelia | + | |
| - | **Flux | + | Les vhosts |
| - | * **Login système portable** : kanidm-unixd → Kanidm (cache local si offline) | + | Le conteneur Caddy est cloisonné en sortie par des règles '' |
| - | * **Services web (navigateur)** : Caddy → forward_auth Authelia → Kanidm | + | |
| - | * **Client Nextcloud desktop/ | + | |
| - | * **Changement de mot de passe** | + | |
| - | **Gestion des droits :** | + | ==== Serveur principal ==== |
| - | * Groupes définis dans Kanidm | + | * **OS :** Debian Trixie |
| - | * Règles d' | + | * **Matériel :** AMD x86, 8 Go de RAM, 2 To en soft-RAID |
| - | | + | * **Interface :** '' |
| + | * **Conteneurisation :** Docker CE et Docker Compose ; composes et données sous ''/ | ||
| - | ==== Services applicatifs ==== | + | '' |
| - | ^ Service | + | ===== Services en bare-metal ===== |
| - | | Nextcloud | + | |
| - | | Blog | Site web | Authelia devant | + | |
| - | | DokuWiki | + | |
| - | | Ampache | + | |
| - | | MariaDB | + | |
| - | **Nextcloud — deux chemins d'auth :** | + | ^ Service ^ Rôle ^ Port ^ Accès ^ |
| + | | Apache | Nextcloud, DokuWiki, Ampache, blog, dav | 443 | Publié par Caddy | | ||
| + | | Gitea | Forge Git | 3000 | Publié par Caddy | | ||
| + | | Gitea, SSH intégré | Accès Git par SSH | 8329 | Toute source (UFW) | | ||
| + | | MariaDB | Base de données des applications | local | Non exposé | | ||
| + | | NFS | Partages et dossiers personnels | 2049/tcp | Plage /26 et VPN | | ||
| + | | Samba | Présent, non ouvert dans UFW | — | Aucun | | ||
| + | | Cockpit | Système, RAID, journaux, terminal web | 9090 | Plage /26 et LAN2 | | ||
| + | | sssd | Résolution des identités LLDAP pour NFS | — | Local | | ||
| - | - Navigateur web : Authelia intercepte, puis Nextcloud vérifie aussi via LDAP/ | + | Le port 8329 est le seul port de '' |
| - | - Clients desktop/ | + | |
| - | ==== Surveillance et sécurité | + | ===== Services Docker ===== |
| - | ^ Outil | + | ^ Conteneur |
| - | | Cockpit | + | | lldap | Annuaire LDAP : comptes et groupes |
| - | | Uptime Kuma | + | | lldap | LDAPS | 6360 | LAN1, LAN2, VPN | |
| - | | Dozzle | + | | lldap | LDAP en clair | 3890 | Aucune depuis le réseau |
| - | | Homepage | + | | uptime-kuma | Disponibilité des services, alertes | 3001 | Proxy uniquement | |
| - | | CrowdSec | + | | homepage |
| - | | AIDE | Intégrité | + | | dozzle |
| + | | diun | Signalement | ||
| + | | imaginary | Génération d' | ||
| - | ===== Portables | + | Les ports sont publiés sur '' |
| - | Chaque portable dispose | + | Deux conséquences découlent |
| - | * '' | + | ===== Authentification ===== |
| - | * **Home local** sur le disque du portable (pas de NFS) | + | |
| - | * Au moins un login réseau réussi requis pour initialiser le cache offline | + | |
| - | **Mode offline** : après le premier login, kanidm-unixd maintient un cache chiffré local. L'authentification fonctionne sans réseau. En cas de changement de mot de passe hors réseau, la resynchronisation se fait au prochain contact avec le serveur. | + | LLDAP est la source unique des comptes et des groupes. Kanidm, prévu à l'origine, a été abandonné parce que son mode offline ne fonctionnait pas. Les UID sont forcés |
| - | **Exposition Kanidm vers l' | + | Sur les postes fixes et les portables, '' |
| - | ===== Stockage ===== | + | L' |
| - | * Soft-RAID '' | + | ===== Partages |
| - | * Toutes les données persistantes (fichiers Nextcloud, base MariaDB, musique Ampache) sont montées via **bind mounts** ou **volumes nommés** vers le RAID | + | |
| - | * Les données ne vivent jamais dans les couches des conteneurs Docker | + | |
| - | * Fichiers réseau (Samba/NFS) : hors Docker, accessibles uniquement sur le LAN1 | + | |
| - | ===== Plan de déploiement par étapes ===== | + | '' |
| - | Principe : chaque étape | + | L' |
| - | ==== Étape 1 — Socle de surveillance ==== | + | NFS 4 n' |
| - | **Objectif | + | LAN2 ne figure pas dans les exports |
| - | - Installer Cockpit en bare-metal ('' | + | ===== Portables ===== |
| - | - Déployer Dozzle (logs Docker) | + | |
| - | - Déployer Uptime Kuma (surveillance services) | + | |
| - | - Déployer Homepage (page d' | + | |
| - | - Vérifier l' | + | |
| - | **Risque | + | Les portables sont exclusivement en WiFi. Leur home est local, et '' |
| - | ==== Étape 2 — Services applicatifs | + | ===== Stockage ===== |
| - | **Objectif :** migrer les services actuels (bare-metal) vers Docker, un par un. | + | Les données |
| - | + | ||
| - | Ordre recommandé (du moins critique au plus critique) : | + | |
| - | + | ||
| - | - DokuWiki (pas de base de données, migration simple) | + | |
| - | - Blog (selon stack : WordPress ou statique) | + | |
| - | - MariaDB (conteneurisation de la base, snapshot avant migration) | + | |
| - | - Nextcloud (le plus complexe : permissions, | + | |
| - | | + | |
| - | + | ||
| - | **Règle :** conserver l'ancien service bare-metal actif jusqu'à validation complète du conteneur. | + | |
| - | + | ||
| - | **Risque :** moyen — planifier une fenêtre | + | |
| - | + | ||
| - | ==== Étape 3 — Authentification centralisée (Kanidm) ==== | + | |
| - | + | ||
| - | **Objectif :** déployer Kanidm et connecter les portables, sans toucher aux services web. | + | |
| - | + | ||
| - | - Déployer Kanidm en conteneur | + | |
| - | - Créer les 4 comptes et les groupes | + | |
| - | - Installer | + | |
| - | - Tester le login système + cache offline (couper le réseau et vérifier) | + | |
| - | - Connecter Nextcloud en LDAP vers Kanidm | + | |
| - | + | ||
| - | **Risque :** moyen — tester le fallback offline avant de valider. Garder | + | |
| - | + | ||
| - | ==== Étape 4 — SSO web (Authelia) ==== | + | |
| - | + | ||
| - | **Objectif :** protéger tous les services web derrière un portail de login unique. | + | |
| - | + | ||
| - | - Déployer Authelia | + | |
| - | - Configurer | + | |
| - | - Définir les règles d' | + | |
| - | - Tester service par service (DokuWiki en premier, Nextcloud en dernier) | + | |
| - | + | ||
| - | **Risque :** moyen à élevé — une mauvaise config Authelia peut bloquer l' | + | |
| - | + | ||
| - | ==== Étape 5 — Sécurité (optionnel) ==== | + | |
| - | + | ||
| - | **Objectif :** renforcer la détection d' | + | |
| - | + | ||
| - | - Déployer CrowdSec (analyse logs Caddy, SSH, Nextcloud) | + | |
| - | - Installer AIDE (intégrité fichiers système) | + | |
| - | - Configurer les alertes (mail ou webhook) | + | |
| - | + | ||
| - | **Risque :** faible — outils passifs ou bloquants uniquement sur les IPs malveillantes connues. | + | |
| - | + | ||
| - | ===== Estimation ressources ===== | + | |
| - | + | ||
| - | ^ Service | + | |
| - | | Nextcloud | + | |
| - | | MariaDB | + | |
| - | | Ampache | + | |
| - | | Blog | 50–100 Mo | | + | |
| - | | DokuWiki | + | |
| - | | Kanidm | + | |
| - | | Authelia | + | |
| - | | Uptime Kuma | 50 Mo | | + | |
| - | | Dozzle | + | |
| - | | CrowdSec | + | |
| - | | Homepage | + | |
| - | | **Total estimé** | **~900 Mo – 1,4 Go** | | + | |
| - | + | ||
| - | Marge disponible sur 8 Go : confortable. Surveiller MariaDB et Nextcloud en charge réelle. | + | |
| ===== Principes de sécurité ===== | ===== Principes de sécurité ===== | ||
| - | * MariaDB | + | * Le web n'entre depuis |
| - | * Cockpit accessible uniquement | + | * Le proxy, seule machine exposée en HTTP, est traité comme non fiable : son conteneur est cloisonné en sortie, et '' |
| - | * Kanidm exposé vers Internet uniquement pour le provisionnement | + | * Les ports des conteneurs de '' |
| - | * Les fichiers réseau (Samba/NFS) restent hors Docker, LAN1 uniquement | + | * Les interfaces d' |
| - | * LAN2 wifi isolé : aucun accès direct au serveur principal | + | * MariaDB n' |
| + | * LDAP ne circule sur le réseau qu'en LDAPS. | ||
commun/architecture_serveur.1781720696.txt.gz · Dernière modification : de francois
