Galene 1.2 介绍与选型指南

Galene 视频会议服务器概述、SFU 架构、功能特性、快速开始、适用场景与限制,并与 Jitsi Meet、LiveKit、Janus、BigBlueButton、mediasoup 量化对比(2026-10-25 实查数据)。

GaleneGaleneWebRTC视频会议Go2026/10/25

Galene 1.2 介绍与选型指南

目标:说明 Galene 是什么、架构如何、能做什么,并与 Jitsi Meet、LiveKit、Janus、BigBlueButton、mediasoup 等同类方案做量化对比,帮助读者决定是否选用 Galene。文中版本、命令与回显已在 Ubuntu 24.04.5 LTS 服务器上基于 Galene 1.2.1(Go 1.27.3)实测通过。

一、环境信息

  • 操作系统:Ubuntu 24.04.5 LTS(Noble Numbat),x86_64
  • 组件版本:Galene 1.2.1(2026-09-08 发布,1.2 系列的最新修订版)
  • 构建工具链:Go 1.27.3 linux/amd64(go.mod 最低要求 Go 1.24.0)
  • 媒体栈:Pion WebRTC v4.2.20(纯 Go 实现的 WebRTC 协议栈)
  • 默认端口:8443/TCP(HTTPS + WebSocket 信令)、1194/TCP+UDP(内置 TURN 服务)
  • 数据目录:data/(全局配置与令牌)、groups/(会议室定义)、recordings/(录制文件)
  • 实测资源:单二进制 13MB,空载常驻内存约 6.7MB

二、软件概述

Galene(常写作 Galène)是一个开源的视频会议服务器,由法国 IRIF 研究所的 Juliusz Chroboczek(Babel 路由协议作者)于 2020 年发起,采用 MIT 许可证,官网为 https://galene.org。整个系统用 Go 语言编写,媒体层基于 Pion WebRTC 协议栈。

它的设计目标非常明确:一台普通服务器、一个二进制文件、几分钟内跑起一个功能完整的视频会议系统。与动辄由五六个服务组成的会议全家桶不同,Galene 没有数据库、没有消息队列、没有外部依赖——会议室和用户直接存成 JSON 文件,复制目录即可完成备份。

版本节奏(查询日期 2026-10-25,来源:源码仓库 CHANGES 文件):

版本发布日期关键变化
1.02025-08-09升级到 Pion v4、WHIP 推流、UDP 多路复用、层级令牌
1.12026-06-21新增 galenectl initial-setup、全局令牌、JSON 模板建组
1.22026-09-05递归/全局令牌、管理接口令牌认证、update-token、安全加固
1.2.12026-09-08修复登录页摄像头/麦克风测试未停止的问题、用户流状态图标修正

仓库活跃度:GitHub jech/galene 约 1.4k stars,最近一次代码提交在 2026-10-23(查询日期 2026-10-25),维护处于活跃状态。

三、核心架构

Galene 整体是一个 SFU(Selective Forwarding Unit,选择性转发单元):每个参会者把自家的音视频流上行推给服务器,服务器按订阅关系把流转发给其他参会者,不做解码重编码。

💡 技术拓展:实时会议的服务器架构不止 SFU 一种,常见三类对比如下——

架构原理服务器开销适用场景
Mesh(网状)参会者两两直连,无服务器转发极低2~3 人小通话
SFU(选择性转发)服务器转发各路流,不转码中低,随人数近线性增长几人至几十人的会议
MCU(多点控制单元)服务器把多路流混屏/混音成一路高(CPU 密集)超大 webinar、弱终端

Galene 采用 SFU 架构,因此服务器开销低、端到端延迟小,代价是参会人数不可能无限扩展(见「六、适用场景与限制」)。

