documentation/services/galene.md

83 lines
3.6 KiB
Markdown

# 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/>.