Table des matières

Outil de visioconférence

Présentation de l'installation de Galène sur debian 10.

J'adapte ici l'articles d'installation Galène installation

Compilation

Il n'existe actuellement pas de package Debian pour Galène.
Il est donc nécessaire de le compiler avant de l'installer.

Je conseille de ne pas faire cette complilation sur la machine de production mais sur une machine de développement et de copier les résultats ensuite.

Compilateur Go

Vérifier que l'on a le compilateur Go.
Voir pour cela l'article Download and install

C'est simple:

Notez que des dépendances sont probablement nécessaires (comme le package “build-essential”).

Compiler Galène

Extraire les sources :

git clone https://github.com/jech/galene

Et lancer simplement la compilation :

cd galene
CGO_ENABLED=0 go build -ldflags='-s -w'

Au bout de quelque minutes, on se retrouve avec un binaire galene d'environs 11Mo.

Déployer

Copier les fichiers nécessaires sur votre machine de developpement.
Créer aussi les dossiers nécessaires. Dans cet exemple, on crée spécifiquement un utilisateur “visio”.

scp galene visio@prod.sleto.net:/home/visio
scp -r static visio@prod.sleto.net:/home/visio
ssh visio@prod.sleto.net mkdir /home/visio/data
ssh visio@prod.sleto.net mkdir /home/visio/groups

Configurer

Supervisor

En pro “Python”, j'ai tendance à plutôt utiliser supervisor qu'une configuration systemd

Créer donc un fichier /home/visio/supervisor-visio.conf

[program:visio]
environment=
directory=/home/visio
command=/home/visio/galene -http :8443 -turn :1194 -insecure
user=visio
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/visio.log
redirect_stderr=true

Ici, je reprécise les port pour les protocoles http et turn ainsi que le fait que je veux moi-même gérer le https (via -insecure)

ne pas oublier de rajouter cette configuration:

sudo ln -sf /home/visio/supervisor-visio.conf /etc/supervisor/conf.d/
sudo supervisorctl reread
sudo supervisorctl add visio
sudo supervisorctl restart visio

Proxy web

Rajouter une configuration nginx pour avoir un proxy web:

# Configuration du server
server {
    listen      80;
    server_name visio.sleto.net;
    return 301 https://visio.sleto.net/;
}

server {
    listen      443 ssl;
    server_name visio.sleto.net;

    include /opt/ssl/visio.sleto.net.conf;
    charset     utf-8;
    client_max_body_size 100M;
    gzip on;
    gzip_vary on;
    gzip_min_length 1024;
    gzip_proxied expired no-cache no-store private auth;
    gzip_types text/plain text/css text/xml text/javascript application/javascript application/x-javascript application/xml application/json application/pdf;

    fastcgi_buffers  16 16k;
    fastcgi_buffer_size  32k;

    index index.html;

    access_log /home/visio/visio.access.log;
    error_log /home/visio/visio.error.log;

    location /ws {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8443;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_read_timeout 120s;
        proxy_send_timeout 120s;
    }

    location / {
        proxy_pass http://127.0.0.1:8443;
        proxy_http_version 1.1;
    }
}

Que l'on active via:

sudo ln -sf /home/visio/nginx-visio.conf /etc/nginx/sites-enabled/
sudo service nginx restart

Notons que /opt/ssl/nginx-visio.conf contiendra les informations relatives aux clefs privé et public HTTPS/SSL (voir Serveur web sécurisé (Nginx / Let's Encrypt)).

Firewall

Le proxy web permet de gérer simplement le protocole http/https.
Par contre, il faut modifier le firewall pour le protocole turn.

Pour cela, ajouter l'ouverture du port 1194 en udp

iptables -A INPUT -p udp --dport 1194 -j ACCEPT
iptables -A OUTPUT -p udp --dport 1194 -j ACCEPT

Finaliser

Pour finaliser l'installation, ajouter un fichier de configuration /home/visio/data/config.json avec ce qui suit:

{
	"proxyURL": "https://visio.sleto.net/",
	"admin":[{"username":"admin","password":"BIG_SECRET"}]
}

Le champ proxyURL permet d'indiquer à Galène d'adresse public utilisé (important avec le web proxy).
Le champ admin permet de configurer un administrateur (pour les statistiques).

Personnalisation

Les groupes

Galène est maintenant fonctionnel … mais on ne peux pas s'y connecter.
En effet, il manque ici des configurations de groupes (c'est le nom pour “salon” chez galène)

Pour cela, ajouter un fichier “json” dans le répertoir “groups” de votre installation, comme par exemple ce fichier test.json

{
	"op":[{"username":"moi","password":"****"}],
	"presenter": [{}],
	"other": [{}],
	"public": false,
	"displayName": "Groupe de test",
	"description": "Pour faire des essais",
	"contact": "contact@sleto.net",
	"max-clients": 10,
	"allow-recording": true,
	"allow-anonymous": false,
	"allow-subgroups": true
}

Ce groupe apparait dans l'écran d'accueil si le booléan “public” est à true, sinon il faut saisir son nom dans la recherche.

L'ensemble de la description de ces champs se trouve sur l'article Galène

Apparence

Au déployement, nous avons copier un répertoire static à coté du binaire galene.
Celui-ci continens l'interface graphique par défaut en html/javascript.

On est donc libre de l'adapter à nos gouts afin d'en changer l'apparence par exemple.