Screego 1.12.6 介绍与选型指南
Screego 1.12.6 介绍与选型指南:讲清 Go 编写的开源多人屏幕共享服务是什么、WebRTC Mesh+内置 TURN 的架构原理、功能特性、适用场景与限制,并给出与 Galene/Jitsi Meet/LiveKit/Janus 的量化选型对比(2026-10-26 官方取证)。
Screego 1.12.6 介绍与选型指南
目标:面向需要在自有服务器上部署「多人屏幕共享」服务的工程师,讲清 Screego 是什么、解决什么问题、内部如何工作、与同类项目的差异与选型方法。本文所有事实均来自官方渠道(GitHub 仓库 screego/server、官网 screego.net、官方文档),溯源信息与查询日期见「一、环境信息」。
一、环境信息
本文为认知与选型篇,内容全部来自官方公开渠道的联网溯源,未混入本地测试数据。溯源清单如下:
- 官方网站与在线演示:https://screego.net(演示实例 https://app.screego.net)
- 官方代码仓库:https://github.com/screego/server
- 官方文档站(随仓库
docs/目录同源发布):Install / Config / NAT Traversal / Proxy / FAQ 各页 - 版本取证方式:shields.io GitHub Release 徽章
img.shields.io/github/v/release/screego/server,返回 v1.12.6(查询日期 2026-10-26) - 社区热度取证方式:shields.io 徽章(查询日期 2026-10-26)——GitHub Stars 徽章返回 11k,Docker Hub 拉取量徽章(
img.shields.io/badge/dynamic/json?url=https://hub.docker.com/v2/repositories/screego/server/)返回 631,526 - 许可证取证方式:仓库根目录
LICENSE文件正文为 "GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007"(查询日期 2026-10-26) - 技术栈取证方式:仓库
go.mod(查询日期 2026-10-26):模块github.com/screego/server,Go 1.26,WebRTC 栈依赖github.com/pion/turn/v4、github.com/pion/stun/v3、github.com/pion/dtls/v3等 pion 系列库
💡 说明:Screego 的仓库组织名是
screego/server(GitHub 仓库名 server),Docker Hub 官方镜像同名screego/server,搜索时注意仓库名与产品名不一致这一特点。
二、软件概述
2.1 Screego 是什么
Screego 官方自述为 "screen sharing for developers"——面向开发者的屏幕共享服务(来源:仓库 README,查询日期 2026-10-26)。它是一个用 Go 编写的开源多人屏幕共享服务器:发起人创建一个「房间」,把房间链接发给同事,所有人通过浏览器打开链接即可观看发起人的屏幕,全程基于 WebRTC 实现浏览器到浏览器的低延迟传输。
项目背景(来源:README 作者自述,查询日期 2026-10-26):作者在使用 Microsoft Teams 等企业聊天工具共享代码时,要么画面滞后数秒、要么压缩画质差到同事看不清代码,因此开发了 Screego,目标是「高质量、低延迟的屏幕共享」,并且只做屏幕共享这一件事——官方明确将其定位为现有协作软件的补充(an addition to existing software),而非会议全家桶。
2.2 核心卖点一览
来自官方 README 的特性清单(查询日期 2026-10-26):
- 多人屏幕共享:一个房间可多人观看,也可切换共享者;
- 基于 WebRTC 的安全传输:媒体流在浏览器之间点对点加密传输;
- 低延迟、高分辨率:区别于传统会议软件的转码管线,代码文字清晰可读;
- 安装简单:官方多架构 Docker 镜像或单个静态二进制文件两种形态;
- 内置 TURN 服务器: NAT 穿透能力开箱即用,自托管时无需再部署 coturn 等独立 TURN 服务。
三、核心架构
3.1 组件构成
Screego 是单二进制架构:一个 screego 可执行文件同时承载四个角色(依据:官方 Releases 发布物仅含 screego 二进制与配置样例,2026-10-26 官方仓库取证):
- HTTP 服务:托管内嵌的 React 前端页面与 REST 接口(登录、健康检查、配置读取等);
- WebSocket 信令服务:
/stream端点承载房间创建、加入、SDP/ICE 协商消息的转发; - 内置 STUN/TURN 服务:默认监听 UDP/TCP 3478 端口,负责 NAT 穿透,基于 pion/turn 实现;
- 认证与状态:用户文件(bcrypt 哈希)+ Cookie 会话 + 房间内存态。
默认端口:HTTP 5050,STUN/TURN 3478(来源:官方文档 install.md 与 config.md,查询日期 2026-10-26)。两个端口均可通过配置修改。
3.2 媒体流路径:P2P 直连优先,TURN 中继兜底
Screego 的屏幕画面默认不经过服务器。官方 NAT Traversal 文档(查询日期 2026-10-26)描述的机制如下:
- 浏览器之间先通过 STUN 探测各自的公网映射地址,随后媒体流在观看者与共享者的浏览器之间直连,Screego 服务器只参与连接建立,不转发画面;
- 当双方处于对称 NAT 等无法直连的网络时,自动回退到 TURN 中继:所有画面数据经 Screego 内置 TURN 服务器转发,此时服务器承担带宽开销。官方出于带宽保护考虑,默认要求登录用户才能使用 TURN(可通过
SCREEGO_AUTH_MODE调整)。
💡 技术拓展:WebRTC 多方传输拓扑不止 Screego 使用的这种「Mesh(P2P 直连)」一种,主流选项对比——
拓扑 原理 优点 缺点 代表实现 Mesh 每个参与者与其他所有人两两直连 无需媒体服务器、延迟最低、部署最简 参与者上行带宽随人数倍增,不适合大房间 Screego、MiroTalk P2P SFU 服务器选择性转发流,不转码 支持大规模房间、上下行解耦 需要专门的媒体服务器、带宽成本集中在服务器 Jitsi Meet、LiveKit、Galene、Janus、MiroTalk SFU MCU 服务器混流转码成一路 观看端最省带宽 服务器算力开销大、延迟高、画质受损 传统硬件会议、早期 WebRTC 网关 Screego 实际采用 Mesh + TURN 中继兜底的组合:观看人数少、追求画质延迟的场景下服务器成本几乎为零;官方同时内置 TURN,解决 Mesh 最怕的对称 NAT 问题。若目标是几十上百人的大规模直播式共享,应选 SFU 类项目(见「七、同类选型对比」)。
💡 技术拓展:ICE/STUN/TURN 三件套的关系——ICE(交互式连接建立)是 WebRTC 寻找可用连接路径的总框架;STUN(会话穿透工具)帮终端发现自己的公网地址,只做「介绍人」;TURN(中继穿透)在直连失败时充当「中转站」。三者均基于 UDP(可回落 TCP/TLS)。Screego 将 STUN 与 TURN 一并内置(3478 端口同时提供两种服务),自托管时不必再部署独立的 coturn;若已有外部 TURN,也可通过
SCREEGO_TURN_EXTERNAL_IP等配置切换到外部中继(来源:官方 config.md,查询日期 2026-10-26)。
3.3 房间模型与访问控制
- 房间制:由共享者创建房间并生成房间名,观看者凭房间名或链接进入;链接支持
?room=<房间名>&create=true参数实现「打开即建房」(来源:官方 FAQ,查询日期 2026-10-26); - 用户体系:Screego 没有数据库,用户来自一个文本文件(
用户名:bcrypt哈希每行一条),由screego hash命令生成;登录态为签名 Cookie; - 登录门槛可调:
SCREEGO_AUTH_MODE三个取值——all(所有操作都需登录)、turn(默认,仅使用 TURN 中继需登录)、none(完全开放),内网信任环境可关闭登录。
四、功能特性
结合官方文档与配置样例(查询日期 2026-10-26),Screego 的功能面如下:
| 功能 | 说明 |
|---|---|
| 多人观看房间 | 房间链接分享即可加入,支持随时切换共享人 |
| 低延迟高分辨率屏享 | WebRTC 直传,不转码,代码文字清晰 |
| 内置 STUN/TURN | 默认 3478 端口,自托管零依赖解决 NAT 穿透 |
| TURN 白名单防护 | SCREEGO_TURN_DENY_PEERS 可禁止 TURN 被用于访问内网地址段 |
| 用户认证 | 文本用户文件 + bcrypt,screego hash 生成凭据;Cookie 会话可配有效期 |
| 登录策略三档 | all / turn / none 三档控制是否强制登录 |
| TLS 与反向代理 | 支持 Screego 自持 TLS 证书或由 Nginx 等反代终结 TLS(需信任 X-Real-Ip 时开启 SCREEGO_TRUST_PROXY_HEADERS) |
| Prometheus 指标 | SCREEGO_PROMETHEUS=true 后在 /metrics 暴露指标,Basic Auth 保护 |
| CORS 源控制 | SCREEGO_CORS_ALLOWED_ORIGINS 限制 HTTP/WebSocket 来源 |
| 多架构 | 官方镜像支持 amd64、i386、ppc64le、riscv64、arm64、armv7、armv6;二进制另含 windows_amd64/i386(来源:官方 install.md) |
版本节奏(查询日期 2026-10-26):官方遵循 SemVer 语义化版本(README 声明),最新稳定版 v1.12.6。官方未提供 deb/rpm/APT 仓库,发布物为 GitHub Releases 上的 tar.gz 压缩包与多架构容器镜像;Arch Linux 用户可用社区维护的 AUR 包 screego-server / screego-server-bin(官方文档注明 AUR 非官方团队维护,安装前应检查 PKGBUILD)。
五、快速开始
以下为官方文档给出的两种最小启动路径(来源:官方文档 install.md,查询日期 2026-10-26;本文认知篇不重复本地实测,逐命令实测与完整部署流程见本专栏部署篇)。
5.1 Docker 一行启动(官方推荐)
docker run --net=host -e SCREEGO_EXTERNAL_IP=<你的公网IP> ghcr.io/screego/server:1.12.6
要点(官方说明):
SCREEGO_EXTERNAL_IP必须设置为服务器外网 IP(可用curl 'https://api.ipify.org'查询),否则启动会直接报错退出;- 官方强烈建议容器使用
--net=host宿主网络模式;若坚持端口映射的桥接模式,必须同时映射 HTTP 端口、3478 端口与SCREEGO_TURN_PORT_RANGE指定的 UDP 端口段(官方文档引用 issue #226 说明非 host 网络可能工作不正常); - TLS 为硬性要求:生产使用要么开启 Screego 自带 TLS,要么前置反向代理提供 HTTPS。
5.2 单二进制启动
wget https://github.com/screego/server/releases/download/v1.12.6/screego_1.12.6_linux_amd64.tar.gz
tar xvf screego_1.12.6_linux_amd64.tar.gz
chmod +x screego
SCREEGO_EXTERNAL_IP=<你的公网IP> ./screego serve
启动后浏览器访问 https://<服务器地址>:5050 即可创建房间开始共享(5050 为默认 HTTP 端口,可用 SCREEGO_SERVER_ADDRESS 修改)。
六、适用场景与限制
6.1 适用场景
- 远程代码评审 / 结对调试:Screego 的诞生场景,文字级画质 + 秒级以内延迟;
- 内网培训与操作演示:内网环境直连无 TURN 开销,一台内网机器即可支撑整个部门;
- 客服 / 运维坐席辅助:让用户把屏幕共享给坐席,比指导对方描述现象高效;
- 替代商业会议软件中的屏享环节:作为 Teams/飞书/Zoom 的补充,把「看代码」场景独立出来,减轻会议软件的带宽与画质压力。
6.2 限制与注意
- 只做屏幕共享:没有摄像头对讲、文字聊天、白板、录制等会议功能(官方定位即为补充而非替代);
- 规模上限在 Mesh 架构:观看者数量多、或多个观看者同时上麦共享时,P2P 直连的上行压力会快速放大;大规模广播式共享应选 SFU 类方案;
- TURN 中继产生服务器带宽成本:无法直连的参与者越多,服务器流量越大,且默认配置下 TURN 需要登录正是为此;
- 浏览器侧依赖:需要浏览器支持
getDisplayMedia屏幕捕获与 WebRTC,部分浏览器插件或策略会屏蔽 WebRTC(官方 FAQ 列为「Stream doesn't load」的首要排查项); - TLS 硬性要求:纯 HTTP 只适合本机验证,正式使用必须 HTTPS(浏览器安全策略决定);
- GPL-3.0 许可:对二次开发后的二进制分发有传染性义务,商业集成前需评估(取证:仓库 LICENSE 文件,查询日期 2026-10-26)。
七、同类选型对比
同类自托管 WebRTC 屏享/会议项目对比(星数与许可证取证方式:shields.io GitHub stars / license 徽章,统一查询日期 2026-10-26;Screego 补充维度来自本文前述官方取证):
| 项目 | 定位 | 架构模式 | 内置 TURN | 部署复杂度 | 许可证 | Stars |
|---|---|---|---|---|---|---|
| Screego 1.12.6 | 屏幕共享专用 | Mesh P2P + TURN 兜底 | 有(开箱即用) | 极低(单二进制/单容器) | GPL-3.0 | 11k |
| Galene | 视频会议 + 屏享 | SFU | 需自行配置 TURN | 低(单二进制 + Go 运行) | MIT | 1.4k |
| Jitsi Meet | 全功能视频会议 | SFU | 有(jitsi-videobridge 生态) | 中高(多组件栈) | Apache-2.0 | 30k |
| LiveKit | 实时音视频云平台 | SFU(分布式) | 有(内置 TURN 服务) | 中(单机简单,集群复杂) | Apache-2.0 | 22k |
| Janus | 通用 WebRTC 网关 | SFU(插件化) | 需自行配置 | 高(C 编译 + 插件体系) | GPL-3.0 | 9.2k |
| MiroTalk SFU | 会议 + 屏享 | SFU | 依赖外部 | 中(Node.js 全栈) | 以官方仓库为准 | —(徽章未取证) |
表格解读与「如果……则……」选型建议:
- 如果目标是「几个人看一块屏幕」,对延迟画质敏感、想省服务器带宽 → Screego(Mesh 直连让服务器近乎零负载,且内置 TURN 兜住复杂网络);
- 如果需要几十人以上同时观看、或共享之外还要摄像头/麦克风互动 → 选 SFU 类:轻量偏 Go 技术栈选 Galene 或 LiveKit,全功能会议选 Jitsi Meet,需要深度定制媒体管线选 Janus;
- 如果更看重宽松许可证便于二次分发 → Galene(MIT)/ Jitsi / LiveKit(Apache-2.0)优于 Screego 与 Janus(GPL-3.0);
- 如果在内网环境部署且不想维护 TURN → Screego 的「内置 STUN/TURN + 单二进制」组合是同类中部署面最小的。
社区活跃度与版本节奏补充说明:Screego 采用 SemVer 版本、最新稳定版 v1.12.6(2026-10-26 经 shields.io Release 徽章取证);官方镜像 Docker Hub 累计拉取 631,526 次(2026-10-26 经 shields.io dynamic/json 徽章取证),自托管使用规模可观。上表其余项目的星数均为 2026-10-26 单点快照,仅作量级参考,选型时建议再核对各自仓库的最新 Release 日期与 issue 响应情况。
八、参考链接
- 官方网站(含在线演示):https://screego.net
- 官方代码仓库:https://github.com/screego/server
- 官方安装文档:https://screego.net/#/install
- 官方配置文档:https://screego.net/#/config
- 官方 NAT 穿透说明:https://screego.net/#/nat-traversal
- 官方常见问题:https://screego.net/#/faq
- Docker Hub 官方镜像:https://hub.docker.com/r/screego/server