一个 Galene 实例由以下部分组成:

  • galene 主程序:单个 Go 二进制,内嵌 HTTPS Web 服务器(默认 8443)、WebSocket 信令通道(/ws)、SFU 媒体转发引擎、WHIP 推流端点和管理 API(/galene-api/v0/)。
  • 内置 Web 客户端:static/ 目录下的浏览器页面,免安装、免 APP,浏览器直接加入会议。
  • 内置 TURN 服务器:默认监听 1194/TCP+UDP,用于 NAT/防火墙环境下的媒体中继;可关闭并改用外部 TURN。
  • galenectl 管理工具:独立编译的管理端 CLI,通过管理 API 完成建组、建用户、发令牌等操作。
  • JSON 文件存储:groups/*.json 存会议室与用户,data/config.json 存全局配置,data/var/tokens.jsonl 存邀请令牌——没有数据库。

媒体与协议:

  • 信令:HTTPS + WebSocket(JSON 消息)。
  • 媒体:SRTP over UDP(推荐),UDP 不通时经内置或外部 TURN 中继(TCP/UDP 1194)。
  • 视频编码:VP8(默认、全浏览器兼容)、VP9、AV1、H.264;音频编码:Opus(默认,唯一支持录制的音频编码)、G.722、PCMU、PCMA。
  • 支持 Simulcast(多码率并发),弱网参会者自动收到低码率流。

四、功能特性

以下是 Galene 1.2 的主要能力清单(均在 1.2.1 实测环境确认存在):

  • 多会议室(group):会议室即一个 URL(/group/<组名>/),支持层级子组;开启 auto-subgroups 后子组按需自动创建,适合「一门课 20 个小组」这类场景(作者本人就用它督导 40 人规模的课程实习)。
  • 音视频与屏幕共享:浏览器一键开关摄像头/麦克风,支持共享整屏或单个窗口;「Blackboard mode」提高分辨率换取帧率,适合板书。
  • 会议内聊天:群聊 + /msg 私聊,历史默认保留 4 小时且不落盘(隐私友好)。
  • 端到端加密的文件传输:参会者之间点对点传文件,不经过服务器磁盘。
  • 服务端录制:会议室开启 allow-recording 后,主持人可把会议录制成 WebM 文件存到 recordings/。
  • 邀请令牌:生成形如 https://<主机>:8443/group/<组名>/?token=XXX 的免密邀请链接,可设有效期、可吊销,1.2 起支持覆盖整个组层级的递归令牌。
  • 细粒度权限:op(主持人)/ present(可上麦上视频)/ message(仅聊天)/ observe(仅观看)/ caption(字幕)/ admin(管理)六档简写。
  • 开放会议:通配用户(wildcard user)允许「任意用户名 + 统一口令」甚至「任意用户名 + 任意口令」加入。
  • 外部认证对接:通过 authServer/authPortal + JWK 密钥可把认证委托给 LDAP、OAuth2 等第三方(官方提供 galene-ldap 与 Python 示例认证服务器)。
  • 背景模糊:可选集成 Google MediaPipe,缺失时自动隐藏对应菜单。
  • WHIP 推流:1.0 起支持 WHIP 协议,可从 OBS 等软件把一路流推进会议室。
  • 管理 API 与 CLI:/galene-api/v0/ REST 风格管理接口(ETag 乐观并发控制)+ galenectl 命令行工具。

五、快速开始(最小可用示例)

Galene 没有预编译发行包,从源码构建只需一条 go build(完整安装与 systemd 托管见《Ubuntu 24.04 安装 Galene 1.2 指南》)。以下命令在 Ubuntu 24.04 上实测:

# 1. 下载并解压源码(1.2.1,包大小约 880KB)
wget https://github.com/jech/galene/archive/refs/tags/galene-1.2.1.tar.gz
tar xzf galene-1.2.1.tar.gz && cd galene-galene-1.2.1

# 2. 一条命令完成构建(纯 Go、无 CGO,生成约 13MB 单二进制)
CGO_ENABLED=0 go build -ldflags='-s -w'

# 3. 建一个会议室目录并写入最小会议室定义(用户 vimes / 密码 sybil / 主持人权限)
mkdir groups
echo '{"users": {"vimes": {"password":"sybil", "permissions":"op"}}}' > groups/night-watch.json

# 4. 后台启动(默认监听 8443,无证书时自动生成自签名证书)
nohup ./galene &

验证(实测回显):

curl -sk -o /dev/null -w '%{http_code}\n' https://localhost:8443/group/night-watch/
200

返回 200 即表示会议室页面已可访问。浏览器打开 https://<服务器地址>:8443/group/night-watch/,忽略自签名证书警告,用 vimes / sybil 登录即可开会。

⚠️ 注意:国内网络环境下 go build 拉取依赖可能超时,先执行 go env -w GOPROXY=https://goproxy.cn,direct 再构建(本文所有实验均在此配置下完成)。

六、适用场景与限制

适合:

  • 中小型团队会议、教学分组讨论:几十人规模、多会议室并行,是 Galene 的设计甜区。
  • 注重隐私与数据自管的组织:无数据库、无遥测、聊天记录不落盘、文件传输端到端加密,全部数据就是几个 JSON 文件。
  • 资源受限的服务器:实测空载常驻内存约 6.7MB,二进制 13MB,1C1G 的入门 VPS 即可承载日常小组会议。
  • 需要快速交付的场合:从下载源码到第一个会议房间可访问,实测 10 分钟内完成。

限制(选型前必须知晓):

  • 单节点架构:没有集群、级联或多实例分担能力,单实例能承载的人数受服务器带宽与 CPU 限制,不适合几百上千人的大型 webinar。
  • NAT 环境需要额外 TURN:服务器在 NAT 之后时,内置 TURN 拿不到公网地址(实测日志:TURN: no public addresses / Relay test failed: i/o timeout),必须在公网另设 TURN 服务器并在 data/ice-servers.json 中配置。
  • 无官方移动 APP:移动端走浏览器(界面已做移动端适配)。
  • AV1/VP9 兼容性:VP9 与 Safari 不兼容;AV1 仅部分浏览器支持且不支持录制与 SVC。默认 VP8+Opus 是最稳妥组合。
  • 无人值守运营能力弱:没有内置监控、计费、报表,需要自行围绕管理 API 建设。

七、同类选型对比

以下数据查询日期均为 2026-10-25(stars 来自 GitHub API / shields.io 实查)。

项目架构语言许可证GitHub Stars部署形态资源占用定位
GaleneSFUGoMIT≈1.4k单二进制 + 静态页极低(实测空载 6.7MB 内存)中小会议、教学、自托管
Jitsi MeetSFU(JVB+Jicofo 多组件)Java/TSApache-2.0≈30.1k多服务全家桶,有官方容器镜像中高功能最全的会议套件
LiveKitSFUGoApache-2.0≈21.8k单二进制 + SDK 生态中面向开发者的实时音视频 PaaS 基座
Janus GatewayWebRTC 网关(插件式)CGPL-3.0≈9.2k需自行组装插件与信令低模块化协议网关,二次开发底座
BigBlueButton全家桶(FreeSWITCH 等十余组件)Java/TSLGPL-3.0≈9.3k官方专用安装脚本绑定 Ubuntu 版本高(官方建议 4C8G 起步)在线课堂(出勤、举手、白板、测验)
mediasoupSFU 库(非完整产品)C++/NodeISC≈7.4k需自写信令与业务层低嵌入自有产品的媒体引擎

选型建议(按「如果…则…」):

  • 如果只想要一个几分钟跑起来、维护省心的中小团队会议系统——选 Galene,这也是本文系列的场景。
  • 如果需要开箱即用的完整会议套件(共享日历式房间、拨号接入、YouTube 直播推流)且不在乎多组件运维——选 Jitsi Meet。
  • 如果是开发自有音视频产品(社交 App、互动直播、机器人参会)——选 LiveKit 或 mediasoup,它们本质是给开发者用的 SDK/引擎。
  • 如果做在线教育且需要课堂管理功能(考勤、分组讨论室管理、板书回放)——选 BigBlueButton,但要接受它对服务器配置和系统版本的硬要求。
  • 如果需要对接 SIP/PSTN、做协议转换网关——选 Janus。

💡 说明:Galene 的短板(无集群、社区规模小)与长板(极简、极省资源、隐私友好)是同一体两面。选型时先确认会议规模上限,再决定是否为「用不上的扩展性」付出运维成本。

八、参考链接