Ubuntu 22.04 安装 Screego 1.12.6 指南

Ubuntu 22.04 安装 Screego 1.12.6 指南:从零完成官方二进制下载校验、screego hash 用户文件、screego.config 配置、systemd 托管与局域网验证,含在线/离线双方案、升级回滚与五类启动排障实录,全命令实测。

ScreegoScreegoWebRTC屏幕共享2026/10/26

Ubuntu 22.04 安装 Screego 1.12.6 指南

目标:在一台 Ubuntu 22.04 服务器上从零安装 Screego 1.12.6,完成官方二进制下载校验、配置、systemd 托管与局域网访问验证,形成可长期运行的多人屏幕共享服务。全文命令与回显均已在 Ubuntu 22.04.5 LTS 实测通过。

一、环境信息

本文实测环境如下,读者在同类环境(Ubuntu 20.04/22.04/24.04 均适用)操作时可直接对应:

  • 操作系统:Ubuntu 22.04.5 LTS(PRETTY_NAME="Ubuntu 22.04.5 LTS",x86_64)
  • 服务器内网 IP:10.89.56.2(Screego 作为内网屏享服务使用;公网部署时把 SCREEGO_EXTERNAL_IP 换成公网 IP,其余步骤完全一致)
  • 软件版本:Screego 1.12.6(官方最新稳定版,2026-10-26 经 shields.io GitHub Release 徽章取证)
  • 安装目录:/opt/screego
  • 运行用户:系统用户 screego(无登录 Shell)
  • 服务端口:HTTP 8128(默认 5050,本文改为 8128)、STUN/TURN 3478(UDP/TCP 同端口)
  • 服务管理:systemd,单元文件 /etc/systemd/system/screego.service
  • 版本选择说明:官方遵循 SemVer,仅通过 GitHub Releases 发布 tar.gz 与多架构镜像,不提供 deb/rpm/APT 仓库;Arch Linux 用户可选社区 AUR 包 screego-server/screego-server-bin(官方文档注明非官方团队维护,安装前应检查 PKGBUILD)

二、前置条件

2.1 系统与依赖

Screego 是静态编译的 Go 二进制,解压即可运行,无任何第三方运行时依赖(不需要数据库、不需要 Node.js、不需要 Java)。只需确保服务器具备基础下载工具:

apt-get update && apt-get install -y curl tar ca-certificates

实测回显(输出节选,实测首尾):

Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Reading package lists... Done
...
Setting up ca-certificates (20230311ubuntu0.22.04.1) ...
Processing triggers for man-db (2.10.2-1) ...

2.2 端口规划

端口协议用途是否可改
8128TCPWeb 页面与 WebSocket 信令(默认 5050)可改(SCREEGO_SERVER_ADDRESS)
3478TCP+UDP内置 STUN/TURN 服务可改(SCREEGO_TURN_ADDRESS)

确认端口未被占用:

ss -ltn | grep -E ':8128|:3478' || echo "ports free"
ss -uln | grep 3478 || echo "udp free"

实测回显(本文实测时两端口空闲):

ports free
udp free

2.3 防火墙放行

若启用 UFW,放行 Web 与 TURN 端口:

ufw allow 8128/tcp    # Web 页面与 WebSocket 信令
ufw allow 3478/udp    # STUN/TURN(浏览器直连候选端口)

实测回显:

Rules updated
Rules updated (v6)
Rules updated
Rules updated (v6)

⚠️ 注意:若服务器启用了 TURN 中继(SCREEGO_TURN_PORT_RANGE 配置了中继端口段),该 UDP 端口段也需在防火墙与云安全组中放行,详见「六、配置说明」。

三、在线安装方案(A:官方 Releases 直接下载)

本章覆盖有外网(或经代理可达外网)服务器的标准安装路径:下载 → 校验 → 解压安装 → 配置 → systemd 托管 → 验证。

3.1 下载官方安装包

官方发布物为单个 tar.gz(内含 screego 二进制、screego.config.example 配置样例、LICENSE、README.md)。创建工作目录并下载:

mkdir -p /opt/screego && cd /tmp
wget https://github.com/screego/server/releases/download/v1.12.6/screego_1.12.6_linux_amd64.tar.gz

⚠️ 网络说明(实测):直连 GitHub Releases 下载时速度极慢(实测超过 120 秒未完成 5.4MB 下载,本次测试被迫中断重试),改走代理 http://192.168.1.62:7897 后数秒内完成。读者可按「官方源 → 国内中转 → 代理」的顺序尝试,命令如下:

