đïž Architecture â
Cette page dĂ©crit comment les serveurs se rĂ©partissent les services, comment une requĂȘte atteint un service et comment les utilisateurs sâauthentifient. Le matĂ©riel est dĂ©taillĂ© dans lâinventaire, lâadressage dans la page RĂ©seau.
đ„ïž HĂŽtes et rĂŽles â
| HĂŽte | Nature | RĂŽle |
|---|---|---|
| Luxembourg | Machine virtuelle Oracle Cloud, adresse publique | Services qui doivent rester joignables mĂȘme si le site principal est coupĂ© (VPN NetBird, page dâĂ©tat, supervision), traduction (Tolgee) et quelques services du domaine distinct dera.page |
| Bruxelles | Serveur TrueNAS du site principal | La majorité des services : données, médias, domotique, identité (Zitadel), messagerie Matrix, outils internes |
| Pristina | Machine virtuelle Debian | Cible de sauvegarde : reçoit une réplication ZFS de Bruxelles |
| Paris | Ordinateur de bureau | Poste de travail, et seconde cible de réplication de Bruxelles |
Sur Bruxelles, les services viennent de deux sources : les applications du catalogue TrueNAS (TrueNAS Apps), installées depuis son interface, et les piles Docker Compose déployées par Ansible depuis le dépÎt Infrastructure. Sur Luxembourg, tout est déployé par Ansible. Le déploiement détaille ce fonctionnement.
Ce site et le portfolio sont hébergés à part, sur GitHub Pages (voir Ce site).
đŁïž Parcours dâune requĂȘte â
Chaque hĂŽte a son propre Traefik, seul conteneur Ă publier les ports web (80 et 443). Traefik termine le TLS, applique les protections communes, puis transmet la requĂȘte au conteneur du service par un rĂ©seau Docker.
- Services publics : leur nom DNS pointe vers lâadresse publique de lâhĂŽte (voir DNS). Bruxelles est joint par la connexion fibre du site principal, Luxembourg directement.
- Sites derriĂšre Cloudflare :
minitrainstore.fretguenola-sahut.frpassent par le proxy de Cloudflare ; Traefik nâaccepte pour ces sites que les connexions venant de Cloudflare (voir SĂ©curitĂ©). - Services privĂ©s : leur nom DNS pointe vers une adresse du rĂ©seau local, et leur route Traefik nâaccepte que le rĂ©seau local et le VPN (voir SĂ©curitĂ©). Depuis lâextĂ©rieur, on y accĂšde par le VPN.
- Trafic interne : certains services sont joints sans passer par Internet, par exemple la supervision qui interroge Traefik sur un point dâentrĂ©e rĂ©servĂ© au rĂ©seau Docker (voir Supervision).
đ VPN NetBird â
NetBird relie les appareils et les serveurs dans un rĂ©seau maillĂ© chiffrĂ© (WireGuard). Son serveur de gestion, de signalisation et de relais tourne sur Luxembourg, joignable publiquement pour que les appareils puissent sây connecter ; il a son propre fournisseur dâidentitĂ© intĂ©grĂ©. Une fois connectĂ©, un appareil atteint les services privĂ©s des deux hĂŽtes comme sâil Ă©tait sur le rĂ©seau local. Les serveurs lâutilisent aussi entre eux, par exemple pour la supervision de Bruxelles depuis Luxembourg. La plage dâadresses du VPN est donnĂ©e dans la page RĂ©seau.
đŹ FĂ©dĂ©ration Matrix â
Le serveur Matrix (Synapse) de anneraud.fr tourne sur Bruxelles. Les identifiants sont de la forme @nom:anneraud.fr : le domaine nu anneraud.fr publie la dĂ©lĂ©gation Matrix (/.well-known/matrix) et transmet les requĂȘtes de fĂ©dĂ©ration Ă Synapse, sur le port 443 ; le reste du domaine nu redirige vers www.anneraud.fr. LâAPI dâadministration de Synapse nâest accessible que depuis le rĂ©seau local ou le VPN.
đȘȘ Authentification unique â
Zitadel, Ă lâadresse authentification.anneraud.fr, est le fournisseur dâidentitĂ© de lâinfrastructure. Les services sây raccordent en OpenID Connect (OIDC) : lâutilisateur se connecte une fois sur Zitadel, puis accĂšde aux services qui lui sont ouverts.
Les applications OIDC ne sont pas créées à la main : elles sont décrites dans opentofu/zitadel/applications.auto.tfvars et créées par OpenTofu avec le fournisseur officiel de Zitadel.
- Chaque application dĂ©clare ses adresses de retour, ses rĂŽles et son mode dâauthentification : PKCE par dĂ©faut, secret client seulement quand le service lâexige.
- Un service déployé par Ansible provisionne son application au moment de son déploiement (rÎle
zitadel_applications), puis reçoit lâidentifiant client dans sa configuration. Pour les services gĂ©rĂ©s hors dâAnsible, un playbook dĂ©diĂ© crĂ©e les applications et indique oĂč reporter le rĂ©sultat. - Les rĂŽles attribuĂ©s dans Zitadel dĂ©cident des droits dans le service (exemple : la supervision).
- LâĂ©tat dâOpenTofu est chiffrĂ© (chiffrement natif dâOpenTofu) et conservĂ© avec les autres secrets, hors du dĂ©pĂŽt public.
La supervision est la premiĂšre application raccordĂ©e de cette façon ; lâoutil de dĂ©ploiement Semaphore doit suivre (voir la feuille de route).