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, x86-64 uniquement.
  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 rejoindre une réunion, chaque navigateur doit établir un chemin média vers le serveur. Un service STUN aide à découvrir son adresse publique (média direct), et un relais TURN prend le relais quand un chemin direct est impossible (réseaux d’entreprise ou scolaires verrouillés). L’installeur propose de déployer un serveur STUN/TURN Vuisio sur le même serveur, plutôt que de dépendre d’un tiers.

Répondez « oui » à la question de connectivité (elle apparaît quand TLS est activé). L’installeur :

  • génère un secret partagé, scellé dans le coffre chiffré et jamais écrit en clair, utilisé à la fois par l’orchestrateur et par le relais ;
  • déploie le relais (service systemd en mode natif, conteneur en mode Docker) ;
  • expose le relais sur 3478 (STUN/TURN) et TURNS sur 443, ce qui traverse la plupart des pare-feux stricts ;
  • oriente automatiquement les navigateurs vers ce serveur.

En mode non interactif, activez-le dans la section [ice] du fichier de réponses (bundled = true, plus turn_host si vous voulez un autre nom que le défaut).

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>/).
# Sans page d'accueil (installez le module lobby pour en avoir une), 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]
# Déployer un serveur STUN/TURN Vuisio sur CE serveur (recommandé pour garantir
# la connectivité derrière les pare-feux stricts). Nécessite TLS et un second nom
# DNS pour le relais (défaut turn.<domaine>), pointé vers cette machine ; il est
# ajouté au certificat automatiquement. Quand bundled = true, les trois valeurs
# ci-dessous sont ignorées (dérivées automatiquement) et le secret est généré.
bundled = false
# Nom DNS du relais pour TURNS sur 443 (vide = turn.<domaine>).
turn_host = ""
# Mode externe (bundled = false) : pointer vers un serveur STUN/TURN existant.
# STUN public opéré en Europe.
stun_url = "stun:stun.nextcloud.com:443"
# Séparés par des virgules ; pour les pare-feux stricts, incluez une entrée
# turns:hote:443?transport=tcp.
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

Le plus simple est d’installer le module lobby, une page d’accueil gratuite où chacun crée une salle en un clic et la partage par lien d’invitation, sans aucune intégration :

Fenêtre de terminal
vuisio module add lobby

Une fois installé, le lobby devient la page d’accueil de votre instance. Voir le module lobby pour les détails.

Pour brancher Vuisio sur une plateforme existante, vous pouvez aussi (ou à la place) piloter les salles par l’API, en installant le module compatibilité BBB et Jitsi (compat) :

  • 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…).

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.