Ubuntu 24.04 安装 Galene 1.2 指南

在 Ubuntu 24.04 从零安装 Galene 1.2.1:Go 1.27.3 源码编译(含国内 GOPROXY 排障)与交叉编译离线部署两方案,systemd 托管、galenectl 初始化、首个会议室实测验证。

GaleneGaleneWebRTC视频会议GoUbuntu 24.04Ubuntu2026/10/25

Ubuntu 24.04 安装 Galene 1.2 指南

目标:在 Ubuntu 24.04 LTS 服务器上从零安装 Galene 1.2.1 并完成 systemd 托管、TLS、管理工具 galenectl 初始化与第一个会议室验证。全文两种安装方案(本机源码编译 / 交叉编译离线部署)均已在 Ubuntu 24.04.5 LTS 上实测通过。

一、环境信息

  • 操作系统:Ubuntu 24.04.5 LTS(Noble Numbat),x86_64
  • 组件版本:Galene 1.2.1(2026-09-08 发布,当前 1.2 系列最新修订版)
  • 构建工具链:Go 1.27.3 linux/amd64(Galene go.mod 最低要求 Go 1.24.0;Go 安装占用约 283MB 磁盘)
  • 安装路径:/opt/galene/(二进制、static/、data/、groups/、recordings/)
  • 运行账户:galene(系统用户,nologin shell)
  • 服务名:galene.service(systemd)
  • 端口:8443/TCP(HTTPS + WebSocket)、1194/TCP+UDP(内置 TURN,可选)
  • 管理工具:galenectl(安装到 /usr/local/bin/)

二、前置条件

  • 一台 Ubuntu 24.04 服务器(方案 A 需可访问互联网;方案 B 目标机可完全离线)。
  • root 或具有 sudo 权限的账户;本文命令均以 root 身份执行。
  • 磁盘:Go 工具链约 283MB + Galene 源码与产物约 50MB,建议预留 1GB。
  • 防火墙(如启用)需放行:8443/TCP(Web 与信令);1194/TCP+UDP(TURN 中继,服务器有公网 IP 时强烈建议放行)。媒体走 UDP 高端口段,可用 -udp-range 收敛(见《Galene 1.2 配置参数详解》)。
  • 本文约定演示用管理员账号 admin,密码 q1w2e3r4(仅测试环境使用,生产环境务必更换)。

⚠️ 注意:Ubuntu 24.04 官方仓库没有 Galene 软件包,实测 apt-cache policy galene 无任何候选版本输出,因此不存在 apt 在线安装方案;同时 Galene 官方只发布源码 tar.gz,不提供预编译二进制,源码编译是唯一安装途径。

三、版本选型说明

版本发布日期说明
1.2.1(本文采用)2026-09-081.2 系列最新修订版,修复登录页摄像头/麦克风测试未停止等问题
1.22026-09-05递归/全局令牌、管理 API 令牌认证、galenectl update-token、安全加固
1.12026-06-21新增 galenectl initial-setup、全局令牌
1.02025-08-09升级 Pion v4、WHIP 推流、UDP 多路复用

选择建议:直接安装最新修订版 1.2.1。下载地址为 GitHub 源码归档 https://github.com/jech/galene/archive/refs/tags/galene-1.2.1.tar.gz(约 880KB)。

四、本机源码编译安装方案(A:官方推荐)

服务器能联网时首选本方案:在目标机上装 Go → 下载源码 → 编译 → 部署 → systemd 托管。

4.1 方案说明

Galene 是纯 Go 项目(CGO_ENABLED=0 静态编译),编译产物是一个约 13MB、无任何动态库依赖的单二进制,配合源码自带的 static/ 网页目录即可运行。编译一次产出两个程序:galene(服务器主程序)与 galenectl(管理 CLI)。

4.2 安装 Go 1.27.3

从 go.dev 下载官方二进制包并做 sha256 校验(2026-10-25 实测,完整校验值见下方命令):

cd /tmp
wget https://go.dev/dl/go1.27.3.linux-amd64.tar.gz
echo "65efbc80fdc1fa2cd2631cad5b481777a68e8725f34e89f50fc6ac714e379b40  go1.27.3.linux-amd64.tar.gz" | sha256sum -c -
go1.27.3.linux-amd64.tar.gz: OK

解压到 /usr/local 并配置 PATH:

