Files
infra/infrastructure.md
T

144 lines
6.0 KiB
Markdown

# Infrastructure SecourIT - Proxmox VE
Architecture d'infrastructure hébergée sur serveur OVH KS-2, migration vers Proxmox VE avec conteneurs LXC.
## Serveur physique
- **Modèle** : OVH KS-2
- **CPU** : 4 cœurs
- **RAM** : 32 Go
- **Stockage** : 4x 1.8 TB SATA (HGST HUS724020AL)
- **OS** : Proxmox VE (sur sda)
- **RAID** : md0 (RAID5) sur sdb+sdc+sdd, `/srv/media` (3.6 To, ext4)
## Réseau
| Interface | IP | Description |
|-----------|-----|-------------|
| vmbr0 | 51.195.5.147/24 | Bridge principal (WAN) |
| localnet | 10.10.10.0/24 | SDN local pour LXC |
- **NAT/Masquerade** : vmbr0 vers localnet
- **DNAT** : ports 80, 443, 81, 3001, 3005 vers 10.10.10.2
- **SSH** : Clé SSH uniquement (pas de mot de passe)
- **Firewall** : fail2ban
## Carte des conteneurs
| LXC | Hostname | IP | Description | Domaine |
|-----|----------|-----|-------------|---------|
| 100 | nginx-proxy | 10.10.10.2 | Nginx Proxy Manager + sites statiques | secourit.fr, wolfsoulbikers.fr, ajd.secourit.fr |
| 101 | postgres | 10.10.10.10 | PostgreSQL 17 | - |
| 102 | mariadb | 10.10.10.11 | MariaDB (dynasqy + csv) | - |
| 103 | dyna-prod | 10.10.10.20 | Club DynaSQY (Docker) | dyna.secourit.fr |
| 104 | gestion-prod | 10.10.10.21 | SecourIT Gestion (Next.js) | gestion.secourit.fr |
| 105 | jellyfin | 10.10.10.22 | Jellyfin Media Server (Docker) | tv.secourit.fr |
| 106 | csv-prod | 10.10.10.23 | CSV Vie Locale (Docker) | csv.secourit.fr |
| 107 | web-prod | 10.10.10.24 | Wycz + Portugais (Docker) | wycz.fr, portugal.secourit.fr |
| 108 | gitea | 10.10.10.25 | Gitea Git Server (Docker) | git.secourit.fr |
| 110 | preprod | 10.10.10.30 | Preprod Dyna + Gestion (Docker) | dyna-preprod.secourit.fr, gestion-preprod.secourit.fr |
## Bases de données
### MariaDB (LXC 102, 10.10.10.11)
| Base | Utilisateur | Description |
|------|-------------|-------------|
| dynasqy | dynausr / L0relei69 | Données DynaSQY (membres, événements, logs) |
| csv | csvusr / Fdp1989Dor@ | Données CSV (articles, événements, annonces) |
| dynasqy_preprod | dynausr | Données DynaSQY preprod |
| csv_preprod | csvusr | Données CSV preprod |
### PostgreSQL (LXC 101, 10.10.10.10)
| Base | Utilisateur | Description |
|------|-------------|-------------|
| gestion_secourit | gestion_user / L0relei69 | Données Gestion prod |
| gestion_secourit_preprod | gestion_user | Données Gestion preprod |
## SSL / Certificats
Tous les certificats Let' Encrypt sont gérés via Nginx Proxy Manager (API) :
| Domaine | Proxy Host ID | Cert ID | Destination |
|---------|---------------|---------|-------------|
| dyna.secourit.fr | 1 | 1 | 10.10.10.20:3001 |
| gestion.secourit.fr | 2 | 2 | 10.10.10.21:3005 |
| secourit.fr | 3 | 3 | 172.18.0.4:80 |
| wolfsoulbikers.fr | 4 | 4 | 172.18.0.5:80 |
| ajd.secourit.fr | 5 | 5 | 172.18.0.6:80 |
| tv.secourit.fr | 6 | 6 | 10.10.10.22:8096 |
| csv.secourit.fr | 9 | 9 | 10.10.10.23:3003 |
| wycz.fr + www | 10 | 10 | 10.10.10.24:3004 |
| portugal.secourit.fr | 11 | 11 | 10.10.10.24:3007 |
| git.secourit.fr | 12 | 12 | 10.10.10.25:3000 |
| dyna-preprod.secourit.fr | 15 | 13 | 10.10.10.30:3101 |
| gestion-preprod.secourit.fr | 16 | 14 | 10.10.10.30:3105 |
## Sauvegardes
### Sauvegarde interne (Proxmox)
- **Script** : `/usr/local/bin/proxmox-backup.sh`
- **Fréquence** : Chaque dimanche à 3h00 (cron)
- **Destination** : kDrive via rclone (remote `kdrive`, user `pierre@secourit.fr`)
- **Rétention** : 3 dernières sauvegardes (les plus anciennes supprimées)
- **Contenu** : Dump MariaDB + PostgreSQL, sites nginx, données dyna, app gestion, Gitea, configs Proxmox
- **Log** : `/var/log/proxmox-backup.log`
### Backups clients WordPress (vsftpd)
Le serveur OVH fait also office de serveur FTP de backup pour les sites WordPress clients. Les clients configurent **UpdraftPlus** (version gratuite) sur leur WordPress pour envoyer les sauvegardes en FTP vers le serveur OVH.
| Client | Site | Hébergeur | User FTP | Dossier serveur | Description |
|--------|------|-----------|----------|-----------------|-------------|
| event-solutions.fr | event-solutions.fr | o2switch | `ftp-event` | `/srv/backups/event-solutions/uploads/` | Site pas créé par moi, contrat de maintenance uniquement. Mise à jour + backup sur le serveur OVH |
| bonelliphotographie.fr | bonelliphotographie.fr | Infomaniak | `ftp-bonelli` | `/srv/backups/bonelli/uploads/` | Site créé par moi (SecourIT), hébergé chez Infomaniak |
#### Configuration vsftpd
- **Service** : vsftpd sur Proxmox host (pas dans un LXC)
- **Port** : 21 (FTP non-encrypté)
- **Config** : `/etc/vsftpd.conf`
- **Userlist** : `/etc/vsftpd.userlist` (userlist_deny=NO → seuls les users listés peuvent se connecter)
- **Chroot** : Chaque user est chrooté dans son propre dossier
- **PAM** : `/usr/sbin/nologin` ajouté dans `/etc/shells` pour autoriser les comptes système
- **Passif** : Ports 40000-40100
#### Mot de passe
- `ftp-event` : `3rBQCyQ9F15E!N22TxYy`
- `ftp-bonelli` : `K95uqz4pvaZ963vL`
#### UpdraftPlus (côté WordPress)
Configuration à renseigner dans WordPress > UpdraftPlus > Réglages > Stockage distant > FTP :
| Paramètre | event-solutions.fr | bonelliphotographie.fr |
|-----------|-------------------|----------------------|
| Type | FTP (non-encrypté) | FTP (non-encrypté) |
| Serveur | 51.195.5.147 | 51.195.5.147 |
| Port | 21 | 21 |
| Utilisateur | ftp-event | ftp-bonelli |
| Mot de passe | 3rBQCyQ9F15E!N22TxYy | K95uqz4pvaZ963vL |
| Chemin | / | / |
## Nginx Proxy Manager
- **Container** : `nginx-proxy-manager` (LXC 100)
- **Admin** : pierre@secourit.fr / Pierre2026!
- **API** : http://localhost:81/api/tokens (POST avec identity + secret)
## DNS
Géré sur **Infomaniak**. Tous les enregistrements A pointent vers 51.195.5.147.
## Fichiers importants
- `/usr/local/bin/proxmox-backup.sh` : Script de sauvegarde
- `/root/.config/rclone/rclone.conf` : Config rclone kDrive
- `/var/log/proxmox-backup.log` : Log des sauvegardes
- `/etc/vsftpd.conf` : Config serveur FTP backups clients
- `/etc/vsftpd.userlist` : Users FTP autorisés
- `/srv/backups/` : Dossiers de backup clients