This commit is contained in:
parent
6e89379cd2
commit
ef47aabb4f
1 changed files with 102 additions and 0 deletions
102
infra.md
Normal file
102
infra.md
Normal file
|
@ -0,0 +1,102 @@
|
|||
---
|
||||
title: Infrastructure
|
||||
layout: page
|
||||
---
|
||||
|
||||
> Mis à jour le 09/09/2024
|
||||
|
||||
Mon infrastructure est entièrement hébergée chez moi, à l'exception d'`Amber`, un VPS en location chez [Contabo](https://contabo.com/), en Allemagne. Elle ne contient pas de données et me sert uniquement de gateway externe (et d'IP).
|
||||
|
||||
|
||||
```
|
||||
+-----------+
|
||||
| |
|
||||
| Freebox |
|
||||
| |
|
||||
+-----+-----+
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
| 192.168.1.0/24
|
||||
| gw.chapo.li
|
||||
|
|
||||
|
|
||||
|
|
||||
+---------+ +-----+-----+
|
||||
| | VPN | |
|
||||
| Amber +------------------+ Cirdan |
|
||||
| | 172.31.0.0/24 | |
|
||||
+---------+ wg.chapo.li +--+--+--+--+
|
||||
| | |
|
||||
| | |
|
||||
| | |
|
||||
| | |
|
||||
| | |
|
||||
+---------------+ | +---------------+
|
||||
| | |
|
||||
| | |
|
||||
+-----+-----+ +-----+-----+ +-----+-----+
|
||||
| | | | | |
|
||||
| Clients | | Hardware | | Servers |
|
||||
| | | | | |
|
||||
+-----------+ +-----------+ +-----------+
|
||||
10.255.1.0/24 10.255.2.0/24 10.255.3.0/24
|
||||
client.chapo.li hw.chapo.li vm.chapo.li
|
||||
```
|
||||
|
||||
## Machines physiques
|
||||
|
||||
`Cirdan` est un EdgeRouter X, acheté 35€ sur Leboncoin en août 2024. Il sert à la fois de routeur principal de l'infrastructure, de terminaison Wireguard pour le tunnel avec `Amber`, et de DHCP pour les clients du réseau (tous les serveurs sont en ip statique).
|
||||
|
||||
`Gandalf` est mon hyperviseur principal, sous Proxmox VE 8. C'est un serveur monté moi-même avec des composants PC.
|
||||
- Boitier Fractal Design Node 804 (130€)
|
||||
- Processeur AMD Ryzen 5 7600 (240€)
|
||||
- Carte mère Gigabyte B650M D3HP AX (145€)
|
||||
- RAM Kingston Fury Beast 32Go 5200MHz (122€)
|
||||
- Alimentation Corsair RM650 (100€)
|
||||
- SSD Samsung 980 250Go (60€)
|
||||
- 3 disques durs 2To de récup (0€)
|
||||
|
||||
Soit un total de 800€.
|
||||
|
||||
Le SSD sert de disque OS pour Proxmox, et n'est pas en RAID. Les 3 disques durs sont en RAIDZ1 et servent à héberger les disques des machines hébergées dessus. La très grande majorité, voire la totalité de mes machines sont des LXC, pour des raisons de simplicité et de performance.
|
||||
|
||||
J'utilise ma Freebox comme routeur et borne Wi-Fi, bien que la majorité du routage soit fait par `Cirdan`.
|
||||
|
||||
Enfin, j'utilise deux switchs Netgear GS608 comme switchs stupides.
|
||||
|
||||
## Plan d'adressage
|
||||
|
||||
Mon réseau est séparé de manière thématique, et chaque sous-réseau est associé à un nom de domaine. Ces réseaux ne sont pas isolés par VLAN (car mes bornes Wi-Fi et mes switchs ne le supportent pas).
|
||||
|
||||
- `client.chapo.li` (`10.255.1.0/24`) : contient les appareils branchés en Wi-Fi ou filaire à mon réseau (ordinateurs, téléphones, télévision, consoles...). C'est le seul réseau avec DHCP.
|
||||
- `hw.chapo.li` (`10.255.2.0/24`) : contient les machines physiques (actuellement, uniquement `Gandalf`).
|
||||
- `vm.chapo.li` (`10.255.3.0/24`) : contient les machines virtuelles.
|
||||
- `gw.chapo.li` (`192.168.1.0/24`) : contient uniquement le lien entre `Cirdan` et la Freebox.
|
||||
- `wg.chapo.li` (`172.31.0.0/24`) : contient les terminaisons Wireguard (`Cirdan`, `Amber`, et autres).
|
||||
|
||||
Je n'utilise actuellement que de l'ipv4.
|
||||
|
||||
## Routage
|
||||
|
||||
Les clients utilisent la Freebox comme passerelle vers Internet, à travers `Cirdan`. À cause de l'impossibilité de configurer des routes statiques sur la Freebox, `Cirdan` doit NATer les paquets à destination de la Freebox, qui doivent donc traverser 2 NAT.
|
||||
|
||||
Les serveurs ont accès à internet à travers le tunnel Wireguard et ressortent donc en Allemagne, sauf exception (par exemple le runner Forgejo, qui fonctionne mal depuis l'Allemagne, allez savoir pourquoi). L'implémentation du routage est faite grace à du [Policy-Based Routing](https://help.ui.com/hc/en-us/articles/204952274-EdgeRouter-Policy-Based-Routing).
|
||||
|
||||
## DNS
|
||||
|
||||
J'implémente un système de double DNS pour gérer mon infrastructure avec des noms de domaine publics, sans publier les enregistrements DNS sur internet, comme décrit dans [ce blogpost](https://faercol.me/fr/posts/dns-challenge/). J'ai donc un serveur DNS interne, `dns.vm.chapo.li`, qui contient tous les enregistrements que j'utilise en interne, et qui n'est pas accessible de l'extérieur, et un serveur DNS externe, `dns-ext.vm.chapo.li`, sans aucun enregistrement, qui ne sert qu'à l'exécution de challenges DNS Let's Encrypt pour la génération de mes certificats TLS internes.
|
||||
|
||||
## Machines virtuelles
|
||||
|
||||
Toutes (ou presque) mes machines virtuelles sont des LXC. La majorité sont sous Debian 12, à quelques exceptions près, qui sont sout NixOS. Celles sous Debian sont managées par Ansible, et celles sous NixOS sont déployées avec [deploy-rs](https://github.com/serokell/deploy-rs). J'héberge de nombreux services dont la liste est dynamique, et donc non-exhaustive : Forgejo, Cryptpad, Nextcloud, Sharkey, Vikunja, Prosody... Ils sont utilisés par moi et par mon entourage. La création de ces LXC est également gérée par Ansible.
|
||||
|
||||
J'ai un système de backup basé sur Restic et MinIO, afin de sauvegarder les données de tous mes services importants. J'ai également plusieurs monitorings en place :
|
||||
- Grafana + Prometheus pour monitorer les métriques de mes serveurs, grace à [Prometheus Proxmox VE Exporter](https://github.com/prometheus-pve/prometheus-pve-exporter)
|
||||
- Uptime Kuma pour visualiser et alerter sur la disponibilité de mes services
|
||||
- Healthchecks pour le monitoring de mes backups
|
||||
|
||||
Ayant une seule adresse ipv4 publique, tous mes services web externes sont derrière un reverse-proxy Nginx hébergé sur un LXC NixOS, `dillon.vm.chapo.li`.
|
||||
|
||||
Ce blog a ses sources hébergées sur [git.chapoline.me](https://git.chapoline.me), est construit sur le runner Forgejo `action.vm.chapo.li`, et est hébergé sur le serveur Nginx de `dillon.vm.chapo.li`, rendu accessible sur Internet via le tunnel avec `amber.wg.chapo.li`.
|
Loading…
Add table
Reference in a new issue