# 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 | `` | Site vitrine (optionnel) | | `sso` | A | `` | Zitadel — Identity Provider | | `intranet` | A | `` | Page d'accueil RBAC | | `git` | A | `` | Gitea | | `n8n` | A | `` | n8n workflows | | `portainer` | A | `` | Portainer Docker | | `code` | A | `` | Code Server (VS Code web) | | `status` | A | `` | Uptime Kuma | | `traefik` | A | `` | Dashboard Traefik (admin) | | `app` | A | `` | 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).