Aller au contenu

Installer un serveur

vuisio-installer est un installeur interactif (interface texte) qui amène un serveur Debian ou Ubuntu jusqu’à une instance Vuisio en service. Il prend en charge la détection du serveur, un preset de dimensionnement, le choix du runtime, la configuration de nginx et du certificat TLS, les réglages système (sysctl, gouverneur de fréquence, pare-feu), la génération des secrets et les contrôles de santé.

L’installeur propose deux runtimes. Le choix se fait pendant l’installation.

Le plus simple. L’installeur tire les images depuis le registre Vuisio et lance un docker compose dans le répertoire d’installation (/opt/vuisio par défaut).

  • Systèmes supportés : Debian 11 ou plus récent, Ubuntu 22.04 ou plus récent.
  • Toutes architectures.
  1. Récupérer l’installeur. Le binaire et ses sommes de contrôle sont publiés sur le serveur de releases public (aucune authentification, le cœur est public).

    Fenêtre de terminal
    curl -fsSLO https://releases.vuis.io/latest/vuisio-installer
    curl -fsSLO https://releases.vuis.io/latest/SHA256SUMS
    sha256sum --check --ignore-missing SHA256SUMS
    chmod +x ./vuisio-installer
  2. Lancer l’installation. En mode interactif, l’installeur détecte le serveur, propose un preset de dimensionnement, puis vous laisse choisir le runtime et renseigner le domaine.

    Fenêtre de terminal
    sudo ./vuisio-installer install
  3. Laisser l’installeur travailler. Il configure nginx et obtient le certificat TLS (certbot en mode webroot), applique les réglages système, génère les secrets (une seule fois, puis préservés) et vérifie la santé des services.

  4. Vérifier. Les sondes interrogent de vraies routes : /health sur le SFU et /api/health sur le client web. La commande doctor rejoue ces contrôles à tout moment.

    Fenêtre de terminal
    vuisio doctor

Pour automatiser une installation (CI, déploiements en série), passez les réponses dans un fichier TOML plutôt que de répondre aux questions :

Fenêtre de terminal
sudo ./vuisio-installer install --non-interactive --answers answers.toml
# Pour visualiser le plan sans rien modifier :
sudo ./vuisio-installer install --non-interactive --answers answers.toml --dry-run

Les secrets ne figurent pas dans ce fichier : ils sont générés sur le serveur et préservés entre les exécutions. Seuls external_ip, domain, preset, le bloc [tls] et le bloc [registry] sont obligatoires, le reste a des valeurs par défaut.

# Fichier de réponses : vuisio-installer install --non-interactive --answers answers.toml
external_ip = "203.0.113.7"
domain = "meet.example.com"
# Dimensionnement : lowpower | standard | large.
preset = "standard"
# Runtime : docker (par défaut) | native.
# native = services systemd, performances maximales (le SFU écoute l'UDP
# directement sur l'hôte) ; nécessite Debian 12+/Ubuntu 24.04+ x86-64.
runtime = "docker"
# Répertoire d'installation (défaut /opt/vuisio).
# install_dir = "/opt/vuisio"
# Épingler le gouverneur de fréquence sur "performance" (utile sur petits CPU).
governor = false
# Où rediriger un visiteur qui ouvre le domaine nu (https://<domaine>/).
# La base n'a pas de page d'accueil : les participants arrivent par des liens
# profonds. Vide = servir le client web.
home_redirect_url = ""
[tls]
# mode : actalis | letsencrypt | own | none.
# actalis : autorité européenne (italienne) gratuite, mise en avant ;
# email + eab_kid + eab_hmac (compte gratuit Actalis, page Manage with ACME).
# letsencrypt : email requis (staging = true pour tester sans entamer le quota).
# own : certificate + key (chemins de fichiers).
# none : HTTP brut (développement uniquement).
mode = "actalis"
email = "ops@example.com"
eab_kid = "REMPLACER_PAR_LE_KEY_ID_ACTALIS"
eab_hmac = "REMPLACER_PAR_LA_CLE_HMAC_ACTALIS"
[ice]
# STUN public opéré en Europe.
stun_url = "stun:stun.nextcloud.com:443"
turn_url = ""
turn_secret = ""
[registry]
# Registre des images (mode Docker) et des artefacts (mode natif).
host = "registry.lab.frogg.it"
prefix = "registry.lab.frogg.it/geezot/vuisio"
username = "deploy-token-user"
# Docker : un token vide réutilise un docker login en cache.
# Natif : requis pour télécharger les artefacts.
token = ""
# Tableau de bord de supervision (Prometheus + Grafana), désactivé par défaut.
[monitoring]
enabled = false
# allowed_cidrs = ["10.0.0.0/8"] # CIDR autorisés à atteindre /grafana/
# grafana_user = "admin"
# grafana_password = "" # vide = secret généré automatiquement
# Serveur de releases (à surcharger seulement pour des tests locaux).
# [artifacts]
# base_url = "http://10.211.75.1:8000"
# Mises à jour automatiques, désactivées par défaut.
# [updates]
# auto = false
# schedule = "daily" # daily | weekly
# time = "04:00" # horloge 24 h, heure du serveur
# day = "Sun" # hebdomadaire : Mon | Tue | Wed | Thu | Fri | Sat | Sun
# Surcharge ponctuelle des valeurs du preset.
# [tuning]
# VUISIO_SFU_THREADS = "2"
# VUISIO_MAX_PARTICIPANTS_PER_ROOM = "30"
# Options par défaut des nouvelles salles. Chaque option a une valeur de départ
# et un drapeau "locked" (verrouillée = imposée, non modifiable dans les salles).
# [room_defaults.allow_microphone_on_join]
# value = false # les participants arrivent muets
# locked = true
# [room_defaults.webcams_only_for_moderator]
# value = true
# locked = false