# 方式一:直连官方源(官方源可用时优先)
wget https://github.com/screego/server/releases/download/v1.12.6/screego_1.12.6_linux_amd64.tar.gz
# 方式二:走 HTTP 代理(直连慢/失败时)
curl -fL -x http://192.168.1.62:7897 -o screego_1.12.6_linux_amd64.tar.gz \
  https://github.com/screego/server/releases/download/v1.12.6/screego_1.12.6_linux_amd64.tar.gz

本文实测采用方式二成功,下载完成后的文件与校验值:

ls -l screego_1.12.6_linux_amd64.tar.gz
sha256sum screego_1.12.6_linux_amd64.tar.gz

实测回显:

-rw-r--r-- 1 root root 5645453 Oct 26 14:38 screego_1.12.6_linux_amd64.tar.gz
b54e0d1564e43c41e1bd34cf560cc19f93940cb0d919ce7213854b9c8f878780  screego_1.12.6_linux_amd64.tar.gz

3.2 校验并查看安装包内容

tar -tzf screego_1.12.6_linux_amd64.tar.gz

实测回显:

LICENSE
README.md
screego.config.example
screego

包内共 4 个文件:主程序 screego、配置样例 screego.config.example、许可证与说明。没有 deb/rpm 安装脚本,全部安装动作就是「解压 + 授权」。

3.3 解压安装

tar -xzf /tmp/screego_1.12.6_linux_amd64.tar.gz -C /opt/screego
chmod +x /opt/screego/screego
/opt/screego/screego -v

实测回显:

screego version 1.12.6; screego/server@4ae5f443190be0ffa192a950531cf0aef646162b

版本串同时给出版本号与源码 commit,可用于核对下载物与官方 Release 是否一致。

3.4 认识命令行界面

Screego 的 CLI 面非常克制,只有 serve(运行服务)与 hash(生成用户口令哈希)两个子命令:

/opt/screego/screego --help

实测回显:

NAME:
   screego

USAGE:
    [global options] command [command options] [arguments...]

VERSION:
   1.12.6; screego/server@4ae5f443190be0ffa192a950531cf0aef646162b

COMMANDS:
   serve    
   hash     
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h     show help
   --version, -v  print the version

hash 子命令用于生成用户文件条目,必须同时提供 --name 与 --pass:

/opt/screego/screego hash --name admin --pass q1w2e3r4

实测回显(bcrypt 哈希,每次运行盐值不同,输出各不相同属正常现象):

admin:$2a$12$ljTxWqB6uljuV0yYB71lHOg5xxheF5aMpxkpUlndeLgusPkmdjXXi

若漏传参数会直接报错退出:

/opt/screego/screego hash q1w2e3r4

实测回显:

2026-10-26T14:38:29Z FTL --name must be set
Command failed with exit code 1

3.5 生成用户文件

Screego 不用数据库,用户凭据存放在一个文本文件中(每行 用户名:bcrypt哈希)。本文创建演示管理员 admin(密码 q1w2e3r4,即上一步生成的哈希):

echo "admin:\$2a\$12\$ljTxWqB6uljuV0yYB71lHOg5xxheF5aMpxkpUlndeLgusPkmdjXXi" > /opt/screego/screego.users
cat /opt/screego/screego.users

实测回显:

admin:$2a$12$ljTxWqB6uljuV0yYB71lHOg5xxheF5aMpxkpUlndeLgusPkmdjXXi

追加更多用户时,对每个用户单独执行一次 screego hash --name <用户> --pass <口令>,把输出行追加进 screego.users 即可;修改用户文件后 systemctl restart screego 生效。

3.6 编写配置文件

Screego 通过环境变量或配置文件读取配置,配置文件查找顺序为(依据官方 v1.12.6 源码 config/config.go):

  1. 可执行文件所在目录下的 screego.config.development.local → screego.config.development → screego.config.local → screego.config;
  2. ~/.config/screego/server.config;
  3. /etc/screego/server.config。

环境变量中已显式设置的 SCREEGO_* 变量优先于配置文件。注意:screego serve 不接受 --config 参数(实测报 flag provided but not defined: -config),必须依赖上述查找规则。本文把配置文件放在二进制同目录:

cat > /opt/screego/screego.config <<'EOF'
SCREEGO_EXTERNAL_IP=10.89.56.2
SCREEGO_SECRET=Yk4tP2mQ8xWvR7sJ5nHc3bE9uLdA6fZg
SCREEGO_SERVER_ADDRESS=0.0.0.0:8128
SCREEGO_TURN_ADDRESS=0.0.0.0:3478
SCREEGO_LOG_LEVEL=info
SCREEGO_AUTH_MODE=turn
SCREEGO_USERS_FILE=/opt/screego/screego.users
SCREEGO_CLOSE_ROOM_WHEN_OWNER_LEAVES=true
SCREEGO_PROMETHEUS=false
EOF
cat /opt/screego/screego.config

