5.5 KiB
Runbook de référence — VPS BigBlueButton (BBB) — Préparation & Recréation
Ce document sert de procédure de reconstitution (“rebuild/runbook”) pour remettre en place un VPS prêt à héberger BigBlueButton (BBB) avec :
- Ubuntu 22.04 LTS
- Docker (requis par BBB 3.x)
- Firewall nftables (table dédiée
inet hostfilter, compatible avec les règles Docker) - Fail2ban (action nftables)
- Durcissement SSH (clé seulement, root interdit)
- journald persistant + rotation
- sysctl (incl. forwarding pour Docker)
- swap idempotent
1) Hypothèses & invariants
- VPS public (OVH Beauharnois) avec IPv4 publique.
- FQDN prévu :
bbb.chezlepro.ca - Distribution : Ubuntu 22.04
- L’install BBB viendra ensuite (BBB 3.x).
2) Paramètres à personnaliser (avant exécution)
FQDN
fqdn: "bbb.chezlepro.ca"
Compte d’exploitation Ansible
admin_user: "ansible"admin_pubkeys: [...](clé(s) SSH ED25519)
SSH allowlist (IPv4)
Range 69.70.26.50 → 69.70.26.62 :
ssh_allow_cidrs_v4:
- "69.70.26.50/31" # .50-.51
- "69.70.26.52/30" # .52-.55
- "69.70.26.56/30" # .56-.59
- "69.70.26.60/31" # .60-.61
- "69.70.26.62/32" # .62
SSH allowlist (IPv6)
Si vous n’avez pas un /128 fixe, désactiver SSH en IPv6 (temps de chantier) :
ssh_allow_cidrs_v6: ["::1/128"]
Ports BBB + TURN
- BBB :
80/tcp,443/tcp,16384–32768/udp - TURN :
3478/tcp+udp,5349/tcp, relais UDP (plage à réduire)
Recommandation : réduire le relais TURN à 50000–55000/udp :
turn_relay_udp_min: 50000
turn_relay_udp_max: 55000
À répliquer ensuite dans coturn :
min-port=50000,max-port=55000.
3) Checklist DNS / réseau (avant d’installer BBB)
- Le DNS
Adebbb.chezlepro.capointe vers l’IPv4 du VPS. - (Optionnel)
AAAAsi IPv6 utilisée. - Les ports nécessaires sont ouverts côté firewall VPS (nftables).
4) Dépôt / arborescence attendue
inventory.ini(définit l’hôtebbb)group_vars/all.yml(variables)site.yml(playbook)roles/bbb_vps_prep/*(rôle de préparation)
Idéalement : initialiser un dépôt git pour historiser les changements :
git init
git add .
git commit -m "Initial: BBB VPS prep (Ubuntu 22.04, nftables, docker)"
5) Procédure d’exécution (rebuild)
5.1 Amorçage sudo (première exécution)
Si le user ansible n’a pas encore NOPASSWD :
ansible-playbook -i inventory.ini site.yml --become --ask-become-pass
Après cette première passe, /etc/sudoers.d/90-ansible est créé et les runs suivants se font sans prompt.
5.2 Exécution standard
make run
5.3 Dry-run
⚠️ Le --check ne crée pas réellement les services/units; certaines tâches doivent être conditionnées par not ansible_check_mode.
make dry-run
6) Contrôles post-déploiement
6.1 Services
systemctl is-active docker && echo "docker OK"
systemctl is-active fail2ban && echo "fail2ban OK"
systemctl is-active hostfilter-nft && echo "hostfilter OK"
6.2 Firewall
sudo nft list ruleset | sed -n '1,220p'
sudo nft -c -f /etc/nftables/hostfilter.nft
6.3 SSH
Valider que root est interdit et que l’auth est clé-only :
sudo sshd -t
sudo systemctl reload ssh
7) Points de conception importants (à ne pas casser)
7.1 nftables + Docker
- Docker gère ses propres tables (
ip nat,ip filter, etc.). - Notre politique “host” est dans
table inet hostfilter. - Le script ne flush pas le ruleset complet : il supprime/recrée uniquement
inet hostfilter.
7.2 Fail2ban + nftables
Fail2ban ajoute sa table inet f2b-table et hook avant hostfilter, ce qui est souhaité.
7.3 Swap idempotent
- Ne pas relancer
mkswapsi le swap est actif. - Logique :
blkid TYPE+swapon --show.
8) Dépannage rapide (symptômes connus)
“Missing sudo password”
- Lancer une fois avec
--ask-become-pass, ou créerNOPASSWDmanuellement dans/etc/sudoers.d/.
“Destination directory /etc/nftables does not exist”
- Créer le répertoire avant de templater le fichier :
file: path=/etc/nftables state=directory
hostfilter-nft.service échoue / erreur nft
- Lire :
journalctl -xeu hostfilter-nft --no-pager -l | tail -200
sudo nft -c -f /etc/nftables/hostfilter.nft
- Éviter certains patterns dans sets (ex:
iifname { "docker0", "br-*" }) et préférer des règles séparées.
Warnings Ansible Python interpreter
- Pinner l’interpréteur dans
inventory.ini:
bbb ansible_python_interpreter=/usr/bin/python3.10
9) Sécurité — recommandations “après chantier”
- Restreindre SSH à des CIDR stricts (fait).
- Option : limiter le trafic depuis les interfaces Docker vers le host (au lieu de
acceptglobal). - Réduire la plage UDP TURN relay (fait/recommandé).
- Ajouter une sauvegarde régulière des configs (git + backup
/etcciblé). - Ajouter une supervision (ex: node_exporter + Loki/Promtail si souhaité).
10) Prochaine étape (installation BBB + coturn)
Créer un rôle bbb_install séparé qui :
- installe BBB 3.x (docker)
- installe et configure coturn
- configure Let’s Encrypt pour
bbb.chezlepro.ca - applique la plage UDP relay TURN alignée avec nftables
- exécute des tests de santé (ports + WebRTC)
Historique
- 2026-02-08 : Base VPS opérationnelle (SSH, nftables, fail2ban, docker, journald, sysctl, swap idempotent).