seize-infra-doc/docs/01-dns-prerequis.md
Hedi Kalboussi 1e90a85359 Documentation initiale infra Seize — passation J7
- 6 docs racine (README, HANDOVER, ARCHITECTURE, DECISIONS, INSTALL, OPERATIONS)
- 9 docs thématiques dans docs/
- 10 templates docker-compose dans configs/
- 7 scripts Python/Shell d'import Furious vers Zitadel
- 2 matrices RBAC

Etat infra au 5 juin 2026 :
- 88 users Furious importes dans Zitadel
- 8 roles RBAC crees et attribues
- Intranet filtre les cartes selon role (Approche A)
- 7 outils SSO operationnels
2026-06-05 17:49:43 +00:00

219 lines
4.7 KiB
Markdown

# 01 — DNS et prérequis
> Tout ce qu'il faut côté DNS et serveur avant de commencer.
---
## 🌐 Records DNS à configurer
Chez votre registrar (Scaleway, OVH, Gandi, etc.), ajouter les records suivants.
⚠️ **Tous les records sont des `A`** (pas de `CNAME`) pointant vers l'IP publique du serveur.
| Sous-domaine | Type | Valeur | Usage |
|---|---|---|---|
| `@` (racine) | A | `<IP>` | Site vitrine (optionnel) |
| `sso` | A | `<IP>` | Zitadel — Identity Provider |
| `intranet` | A | `<IP>` | Page d'accueil RBAC |
| `git` | A | `<IP>` | Gitea |
| `n8n` | A | `<IP>` | n8n workflows |
| `portainer` | A | `<IP>` | Portainer Docker |
| `code` | A | `<IP>` | Code Server (VS Code web) |
| `status` | A | `<IP>` | Uptime Kuma |
| `traefik` | A | `<IP>` | Dashboard Traefik (admin) |
| `app` | A | `<IP>` | whoami debug (optionnel) |
### TTL recommandé : 300 (5 min)
Pour pouvoir corriger rapidement en cas d'erreur.
### Vérification après ajout
```bash
# Sur ton PC
for sub in sso intranet git n8n portainer code status traefik; do
echo -n "$sub.seizeconsulting.com : "
dig +short $sub.seizeconsulting.com
done
```
→ Toutes les lignes doivent afficher l'IP du serveur.
⚠️ La propagation DNS peut prendre **1-24h**. Tester depuis plusieurs réseaux (4G, autre wifi) si pas immédiat.
---
## 🖥️ Spécifications serveur recommandées
### Minimum (88 users actifs Seize)
- **CPU** : 4 vCPU
- **RAM** : 8 Go
- **Disque** : 80 Go SSD
- **Bande passante** : 100 Mbps
### Recommandé (pour confort + croissance)
- **CPU** : 8 vCPU
- **RAM** : 16 Go
- **Disque** : 160 Go SSD
- **Bande passante** : 1 Gbps
### Provider testé : Scaleway
- Type d'instance : `PRO2-S` (4 vCPU, 16 Go RAM)
- Région : `fr-par-1`
- OS : Debian 13 (Trixie)
---
## 🔒 Firewall (recommandé)
### Configuration via ufw
```bash
sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp comment 'SSH'
sudo ufw allow 80/tcp comment 'HTTP (Traefik redirect)'
sudo ufw allow 443/tcp comment 'HTTPS'
sudo ufw enable
```
### Vérification
```bash
sudo ufw status verbose
```
→ Doit montrer ports 22, 80, 443 autorisés.
⚠️ **Ne PAS oublier d'autoriser le port 22** avant d'activer ufw, sinon tu te bloques hors du serveur.
---
## 🔑 Hardening SSH
### Désactiver le login root
Éditer `/etc/ssh/sshd_config` :
```
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
```
Restart : `sudo systemctl restart sshd`
⚠️ **Avoir un user non-root configuré AVANT** de désactiver root.
### Changer le port SSH (optionnel)
Si beaucoup de scans bots :
```
Port 2222 # Au lieu de 22
```
Ne pas oublier d'ouvrir le nouveau port dans ufw avant le restart sshd.
---
## 🐳 Prérequis Docker
### Installer Docker
```bash
curl -fsSL https://get.docker.com | sudo sh
```
### Ajouter user au groupe docker
```bash
sudo usermod -aG docker $USER
exit # Se déconnecter
# Se reconnecter
```
### Vérifier l'install
```bash
docker --version
docker compose version
docker ps
```
Tous doivent fonctionner sans `sudo`.
---
## 🌐 Réseaux Docker à créer
```bash
docker network create web
docker network create backend
```
- **web** : réseau pour les services exposés publiquement (via Traefik)
- **backend** : réseau pour les services internes (Postgres, Redis si utilisé)
---
## ⏰ NTP / Synchronisation horaire
⚠️ **Critique** pour les certificats TLS et les tokens JWT.
```bash
sudo apt install -y systemd-timesyncd
sudo systemctl enable --now systemd-timesyncd
timedatectl status
```
→ "System clock synchronized: yes" doit apparaître.
---
## 📊 Monitoring serveur de base
### Installer htop, iotop
```bash
sudo apt install -y htop iotop ncdu
```
### Espace disque alert
Optionnel : alert si > 80% d'espace utilisé :
```bash
cat > ~/disk-alert.sh << 'EOF'
#!/bin/bash
USAGE=$(df / | awk 'NR==2 {print $5}' | tr -d '%')
if [ $USAGE -gt 80 ]; then
echo "⚠️ Espace disque > 80% : $USAGE%" | mail -s "Alert disk Seize" admin@seizeconsulting.com
fi
EOF
chmod +x ~/disk-alert.sh
# Crontab tous les jours à 8h
(crontab -l ; echo "0 8 * * * /home/admin/disk-alert.sh") | crontab -
```
⚠️ Nécessite un client mail configuré (mailutils, ssmtp, etc.).
---
## ✅ Checklist avant de passer aux étapes suivantes
- [ ] DNS configurés et propagés
- [ ] Serveur accessible en SSH avec user non-root
- [ ] Firewall actif (22, 80, 443 ouverts)
- [ ] SSH hardening fait (pas de root, pas de password auth)
- [ ] Docker + Docker Compose installés et fonctionnels
- [ ] Réseaux Docker `web` et `backend` créés
- [ ] Horloge synchronisée (NTP)
- [ ] htop / outils de base installés
- [ ] Espace disque > 50 Go libre
→ Tout coché ? Passer à [02-traefik-setup.md](./02-traefik-setup.md).