实测回显:

SCREEGO_EXTERNAL_IP=10.89.56.2
SCREEGO_SECRET=Yk4tP2mQ8xWvR7sJ5nHc3bE9uLdA6fZg
SCREEGO_SERVER_ADDRESS=0.0.0.0:8128
SCREEGO_TURN_ADDRESS=0.0.0.0:3478
SCREEGO_LOG_LEVEL=info
SCREEGO_AUTH_MODE=turn
SCREEGO_USERS_FILE=/opt/screego/screego.users
SCREEGO_CLOSE_ROOM_WHEN_OWNER_LEAVES=true
SCREEGO_PROMETHEUS=false

配置项逐项说明(全部参数的详解见本专栏《Screego 1.12.6 配置参数详解》):

  • SCREEGO_EXTERNAL_IP:服务器对外 IP,WebRTC 候选地址用它构造;必填,不设服务直接拒绝启动。内网部署填内网 IP,公网部署填公网 IP;
  • SCREEGO_SECRET:Cookie 签名密钥,必须唯一且保密;不设则每次重启后所有登录会话失效(启动日志会给出 INF 提示);
  • SCREEGO_SERVER_ADDRESS:HTTP 监听地址,本文改为 0.0.0.0:8128;
  • SCREEGO_TURN_ADDRESS:内置 STUN/TURN 监听地址,保持默认 3478;
  • SCREEGO_LOG_LEVEL:debug/info/warn/error 四档;
  • SCREEGO_AUTH_MODE:turn(默认,仅 TURN 中继需登录)/ all / none;
  • SCREEGO_USERS_FILE:上一步生成的用户文件路径;
  • SCREEGO_CLOSE_ROOM_WHEN_OWNER_LEAVES:房主退出即关闭房间的默认勾选值;
  • SCREEGO_PROMETHEUS:是否暴露 /metrics 指标端点。

3.7 创建系统用户与 systemd 托管

创建无登录权限的系统用户并赋予安装目录属主:

useradd -r -s /usr/sbin/nologin screego
chown -R screego:screego /opt/screego

(命令无输出即为成功;可用 id screego 复核,回显形如 uid=998(screego) gid=998(screego) groups=998(screego)。)

写入 systemd 单元文件:

cat > /etc/systemd/system/screego.service <<'EOF'
[Unit]
Description=Screego screen sharing server
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=screego
Group=screego
WorkingDirectory=/opt/screego
ExecStart=/opt/screego/screego serve
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

单元文件逐项说明:User/Group 以最小权限运行;WorkingDirectory=/opt/screego 让二进制能按查找顺序读到同目录配置文件;Restart=on-failure 在异常退出时 5 秒后自动拉起。启动并设置开机自启:

systemctl daemon-reload
systemctl enable screego
systemctl start screego

实测回显(enable 的输出):

Created symlink /etc/systemd/system/multi-user.target.wants/screego.service → /etc/systemd/system/screego.service.

3.8 验证服务运行

状态与启动日志验证:

systemctl is-active screego
systemctl status screego --no-pager -l
journalctl -u screego --no-pager | tail -4

实测回显:

