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

4.7 KiB

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

# 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

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

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

curl -fsSL https://get.docker.com | sudo sh

Ajouter user au groupe docker

sudo usermod -aG docker $USER
exit  # Se déconnecter
# Se reconnecter

Vérifier l'install

docker --version
docker compose version
docker ps

Tous doivent fonctionner sans sudo.


🌐 Réseaux Docker à créer

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.

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

sudo apt install -y htop iotop ncdu

Espace disque alert

Optionnel : alert si > 80% d'espace utilisé :

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.