Ubuntu 22.04 安装 Screego 1.12.6 指南
Ubuntu 22.04 安装 Screego 1.12.6 指南:从零完成官方二进制下载校验、screego hash 用户文件、screego.config 配置、systemd 托管与局域网验证,含在线/离线双方案、升级回滚与五类启动排障实录,全命令实测。
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 端口规划
| 端口 | 协议 | 用途 | 是否可改 |
|---|---|---|---|
| 8128 | TCP | Web 页面与 WebSocket 信令(默认 5050) | 可改(SCREEGO_SERVER_ADDRESS) |
| 3478 | TCP+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):
- 可执行文件所在目录下的
screego.config.development.local→screego.config.development→screego.config.local→screego.config; ~/.config/screego/server.config;/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 只能本机或受控内网验证。两条路径:
- Screego 自持 TLS:
SCREEGO_SERVER_TLS=true并配置SCREEGO_TLS_CERT_FILE/SCREEGO_TLS_KEY_FILE; - 反向代理终结 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)复核。
九、参考链接
- 官方安装文档:https://screego.net/#/install
- 官方配置文档:https://screego.net/#/config
- 官方 Releases 页(版本与资产下载):https://github.com/screego/server/releases
- 官方常见问题:https://screego.net/#/faq
- 本组件认知与选型:《Screego 1.12.6 介绍与选型指南》
- Docker Compose 部署方案:《Screego 1.12.6 Docker Compose 部署指南》