Screego 1.12.6 介绍与选型指南

Screego 1.12.6 介绍与选型指南:讲清 Go 编写的开源多人屏幕共享服务是什么、WebRTC Mesh+内置 TURN 的架构原理、功能特性、适用场景与限制,并给出与 Galene/Jitsi Meet/LiveKit/Janus 的量化选型对比(2026-10-26 官方取证)。

ScreegoScreegoWebRTC屏幕共享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 官方仓库取证):

  1. HTTP 服务:托管内嵌的 React 前端页面与 REST 接口(登录、健康检查、配置读取等);
  2. WebSocket 信令服务:/stream 端点承载房间创建、加入、SDP/ICE 协商消息的转发;
  3. 内置 STUN/TURN 服务:默认监听 UDP/TCP 3478 端口,负责 NAT 穿透,基于 pion/turn 实现;
  4. 认证与状态:用户文件(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.011k
Galene视频会议 + 屏享SFU需自行配置 TURN低(单二进制 + Go 运行)MIT1.4k
Jitsi Meet全功能视频会议SFU有(jitsi-videobridge 生态)中高(多组件栈)Apache-2.030k
LiveKit实时音视频云平台SFU(分布式)有(内置 TURN 服务)中(单机简单,集群复杂)Apache-2.022k
Janus通用 WebRTC 网关SFU(插件化)需自行配置高(C 编译 + 插件体系)GPL-3.09.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 响应情况。

八、参考链接