"ScreeGo"屏幕共享开源项目

"ScreeGo"屏幕共享开源项目

ScreeGo项目GitHub地址:https://github.com/screego/server

ScreeGo官方文档:https://screego.net/

一,部署环境

雨云服务器

香港2核4G8M服务器

Ubuntu Server 22.04系统

1panel国产Liunx面板

雨云服务器配置详情

  • 购买服务器时选择系统预设的1panel面板安装

  • 等待服务器自动开启完成,会在下面显示出1panel的输出信息,并根据提示的账号密码登录进1panel

二,配置docker-compose

  • 在面板中找到容器>编排>创建编排

  • 输入编排文件docker-compose.yml

version: "3.7"
services:
  screego:
    image: ghcr.io/screego/server:1.10.3
    ports:
      - 5050:5050 #这里是网页端口
      - 3478:3478 #这是Turn服务器端口
      - 50000-50200:50000-50200/udp
    environment:
      SCREEGO_EXTERNAL_IP: "这里填写本地的公网IP"
      SCREEGO_TURN_PORT_RANGE: "50000:50200"

如图所示

点击确认之后自动拉去镜像和创建容器

三,配置环境变量

  • 在容器中找到刚刚创建的”screego“容器,点击停止,在点击右侧更多选项,点击编辑选项进行编辑

  • 在最下面的环境变量中添加环境变量

  • SCREEGO_EXTERNAL_IP:这是 Screego 正在运行的服务器的外部 IP 地址(包括 IPv4 和 IPv6)。它用于告知客户端服务器的地址。如果服务器使用动态 IP 地址,则可以使用域名来解析 IP 地址。

  • SCREEGO_SECRET:这个设置是用来为 cookie 验证提供唯一的秘密密钥。每个 Screego 服务器应该有一个不同的密钥。

  • SCREEGO_SERVER_TLS:此设置用于启用或禁用 HTTP 请求的 TLS(传输层安全性)。Screego 要求使用 TLS,您可以启用此设置或通过反向代理服务 TLS。

  • SCREEGO_SERVER_ADDRESS:这是 HTTP 服务器监听的地址。可以是主机名和端口的组合,也可以是 Unix 套接字路径。

  • SCREEGO_TURN_ADDRESS:这是 TURN 服务器监听的地址。TURN 服务器用于在 NAT 或防火墙后面的设备之间中继流量。

  • SCREEGO_TURN_PORT_RANGE:此设置限制 TURN 用于数据中继的端口范围。

  • SCREEGO_TURN_EXTERNAL_IP:如果使用外部 TURN 服务器而不是 Screego 自带的 TURN 服务器,此设置应包含外部 TURN 服务器的 IP 地址。

  • SCREEGO_TRUST_PROXY_HEADERS:如果 Screego 部署在代理服务器后面,此设置应启用以信任反向代理头信息,如 X-Real-Ip

  • SCREEGO_AUTH_MODE:此设置定义何时需要用户登录。它可以设置为始终要求登录、仅在 TURN 连接时要求登录或从不要求登录。

  • SCREEGO_CORS_ALLOWED_ORIGINS:定义允许访问 Screego 的源(HTTP + WebSocket)。对于大多数用例,默认值应该足够。

  • SCREEGO_USERS_FILE:定义用户文件的位置,该文件包含用户名和 bcrypt 密码哈希。

  • SCREEGO_SESSION_TIMEOUT_SECONDS:定义用户会话有效的秒数。设置为 0 意味着会话在浏览器会话结束后失效。

  • SCREEGO_CLOSE_ROOM_WHEN_OWNER_LEAVES:定义在创建房间对话框中选择“房主离开时关闭房间”复选框的默认值。

  • SCREEGO_LOG_LEVEL:定义日志级别(debug、info、warn、error 中的一个)。

  • SCREEGO_PROMETHEUS:如果设置为 true,Screego 将在 /metrics 路径上公开一个 Prometheus 端点。该端点需要用户文件中的一个用户进行基本身份验证。

当使用双协议栈设置时,请用逗号分隔IPv4和IPv6地址。
在您想要托管Screego的服务器上执行以下命令以找到您的外部IP地址。
curl 'https://api.ipify.org'
示例:
SCREEGO_EXTERNAL_IP=192.168.178.2,2a01:c22:a87c:e500:2d8:61ff:fec7:f92a
如果服务器没有静态IP,可以通过域名获取IP:
SCREEGO_EXTERNAL_IP=dns:app.screego.net
您也可以指定要使用的DNS服务器
SCREEGO_EXTERNAL_IP=dns:app.screego.net@9.9.9.9:53
SCREEGO_EXTERNAL_IP=

一个应该是唯一的密钥。用于cookie认证。
SCREEGO_SECRET=

是否应该为HTTP请求启用TLS。Screego需要TLS,
您必须启用此设置或通过反向代理提供TLS。
SCREEGO_SERVER_TLS=false