Le binaire est aussi l’outil d’administration, via l’alias court vuisio (un lien symbolique vers /usr/local/bin/vuisio-installer, créé à l’installation). Chaque commande lit le runtime depuis le manifeste d’installation et pilote docker compose ou systemd en conséquence.

CommandeRôle
vuisio statusÉtat des services
vuisio start et vuisio stopDémarrer et arrêter
vuisio restart (alias reboot)Redémarrer
vuisio logs [-f] [service]Journaux (suivi en direct avec -f)
vuisio doctorDiagnostiquer l’instance
vuisio upgradeMettre à jour vers la dernière version
vuisio reconfigureReprendre la configuration pré remplie
vuisio secretsAfficher ou faire tourner les secrets du coffre chiffré
vuisio moduleGérer les modules optionnels (lister, ajouter, retirer)
vuisio completionsGénérer la complétion shell (bash, zsh, fish…)
vuisio uninstallDésinstaller

La base installée n’inclut pas encore d’interface graphique pour créer et gérer des salles. Aujourd’hui, nous conseillons de piloter la création et la gestion des salles par l’API, en installant le module API BBB (compat-api) :

  • depuis un LMS (Moodle, Greenlight…) branché sur cette API ;
  • ou avec l’outil API Mate, une page web qui aide à construire et lancer les appels à l’API BigBlueButton (créer une réunion, obtenir un lien de connexion…).

Un module de lobby, pour créer des salles depuis une interface graphique, sera proposé gratuitement à l’avenir.

L’installeur génère une fois pour toutes les secrets nécessaires (clé de chiffrement des données, jetons d’authentification interne, mot de passe Redis), les scelle dans un coffre chiffré en AES-256-GCM, et les préserve à chaque réexécution. La clé de chiffrement des données n’est jamais régénérée automatiquement : sinon, les données déjà stockées dans Redis deviendraient illisibles.

Par défaut, l’installeur met en avant Actalis, une autorité de certification européenne (italienne), l’équivalent européen de Let’s Encrypt. Elle délivre gratuitement des certificats de validation de domaine (90 jours) via ACME. Vous fournissez des identifiants EAB (eab_kid et eab_hmac), récupérés en créant un compte gratuit chez Actalis, sur la page « Manage with ACME ». Le certificat est obtenu par certbot en mode webroot (jamais --nginx).

Trois autres modes sont disponibles :

  • Let’s Encrypt : ne demande qu’un email. L’option --le-staging permet de tester sans entamer les quotas.
  • Votre propre certificat : vous indiquez les chemins du certificat et de la clé.
  • Aucun TLS : HTTP brut, via --skip-tls, réservé aux tests.

Les versions sont découvertes depuis le serveur de releases public (versions.json : dernière version et changelogs). Par défaut, vuisio upgrade vise la dernière version, prend un verrou pour éviter les exécutions concurrentes, et ne fait rien si l’instance est déjà à jour. Pour épingler une version ou revenir en arrière, utilisez --version-tag. En mode --auto, un échec des contrôles de santé déclenche un retour arrière automatique.