共享屏幕?在线会议?Screego来帮你

Docker Pull Release GitHub License

Screego是一款开源的屏幕共享与协作工具,它具有以下特点:

  • 免费开源, 且无需注册任何账号,即用即抛
  • 无需安装客户端,直接通过浏览器即可分享和观看屏幕画面
  • 基于WebRTC实现端到端的加密通信,不需要服务器中转,不消耗带宽
  • 无法直连时可基于内置TURN服务器进行中转,有效解决NAT穿透问题,提高连接成功率

最佳实践

  • 为客户解决售后问题需要观看对方屏幕,安装远程控制或在线会议软件太麻烦?Screego一个连接搞定
  • 小型在线会议,担心免费服务超时又不想开会员?Screego一个连接搞定
  • 使用第三方工具担心数据泄露?Screego可以自己部署

如果你经常有向同事或客户分享屏幕又不想腾讯会议等付费产品时,可以试一试这个工具。这里已搭建了一个在线环境可直接使用也可以部署自己的Screego服务

screego.png

部署自己的Screego服务

XCR容器镜像仓库已收录Screego容器镜像,可以按以下流程通过docker来部署一套自己专用的服务。

常见问题摆在前面

  • 只支持HTTPS访问 因为涉及录屏、WebRTC等技术,因此只能在https访问下才能获取到浏览器的权限支持,可以让Screego直接启用TLS监听,也可以通过Nginx反向代理实现。
  • 没有NAT时需要中转 当用户处于没有NAT的内网环境时,用户间无法实现点对点传输数据,这时需要开启服务器TURN来提供中转服务

安装前的准备

打开终端环境执行以下命令,如果不需要认证,可忽略此步骤

1
2
3
4
5
# 创建Screego专用目录保存对应数据
mkdir -p /mnt/screego && cd /mnt/screego

# 创建Screego用户账号(如需开启登录使用时需要)
docker run --rm xiechaoyi.com/screego hash --name "test" --pass "123456" > users.txt

容器启动脚本

1
2
3
4
5
6
7
docker run -d --name=screego \
-v /mnt/screego/data:/data \
-v /mnt/screego/config:/config \
-v /mnt/screego/users.txt:/users.txt:ro \
-e SCREEGO_USERS_FILE=/users.txt \
-p 5050:5050 -p 3478:3478/tcp -p 3478:3478/udp -p 50000-50200:50000-50200/udp \
--restart=unless-stopped xiechaoyi.com/screego

服务器防火墙需要放通端口:5050/tcp3478/tcp3478/udp50000-50200/udp,如果你需要使用docker-compose的方式部署,可以点此下载配置文件

参数说明

Screego支持通过以下环境变量配置参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 所在服务器的公网IP,支持IPv4I、Pv6
SCREEGO_EXTERNAL_IP: 192.168.31.100,,2408:8264:127c:6db8:9c3:7fd4:6c06:256f
# 也可以设置通过域名获取IP地址及指定DNS服务器
SCREEGO_EXTERNAL_IP: dns:screego.xiechaoyi.com@223.5.5.5

# 使用是否需要身份验证:all-总是需要登录、none-从不需要登录、turn-使用中转服务器才需要登录
SCREEGO_AUTH_MODE: turn

# 用户账号文件,内容格式:user1:bcrypt密码哈希(在准备环节生成),支持多行多个账号密码
SCREEGO_USERS_FILE: /users.txt

# Cookie验证密钥,自己设置随机字符(无需登录时可不设置)
SCREEGO_SECRET: gbt0O96fltRY5uBG


# 监听端口是否为TLS监听
SCREEGO_SERVER_TLS: false

# 开启TLS时需指定证书文件路径
SCREEGO_TLS_CERT_FILE: /config/server.crt

# 开启TLS时需指定密钥文件路径
SCREEGO_TLS_KEY_FILE: /config/server.key

# 设置TURN服务器用于数据中继的端口范围
SCREEGO_TURN_PORT_RANGE: 50000:50200

# 是否接受反向代理头信息,如Screego通过代理服务器访问会通过X-Real-Ip等请求头获取用户真实IP
SCREEGO_TRUST_PROXY_HEADERS: true

Nginx反向代理配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
server {
listen 443 ssl;
server_name your-domain.com;

ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;

location / {
proxy_pass http://screego:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

# Screego需要开启WebSocket支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}