documentation/services/galene.md

3.6 KiB

Galène, visio-conférence

Galène est un logiciel de visio-conférence écrit en Golang (pure) sous licence MIT. Il s'appuie sur le standard Web W3C WebRTC afin de connecter plusieurs navigateurs Web ensembles pour réaliser des visio-conférences.

Site officiel : https://galene.org/

Il est trivial à installer sur tous les systèmes d'exploitation en suivant le fichier INSTALL du dépôt de code. Il suffit d'avoir Golang et d'ouvrir le parefeu correctement.

Acronymes

L'audio-visuel est un domaine remplie d'acronymes. Pour le bien être des futurs responsables techniques qui s'arracheront les cheveux en essayant de debugguer Galène, voici une liste partielle d'acronymes :

  • WebRTC : Web Real Time Communication. Protocole permettant aux navigateurs Web de gérer des flux UDP. Utilisé par exemple par WebTorrent pour réaliser du Torrent, ou par toutes les applications classiques de visio-conférences. Le chiffrement est forcé dans le standard.

  • HLS : HTTP Live Streaming. Le principe consiste à découper un flux vidéo en segments et d'exposer ces segments sur un serveur HTTP. En 2021, le HLS est utilisé par PeerTube (sur du WebTorrent), Twitch et YouTube.

  • SRT : ce n'est pas le standard de sous-titre .srt, mais un protocole libre qui a pour but de remplacer RTMP (qui est un stream de fichier FLV, héritage de Flash Player).

  • RTP : Real Time Protocol, standard audio-visuel initialement pour le téléphone SIP, VoIP, VoLTE (appels sur 4G) et la Télévision Digitale (IPTV).

  • DTLS-SRTP : Secure Real Time Protocol avec un chiffrement standardisé.

  • SFU : Selective Forwarding Unit. Galène est un SFU, il reçoit des flux de plusieurs navigateurs Web et les redistribue selon des salons et permissions.

  • Pion : la librarie Golang pour utiliser WebRTC. Utilisé par Galène.

  • TURN : Traversal Using Relays around NAT. Serveur intermédiaire (proxy) pour traverser un parefeu trop limitant.

  • STUN : Session Traversal Utilities for NAT. Serveur permettant de réfléchir les adresse IP publiques d'un utilisateur et de taper sur son parefeu de l'extérieur. Un TURN contient un STUN.

  • ICE : Interactive Connectivity Establishment. Procédure pour trouer des parefeux (en utilisant des STUN et TURN) et ouvrir des flux UDP entre des machines distantes.

  • VP8/VP9/AV1 : Codecs vidéos royalty-free développés par Google. Ils sont intégrés dans le code source de Chromium et Firefox. AV1 est le successeur de VP9 qui est le successeur de VP8. AV1 est un codec vidéo adaptatif.

  • Opus : Codec audio libre intégré dans le code source des navigateurs Web. Il est très performant pour coder de la musique ou de la voix. Il hérite de SILK qui est le codec historique de Skype.

  • H264/H265 : Codecs non royalty-free (bouh!) poussés par la fondation MPEG et Apple. Les vielles versions de Safari ne supportent que ces codecs.

How to debug

Le mieux est d'utiliser Firefox pour débugger le WebRTC car leur interface est plus intuitive. Sur Firefox vous pouvez ouvrir about:webrtc et sur Chromium chrome://webrtc-internals.

Souvent ce qui casse c'est l'ICE et la connexion met soit beaucoup de temps à s'établir, ou ne s'établit pas. Le tableau décrivant l'ICE dans Firefox est utile car il donne les raisons des fails.

Faire gaffe à la sécurité

Un TURN est un proxy. Il faut donc s'assurer qu'il ne permet pas d'accéder aux réseaux d'administration à partir de l'extérieur.

Voir https://www.rtcsec.com/article/slack-webrtc-turn-compromise-and-bug-bounty/.