server 中文使用教程
2026-08-02发表于
Docker一、速览
入门
screego 是一个面向开发者的自托管屏幕共享工具。它的核心场景很聚焦:你在本地写代码,想让同事实时看到你的屏幕画面,但又不想忍受 Teams、Zoom 这类视频会议软件在共享代码时出现的明显延迟和画质压缩。
项目用 Go 实现,基于 WebRTC 点对点传输。这意味着视频流不经过中心服务器转发(除非 NAT 穿透失败需要 TURN 中继),延迟通常可以控制在几百毫秒以内,代码文本依然锐利可读。它只做「屏幕共享」这一件事,不包含聊天、录制、白板等附加功能。
如果你有协同调试、结对编程、远程演示代码的需求,又不想把画面交给第三方平台,screego 是一个轻量且私密的方案。
二、安装
入门
screego 提供两种安装方式:单二进制文件和 Docker 镜像。单文件适合临时体验或在没有容器环境的服务器上运行,Docker 则更适合正式部署。
方式一:直接下载二进制
从 GitHub Releases 页面下载对应平台的最新版本压缩包,解压后即可运行:
wget https://github.com/screego/server/releases/download/v1.14.1/screego_1.14.1_Linux_x86_64.tar.gz
tar -zxvf screego_1.14.1_Linux_x86_64.tar.gz
./screego
方式二:Docker 部署(推荐)
docker run -d \
--name screego \
--restart=unless-stopped \
-p 5050:5050 \
-p 3478:3478/udp \
-v /path/to/config:/app/config \
screego/server
容器首次启动如果没有配置文件,会自动生成一份默认配置并退出,方便你在此基础上修改。
注意:端口 5050 是 Web 界面和信令服务的入口,3478/udp 是内置 TURN 服务器使用的端口。两者缺一不可。
三、核心用法
进阶 · 推荐细读
启动成功后,访问 http://你的服务器IP:5050,你会看到一个欢迎页面。screego 的核心逻辑非常简单:创建房间,加入房间,共享屏幕。
创建房间
点击页面上的创建按钮,系统会生成一个带唯一 ID 的链接:
https://your-server:5050/r/abc123
加入并共享
把链接发送给需要观看的同事。对方打开链接后,浏览器会请求访问你的屏幕和摄像头权限。授权后,屏幕画面通过 WebRTC 直接传输到对方的浏览器,不需要安装任何客户端插件。
参与者模型
- 共享者:创建房间的人,负责共享自己的屏幕
- 观看者:通过链接加入的人,可以多人同时观看
- 切换角色:观看者也可以申请共享,适合结对编程时交替操作
screego 的公共演示实例托管在 app.screego.net,你可以直接打开体验一下流程。不过公共实例的服务器在海外,国内访问延迟较高,自部署体验会更好。
四、配置
进阶 · 推荐细读
screego 使用 TOML 格式的配置文件。首次运行二进制后,会在当前目录生成 config/screego.config,Docker 方式则通过挂载卷生成。
核心配置项:
# 外部访问地址,必须是客户端能访问到的地址
SCREEGO_EXTERNAL_IP = "your-server-ip"
# Web 界面端口
SCREEGO_PORT = 5050
# 信令服务器地址,通常与外部 IP 一致
SCREEGO_SERVER_ADDRESS = "0.0.0.0:5050"
# TURN 服务器配置
SCREEGO_TURN_PORT = 3478
SCREEGO_TURN_REALM = "turn.screego.net"
# 密钥,用于生成房间 ID 的加密签名
SCREEGO_SECRET = "a-random-string"
# 是否启用 HTTPS
SCREEGO_HTTPS = true
关键点:外部 IP 和时间戳校验
SCREEGO_EXTERNAL_IP 必须设置为客户端能够访问到的服务器 IP 或域名。如果配置错误或服务器在 NAT 后面,观看者将无法建立 P2P 连接,画面会一直转圈。
常见的问题是:服务器在内网,通过路由器端口映射对外提供服务。此时
SCREEGO_EXTERNAL_IP要填写公网 IP,并且需要在路由器上同时转发 TCP 5050 和 UDP 3478 端口。
HTTPS 的必要性
WebRTC 在非安全上下文(非 HTTPS 或 localhost)下无法获取屏幕共享权限。如果你通过 IP 直接访问,浏览器会拦截 getDisplayMedia 调用。
解决方案有两个:
- 配置 Nginx 反向代理并启用 TLS 证书
- 使用 screego 自带的内置 HTTPS(配置
SCREEGO_HTTPS = true并指定证书路径)
SCREEGO_HTTPS = true
SCREEGO_CERT_FILE = "/path/to/fullchain.pem"
SCREEGO_KEY_FILE = "/path/to/privkey.pem"
五、运维场景
进阶 · 推荐细读
screego 作为日常协作工具,部署后建议纳入常规运维体系。以下几个场景值得提前考虑。
使用 systemd 管理二进制进程
[Unit]
Description=Screego Server
After=network.target
[Service]
Type=simple
User=screego
WorkingDirectory=/opt/screego
ExecStart=/opt/screego/screego
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Docker 部署时固定版本
镜像标签建议使用具体的语义化版本号(如 v1.14.1),不要追 latest。screego 版本迭代会引入配置字段变化,升级前先阅读 release notes 比对配置文件差异。
监控与日志
screego 的日志输出到 stdout,直接交给 Docker 日志驱动或 systemd journal 即可。需要关注的指标:
- 同时进行的房间数(反映并发压力)
- 信令连接的 WebSocket 数量
- TURN 中继流量(当 P2P 打洞失败时才会走高)
如果部署在内网仅供团队使用,观察活跃房间数就足够了。对于跨地域团队,建议在多个区域各部署一套实例,避免 TURN 中继跨洋转发造成延迟。
六、踩坑
深入 · 老手可选
screego 整体部署难度不高,但 WebRTC 的底层特性决定了有些问题在特定网络环境下必然会出现,提前了解能省去不少排查时间。
1. TURN 证书与端口冲突
内置 TURN 服务器监听 UDP 3478。如果服务器上已有其他服务占用该端口,TURN 会启动失败,但 screego 主进程可能不会退出。检查日志时容易忽略这一点。
2. 企业网络对 UDP 的限制
WebRTC 依赖 UDP 进行媒体传输。如果你的观看者身处企业网络,且防火墙只放行 TCP 80/443,P2P 连接会不断重试后失败。此时 TURN 需要以 TCP 模式运行:
SCREEGO_TURN_PORT_TCP = 3478
但即使 TURN 通过 TCP 443 中继,视频质量也会有明显下降,这是网络环境的硬约束,不是 screego 本身的问题。
3. 容器部署时的 IP 伪装
Docker 容器内部使用 NAT 网络,默认情况下 TURN 服务器响应的外部地址映射可能出错。正确做法是使用 --network=host 模式启动容器:
docker run -d \
--network=host \
--name screego \
-v /path/to/config:/app/config \
screego/server
这能确保容器直接使用宿主机网络栈,避免端口映射和 IP 混淆带来的连接失败。
4. 版本升级后的配置兼容
screego 偶尔会在新版本中移除或重命名配置项。升级后如果服务启动异常,优先检查配置文件中是否有不认识的字段——插件通常会忽略未知项,但 screego 的配置解析比较严格。
项目信息
| 项目 | 值 |
|---|---|
| 仓库 | screego/server |
| 语言 | Go |
| Star | 10,461 |
| Fork | 717 |
| 主页 | https://app.screego.net |
参考链接
83
51
1
1055
文章目录
评论