active
● screego.service - Screego screen sharing server
     Loaded: loaded (/etc/systemd/system/screego.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2026-10-26 14:40:36 UTC; 2s ago
   Main PID: 2844 (screego)
      Tasks: 8 (limit: 2932)
     Memory: 3.3M
        CPU: 10ms
     CGroup: /system.slice/docker-03f6db43e69156fd458927cda651933af13a9d8b4e99e3929cb18fa12f3ab462.scope/system.slice/screego.service
             └─2844 /opt/screego/screego serve

Oct 26 14:40:36 screego-server systemd[1]: Started Screego screen sharing server.
Oct 26 14:40:36 screego-server screego[2844]: 2026-10-26T14:40:36Z INF Deny turn peers within ["0.0.0.0/8" "127.0.0.0/8" "::/128" "::1/128" "fe80::/10"]
Oct 26 14:40:36 screego-server screego[2844]: 2026-10-26T14:40:36Z INF Loaded Users amount=1
Oct 26 14:40:36 screego-server screego[2844]: 2026-10-26T14:40:36Z INF Start TURN/STUN addr=0.0.0.0:3478
Oct 26 14:40:36 screego-server screego[2844]: 2026-10-26T14:40:36Z INF Start HTTP addr=0.0.0.0:8128

启动日志三行关键信息:用户文件加载成功(Loaded Users amount=1)、TURN/STUN 已监听 3478、HTTP 已监听 8128。Memory: 3.3M 体现其资源占用极低。

端口监听验证:

ss -ltnp | grep -E ':8128|:3478'
ss -ulnp | grep 3478

实测回显:

LISTEN 0      4096               *:3478             *:*    users:(("screego",pid=3414,fd=6))       
LISTEN 0      4096               *:8128             *:*    users:(("screego",pid=3414,fd=7))       
UNCONN 0      0                  *:3478             *:*    users:(("screego",pid=3414,fd=3))       

TCP 8128(HTTP)、TCP+UDP 3478(TURN/STUN)均由 screego 进程(pid=3414)持有。HTTP 与健康检查验证:

curl -sI http://127.0.0.1:8128/ | head -5
curl -s http://127.0.0.1:8128/health

实测回显:

HTTP/1.1 200 OK
Content-Type: text/html
Date: Mon, 26 Oct 2026 14:40:55 GMT
Content-Length: 1053

{"status":"up","clients":0}

从局域网另一台机器(或同一网段的其他主机)访问验证:

curl -s http://10.89.56.2:8128/health

实测回显:

{"status":"up","clients":0}

浏览器打开 http://10.89.56.2:8128 即可看到 Screego 页面(正式对外使用需按官方要求配置 HTTPS,见「六、配置说明」)。

四、离线安装方案(B:内网/断网服务器)

内网或无外网服务器无法直接访问 GitHub Releases,此时先在任一可联网机器上取得安装包与校验文件,再通过内部分发通道(scp/U 盘/制品库)传到目标服务器,安装与配置动作与在线方案完全一致。本方案与在线方案的唯一区别是安装包的获取渠道。

4.1 在有网的机器上准备安装包

curl -fL -x http://192.168.1.62:7897 -o screego_1.12.6_linux_amd64.tar.gz \
  https://github.com/screego/server/releases/download/v1.12.6/screego_1.12.6_linux_amd64.tar.gz
sha256sum screego_1.12.6_linux_amd64.tar.gz > screego_1.12.6_linux_amd64.tar.gz.sha256

4.2 传输到目标服务器后校验

把两个文件传至目标服务器 /tmp 后执行校验(校验值与下载渠道无关,只与官方发布物绑定):

cd /tmp
sha256sum -c screego_1.12.6_linux_amd64.tar.gz.sha256

实测回显(本文在实验服务器上以同一发布物实测):

screego_1.12.6_linux_amd64.tar.gz: OK

4.3 安装

后续步骤与「三、在线安装方案」的 3.3~3.8 完全相同(解压 → 授权 → 用户文件 → 配置 → systemd → 验证),此处不再重复;唯一注意点是断网服务器上 apt-get install 不可用,需确认 tar(系统自带)与 curl(可省略,校验用 sha256sum 系统自带)即可。

五、方案对比与选择建议

维度方案 A:在线安装方案 B:离线安装
适用环境可联网(或经代理联网)服务器内网/断网服务器
获取渠道GitHub Releases 直接下载有网机器下载后内部分发
完整性保障下载后 sha256 校验sha256 校验文件随包分发
安装动作解压 + 授权 + systemd与 A 完全一致
升级便利性直接下载新版本替换需重复分发流程

选择建议:可联网服务器一律走方案 A;多台内网服务器批量部署时建议把 tar.gz 与 .sha256 文件放入内部制品库统一分发(方案 B),保证各节点版本与校验值一致。

六、配置说明

6.1 生产部署的 TLS 要求

官方文档明确:Screego 正式使用必须 HTTPS——浏览器对屏幕捕获(getDisplayMedia)与 WebRTC 的安全上下文要求决定了纯 HTTP 只能本机或受控内网验证。两条路径:

  1. Screego 自持 TLS:SCREEGO_SERVER_TLS=true 并配置 SCREEGO_TLS_CERT_FILE / SCREEGO_TLS_KEY_FILE;
  2. 反向代理终结 TLS:前置 Nginx 等,转发到 Screego 的 HTTP 端口;若需要在代理后保留 TURN 白名单认证能力,需开启 SCREEGO_TRUST_PROXY_HEADERS=true 并由代理注入 X-Real-Ip 头。

6.2 关键配置回顾

  • SCREEGO_EXTERNAL_IP:公网部署填公网 IP,支持逗号分隔的双栈值(IPv4,IPv6),也支持 dns:域名 形式从 DNS 解析;
  • SCREEGO_SECRET:务必设置唯一随机值(如 openssl rand -base64 24 生成),否则重启即全量登出;
  • SCREEGO_TURN_PORT_RANGE:TURN 中继使用的 UDP 端口段(如 50000:50200),需与防火墙/安全组放行保持一致;
  • SCREEGO_AUTH_MODE:公网部署建议 all 或保持默认 turn;完全信任的内网可用 none 免登录。

完整参数清单与逐项实测说明见本专栏《Screego 1.12.6 配置参数详解》。

6.3 版本升级与多版本管理

升级即「替换二进制 + 重启」:

systemctl stop screego
cp /opt/screego/screego /opt/screego/screego.v1.12.6.bak    # 保留旧版本便于回滚
tar -xzf /tmp/screego_<新版本>_linux_amd64.tar.gz -C /opt/screego screego
chmod +x /opt/screego/screego
systemctl start screego
/opt/screego/screego -v

实测回显(本文以上述流程在 1.12.6 上演练,-v 验证生效版本):

screego version 1.12.6; screego/server@4ae5f443190be0ffa192a950531cf0aef646162b

配置文件与用户文件位于安装目录、与二进制解耦,升级不丢失;回滚时 cp /opt/screego/screego.v1.12.6.bak /opt/screego/screego && systemctl restart screego 即可。多版本并存时建议目录形如 /opt/screego-1.12.6/、/opt/screego-1.13.0/,用软链接 /opt/screego 指向当前版本。

七、常见问题(FAQ)

Q1:启动即退出,日志报 SCREEGO_EXTERNAL_IP or SCREEGO_TURN_EXTERNAL_IP must be set? 这是最常见的首次启动失败:未设置对外 IP。Screego 启动时强制要求 SCREEGO_EXTERNAL_IP(或 SCREEGO_TURN_EXTERNAL_IP)存在,用于构造 WebRTC 候选地址。实测报错回显:

2026-10-26T14:39:50Z INF SCREEGO_SECRET unset, user logins will be invalidated on restart
2026-10-26T14:39:50Z FTL SCREEGO_EXTERNAL_IP or SCREEGO_TURN_EXTERNAL_IP must be set

在配置文件中补上 SCREEGO_EXTERNAL_IP=<服务器IP> 并重启即可。同一批日志还提示了 SCREEGO_SECRET unset 的连带影响:不设密钥时每次重启全部登录态失效。

Q2:启动报 could not start turn server ... bind: address already in use? 3478 端口被其他进程(例如已运行的 coturn,或重复启动的 screego 实例)占用。实测报错回显:

2026-10-26T14:51:55Z FTL could not start turn server error="udp: could not listen on 0.0.0.0:3478: listen udp 0.0.0.0:3478: bind: address already in use"

用 ss -ulnp | grep 3478 找到占用进程;如需共存,改 SCREEGO_TURN_ADDRESS=0.0.0.0:<其他端口>,或改用 SCREEGO_TURN_EXTERNAL_IP/SCREEGO_TURN_EXTERNAL_PORT 指向外部 TURN。

Q3:登录一直返回 401 could not authenticate? 用户文件格式为 用户名:bcrypt哈希,冒号后必须是 screego hash 产出的 bcrypt 串。若直接写了明文口令(如 notadmin:q1w2e3r4plain),文件能被加载(日志 Loaded Users amount=1)但 bcrypt 比对永远失败。实测回显:

HTTP/1.1 401 Unauthorized
{"message":"could not authenticate"}

处理:screego hash --name <用户> --pass <口令> 重新生成后写入 screego.users,systemctl restart screego。

Q4:页面能打开但观看端黑屏/转圈? 官方 FAQ 的排查顺序:① 确认使用 HTTPS 访问;② 确认 SCREEGO_EXTERNAL_IP 正确;③ 自托管时 TURN 默认需要登录,观看端先登录再进房间;④ 浏览器未禁用 WebRTC(扩展/策略);⑤ 防火墙已放行 5050(或自定义 HTTP 端口)、3478 与 TURN UDP 端口段。

Q5:screego serve --config xxx 报错? serve 子命令不支持 --config 参数,实测报 Incorrect Usage: flag provided but not defined: -config。配置文件必须按「3.6 编写配置文件」给出的查找顺序放置。

八、卸载与清理

systemctl disable --now screego

实测回显:

Removed /etc/systemd/system/multi-user.target.wants/screego.service.

随后删除程序与数据(配置与用户文件都在安装目录内,随目录一并移除):

rm -f /etc/systemd/system/screego.service
systemctl daemon-reload
rm -rf /opt/screego
userdel screego

以上命令无输出即为清理完成;可用 systemctl list-unit-files | grep screego(应无结果)与 ls /opt/screego(应报 No such file or directory)复核。

九、参考链接