rm -rf /usr/local/go && tar -C /usr/local -xzf go1.27.3.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' > /etc/profile.d/go.sh
source /etc/profile.d/go
go version
go version go1.27.3 linux/amd64

⚠️ 注意:国内网络访问 go.dev 不稳定时,可改用镜像站 https://golang.google.cn/dl/go1.27.3.linux-amd64.tar.gz,文件名与校验值一致。

4.3 下载 Galene 1.2.1 源码

cd /tmp
wget https://github.com/jech/galene/archive/refs/tags/galene-1.2.1.tar.gz
tar xzf galene-1.2.1.tar.gz
ls -d galene-galene-1.2.1
galene-galene-1.2.1

4.4 编译 galene 与 galenectl

# 国内网络必须先配置 Go 模块代理,否则拉取依赖会超时(实测 proxy.golang.org 不可达)
go env -w GOPROXY=https://goproxy.cn,direct

cd /tmp/galene-galene-1.2.1
CGO_ENABLED=0 go build -ldflags='-s -w'          # 编译主程序(成功无输出)
cd galenectl && CGO_ENABLED=0 go build -ldflags='-s -w'   # 编译管理工具
ls -la galenectl

构建成功后 galenectl 目录下出现 galenectl 二进制,源码根目录下出现 galene 二进制(约 13MB)。验证 Go 代理配置已生效:

go env GOPROXY
https://goproxy.cn,direct

4.5 部署到 /opt/galene

创建专用系统用户,拷贝二进制与网页目录,建立数据目录:

useradd -r -d /opt/galene -s /usr/sbin/nologin galene || true
mkdir -p /opt/galene
cd /tmp/galene-galene-1.2.1
cp galene /opt/galene/
cp -r static /opt/galene/
mkdir -p /opt/galene/data /opt/galene/groups /opt/galene/recordings
cp galenectl/galenectl /usr/local/bin/
chown -R galene:galene /opt/galene
ls -la /opt/galene/
total 13104
drwxr-xr-x 6 galene galene     4096 Oct 25 07:28 .
drwxr-xr-x 1 root   root       4096 Oct 25 07:28 .
drwxr-xr-x 3 galene galene     4096 Oct 25 07:29 data
-rwxr-xr-x 1 galene galene 13389984 Oct 25 07:28 galene
drwxr-xr-x 2 galene galene     4096 Oct 25 07:30 groups
drwxr-xr-x 2 galene galene     4096 Oct 25 07:28 recordings
drwxr-xr-x 4 galene galene     4096 Oct 25 07:28 static

各目录用途:data/ 存全局配置与令牌,groups/ 存会议室定义(JSON),recordings/ 存会议录制文件,static/ 是内置 Web 客户端。

4.6 TLS 证书

