- 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
219 lines
4.7 KiB
Markdown
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).
|