BBB-via-ansible/Runbook_BBB_VPS_Ubuntu22.04.md
2026-02-08 18:21:55 -05:00

5.5 KiB
Raw Blame History

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
  • Linstall BBB viendra ensuite (BBB 3.x).

2) Paramètres à personnaliser (avant exécution)

FQDN

  • fqdn: "bbb.chezlepro.ca"

Compte dexploitation 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 navez 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, 1638432768/udp
  • TURN : 3478/tcp+udp, 5349/tcp, relais UDP (plage à réduire)

Recommandation : réduire le relais TURN à 5000055000/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 dinstaller BBB)

  1. Le DNS A de bbb.chezlepro.ca pointe vers lIPv4 du VPS.
  2. (Optionnel) AAAA si IPv6 utilisée.
  3. Les ports nécessaires sont ouverts côté firewall VPS (nftables).

4) Dépôt / arborescence attendue

  • inventory.ini (définit lhôte bbb)
  • 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 dexécution (rebuild)

5.1 Amorçage sudo (première exécution)

Si le user ansible na 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 lauth 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 mkswap si 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éer NOPASSWD manuellement 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 linterpré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 accept global).
  • Réduire la plage UDP TURN relay (fait/recommandé).
  • Ajouter une sauvegarde régulière des configs (git + backup /etc ciblé).
  • 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 :

  1. installe BBB 3.x (docker)
  2. installe et configure coturn
  3. configure Lets Encrypt pour bbb.chezlepro.ca
  4. applique la plage UDP relay TURN alignée avec nftables
  5. exécute des tests de santé (ports + WebRTC)

Historique

  • 2026-02-08 : Base VPS opérationnelle (SSH, nftables, fail2ban, docker, journald, sysctl, swap idempotent).