Galene 默认以 HTTPS 运行。未提供证书时,启动后自动生成自签名证书(仅测试可用,浏览器会提示不受信任)。已有正式证书时(如 Let's Encrypt),放置到以下路径即可,无需改配置:

cp /etc/letsencrypt/live/galene.example.org/fullchain.pem /opt/galene/data/cert.pem
cp /etc/letsencrypt/live/galene.example.org/privkey.pem   /opt/galene/data/key.pem
chown galene:galene /opt/galene/data/*.pem && chmod go-rw /opt/galene/data/key.pem

本文实测环境使用自动生成的自签名证书,因此管理命令需加 -insecure(见 4.8)。

4.7 systemd 托管

创建 /etc/systemd/system/galene.service(以下为实测在用配置):

[Unit]
Description=Galene videoconferencing server
After=network.target

[Service]
Type=simple
User=galene
Group=galene
WorkingDirectory=/opt/galene
ExecStart=/opt/galene/galene
LimitNOFILE=65536
Restart=on-failure

[Install]
WantedBy=multi-user.target

LimitNOFILE=65536 是官方建议:每场会议的媒体连接会消耗较多文件描述符。加载并启动:

systemctl daemon-reload
systemctl enable galene
systemctl start galene
systemctl is-active galene
active

查看完整状态(实测回显):

systemctl status galene --no-pager
● galene.service - Galene videoconferencing server
     Loaded: loaded (/etc/systemd/system/galene.service; enabled; preset: enabled)
     Active: active (running) since Sun 2026-10-25 07:28:28 UTC; 13min ago
   Main PID: 3410 (galene)
      Tasks: 11 (limit: 3612)
     Memory: 6.7M (peak: 8.6M)
        CPU: 4.728s

注意内存一项:空载常驻内存仅约 6.7MB。确认监听端口:

ss -ltnp | grep 8443
LISTEN 0      4096               *:8443             *:*    users:(("galene",pid=3410,fd=6))

⚠️ 注意:若服务器位于 NAT 之后(无公网 IP),日志会出现 TURN: no public addresses 与 Relay test failed: i/o timeout,表示内置 TURN 无法工作——Web 页面仍可访问,但跨网段媒体可能不通。解决办法见「八、常见问题」Q3。

4.8 初始化 galenectl 并创建管理员

galenectl 通过管理 API 操作服务器,首次使用先执行 initial-setup:在本地生成 ~/.config/galene/galenectl.json(连接参数),并把服务器端管理员写入 /opt/galene/data/config.json:

cd /opt/galene/data
galenectl -insecure -server https://localhost:8443 -admin-username admin -admin-password q1w2e3r4 initial-setup

该命令无输出即成功。生成的两个文件实测内容如下——

/root/.config/galene/galenectl.json(galenectl 客户端配置):

{
    "server": "https://localhost:8443",
    "admin-username": "admin",
    "admin-password": "q1w2e3r4"
}

/opt/galene/data/config.json(服务器全局配置,密码已 bcrypt 哈希):

{
    "writableGroups": true,
    "users": {
        "admin": {
            "password": {
                "type": "bcrypt",
                "key": "$2a$12$BaXbi3neOCI89tHJdmZVCOxxmePW12.ApiWaIp342cd36fYDuSPX2"
            },
            "permissions": "admin"
        }
    }
}

⚠️ 注意:writableGroups: true 表示允许通过 API/galenectl 修改会议室定义;若只读管理请改为 false。自签名证书环境下后续每条 galenectl 命令都要带 -insecure(否则报 x509: certificate is not valid for any names,见 FAQ Q2)。

4.9 创建第一个会议室并验证

创建会议室 city-watch、主持人 admin、普通用户 fred,并设置密码:

galenectl -insecure create-group -group city-watch
galenectl -insecure create-user -group city-watch -user admin -permissions op
galenectl -insecure set-password -group city-watch -user admin -password q1w2e3r4
galenectl -insecure create-user -group city-watch -user fred
galenectl -insecure set-password -group city-watch -user fred -password q1w2e3r4
galenectl -insecure list-groups
city-watch
galenectl -insecure list-users -l -group city-watch
admin        op
fred         present

最终验证 Web 访问(首页与会议室页均返回 200):

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

浏览器访问 https://<服务器地址>:8443/group/city-watch/,用 admin / q1w2e3r4 登录即可开始会议。galenectl 全部子命令与参数详见《Galene 1.2 常用 CLI 命令与工具详解》。

五、交叉编译离线部署方案(B:目标机离线/无 Go)

5.1 方案说明

目标服务器无法联网或不便安装 Go 时,在任意一台能联网的构建机(可为其他发行版)上交叉编译,再把产物拷贝到目标机部署。Galene 静态编译、无 CGO,交叉编译产物与原生编译完全等价。

5.2 构建机上交叉编译

构建机装好 Go 并配置代理后(同 4.2、4.4),指定目标平台编译。以「构建机为 x86_64、目标机同为 x86_64」为例(其实无需交叉参数,显式写出以便替换);目标机为 ARM64(如树莓派、ARM 服务器)时改用 GOARCH=arm64:

cd /tmp/galene-galene-1.2.1
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags='-s -w'
cd galenectl && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags='-s -w'

5.3 拷贝产物到目标机

cd /tmp/galene-galene-1.2.1
rsync -a galene static galenectl/galenectl galene@<目标机地址>:/tmp/galene-pkg/

在目标机上完成部署(与方案 A 的目录布局一致):

useradd -r -d /opt/galene -s /usr/sbin/nologin galene || true
mkdir -p /opt/galene/data /opt/galene/groups /opt/galene/recordings
cp /tmp/galene-pkg/galene /opt/galene/
cp -r /tmp/galene-pkg/static /opt/galene/
cp /tmp/galene-pkg/galenectl /usr/local/bin/
chown -R galene:galene /opt/galene

随后的 systemd 托管(4.7)、galenectl 初始化(4.8)、建组验证(4.9)与方案 A 完全相同,按原样执行即可。

六、方案对比与选择建议

维度方案 A:本机编译方案 B:交叉编译离线部署
目标机联网需要不需要
目标机安装 Go需要(约 283MB)不需要
目标机安装命令复杂度全在目标机完成目标机仅拷贝文件
systemd 服务名galene.servicegalene.service(相同)
监听端口8443、1194(相同)8443、1194(相同)
适用场景服务器可联网的常规安装内网隔离、批量下发、精简系统

选择建议:可联网的生产服务器直接选方案 A;内网/气隙环境或需统一分发的场景选方案 B,在构建机产出 galene + galenectl + static/ 三件套后打包分发。

七、配置说明

安装完成后日常涉及的配置项(完整参数逐项详解见《Galene 1.2 配置参数详解》):

  • 全局配置 /opt/galene/data/config.json:管理员账号(users)、是否允许 API 写会议室(writableGroups)、跨域来源(allowOrigin/allowAdminOrigin)、反向代理地址(proxyURL)、规范主机名(canonicalHost)。修改后无需重启,实时生效。
  • 会议室配置 /opt/galene/groups/<组名>.json:显示名、是否公开(public)、人数上限(max-clients)、用户与权限等。可用 galenectl 管理,也可直接编辑,实时生效。
  • TLS 证书:/opt/galene/data/cert.pem 与 key.pem,缺失时自动生成自签名证书。
  • 外部 TURN:服务器在 NAT 之后时,在 /opt/galene/data/ice-servers.json 中配置外部 TURN/STUN。
  • 常用启动参数:-http :8443(Web 地址)、-turn :1194(内置 TURN,默认 auto)、-udp-range(收敛媒体 UDP 端口范围)、-insecure(以纯 HTTP 运行,仅用于反向代理之后)。写入 systemd 单元 ExecStart 即可。
  • 防火墙放行(如启用 ufw):ufw allow 8443/tcp、ufw allow 1194/tcp、ufw allow 1194/udp。

八、常见问题(FAQ)

Q1:go build 卡在拉取依赖或超时失败?

国内网络访问默认代理 proxy.golang.org 不通(实测复现)。执行 go env -w GOPROXY=https://goproxy.cn,direct 后重新 go build 即可,本文全部实验均在该配置下完成。

Q2:galenectl list-groups 报 x509: certificate is not valid for any names?

实测报错原文:

2026/10/25 07:42:32 Get groups: Get "https://localhost:8443/galene-api/v0/.groups/": tls: failed to verify certificate: x509: certificate is not valid for any names, but wanted to match localhost

原因是服务器使用自签名证书。临时方案:每条 galenectl 命令加 -insecure;正式方案:按 4.6 部署受信任证书,并让 -server 地址与证书 CN/SAN 一致。

Q3:日志出现 TURN: no public addresses、Relay test failed: i/o timeout?

实测日志:

2026/10/25 07:28:28 TURN: no public addresses
2026/10/25 07:28:48 Relay test failed: i/o timeout
2026/10/25 07:28:48 Perhaps you didn't configure a TURN server?

表示内置 TURN 未获得公网地址(服务器在 NAT 后)或 1194 端口未放行。服务器有公网 IP 时放行 1194/TCP+UDP 即可;NAT 环境需在公网另设 TURN(如 coturn),并在 /opt/galene/data/ice-servers.json 配置后重启服务。仅影响跨网媒体连通性,不影响 Web 页面访问。

Q4:浏览器提示证书不受信任?

自签名证书的预期行为,点击继续即可。生产环境部署受信任证书后消失(见 4.6)。

Q5:如何升级 Galene?

重新下载新版本源码编译得到新二进制,然后 systemctl stop galene → 覆盖 /opt/galene/galene 与 static/ → systemctl start galene。data/ 与 groups/ 保留即完成数据延续;降级同理回滚二进制。多版本并存可用 /opt/galene-<版本>/ 分目录加 systemd WorkingDirectory/ExecStart 指向切换。

九、卸载与清理

systemctl stop galene
systemctl disable galene
rm /etc/systemd/system/galene.service && systemctl daemon-reload
rm -rf /opt/galene /usr/local/bin/galenectl
userdel galene
# 如不再需要 Go(方案 A):rm -rf /usr/local/go /etc/profile.d/go.sh

十、参考链接