TLS证书文件(仅在启用TLS时需要)
SCREEGO_TLS_CERT_FILE=

TLS密钥文件(仅在启用TLS时需要)
SCREEGO_TLS_KEY_FILE=

HTTP服务器将侦听的地址。
格式:
- 主机:端口
示例:127.0.0.1:5050
- Unix套接字(必须以unix:为前缀)
示例:unix:/my/file/path.socket
SCREEGO_SERVER_ADDRESS=0.0.0.0:5050

TURN服务器将侦听的地址。
SCREEGO_TURN_ADDRESS=0.0.0.0:3478

限制TURN服务器用于数据中继的端口范围。
格式:最小值:最大值
示例:
50000:55000
SCREEGO_TURN_PORT_RANGE=

如果设置,Screego将不启动TURN服务器而是使用外部TURN服务器。
当使用双协议栈设置时,请用逗号分隔IPv4和IPv6地址。
在您托管TURN服务器的服务器上执行以下命令以找到您的外部IP地址。
curl 'https://api.ipify.org'
示例:
SCREEGO_TURN_EXTERNAL_IP=192.168.178.2,2a01:c22:a87c:e500:2d8:61ff:fec7:f92a
如果TURN服务器没有静态IP,可以通过域名获取IP:
SCREEGO_TURN_EXTERNAL_IP=dns:turn.screego.net
您也可以指定要使用的DNS服务器
SCREEGO_TURN_EXTERNAL_IP=dns:turn.screego.net@9.9.9.9:53
SCREEGO_TURN_EXTERNAL_IP=

外部TURN服务器侦听的端口。
SCREEGO_TURN_EXTERNAL_PORT=3478

外部TURN服务器的认证密钥。
SCREEGO_TURN_EXTERNAL_SECRET=

是否应该信任反向代理头。
Screego使用IP白名单进行TURN连接的认证。当位于代理后面时,IP始终是代理服务器的。
为了仍允许白名单,必须启用此设置,并且反向代理必须设置X-Real-Ip头。
SCREEGO_TRUST_PROXY_HEADERS=false

定义何时需要用户登录
可能的值:
all: 总是需要用户登录
turn: 对于TURN连接需要用户登录
none: 从不需要用户登录
SCREEGO_AUTH_MODE=turn

定义将被允许访问Screego的来源(HTTP + WebSocket)
默认值对大多数用例来说已经足够。
示例值:https://screego.net,https://sub.gotify.net
SCREEGO_CORS_ALLOWED_ORIGINS=

定义用户文件的位置。
文件格式:
user1:bcrypt密码哈希
user2:bcrypt密码哈希
示例:
user1:2a12$WEfYCnWGk0PDzbATLTNiTuoZ7e/43v6DM/h7arOnPU6qEtFG.kZQy
用户密码对可以通过以下方式创建
screego hash --name "user1" --pass "your password"
SCREEGO_USERS_FILE=

定义用户会话有效的秒数。
0 = 会话在浏览器会话结束后失效
SCREEGO_SESSION_TIMEOUT_SECONDS=0

定义创建房间对话框中选择房间主人离开时是否关闭房间的复选框的默认值
SCREEGO_CLOSE_ROOM_WHEN_OWNER_LEAVES=true

日志级别(debug, info, warn, error中的一个)
SCREEGO_LOG_LEVEL=info

如果Screego应该在/metrics路径上公开一个Prometheus端点。该端点需要用户文件中的用户进行基本认证。
SCREEGO_PROMETHEUS=false

这是官方文档环境变量配置中文翻译

我们主要添加以下一个即可

SCREEGO_AUTH_MODE=none #这代表用户不需要登录即可使用TURN服务器

四,配置域名解析

  • 解析域名到你的公网IP

  • 在云解析界面找到你的域名

  • 然后添加一个记录

如图所示(前面的代号可以自己写你自己喜欢的)

五,申请SSL证书

  • 在1panel面板中找到网站>证书>申请证书

参考图片上面参数填写

证书申请账户创建请参考:【1Panel功能演示视频】2. 网站管理

六,创建反向代理

  • 创建反向代理之前先在应用商店找到OpenResty并进行安装

  • 安装完成之后在面板中找到网站点击创建网站,创建反向代理

参考图片参数填写

  • 然后回到网站,点击刚刚创建的网站找到HTTPS>启用HTTPS,然后选择Acme账户和证书点击保存即可

七,使用ScreeGo

  • 打开你解析的网址,输入房间代码(代码可以随便写,朋友加进来就是需要这个代码)然后创建

  • 在下方点击”开始演示“进行屏幕共享,选择你需要共享的窗口或者整个屏幕

点击”共享“就能完成共享了,朋友打开这个房间就能看到你的屏幕共享

到此这个开源项目”ScreeGo"就部署好了!!!