ScreeGo 安装

本文重在 ScreeGo 的部署流程,更多远程桌面共享方案可查看:4 种最佳的远程桌面 – 技焉洲

指标 描述
适用系统 Debian 系发行版,包括 Ubuntu, Armbian,其他发行版稍改命令一般也可
走通流程时间 15 分钟

I might have made some mistakes, please let me know if I’ve gotten anything wrong!

下面是在电脑共享,在手机浏览器查看的效果:

screego_phone.png


ScreeGo 提供了一种简单快捷的屏幕共享方式,使用现代浏览器,如 Chrome、Edge 就能将本地电脑的画面分享出去,其他人使用浏览器就能看到桌面,无须安装额外软件,并且利用 WebRTC 技术,端到端直连确保低延迟和高清画质。

很适合给朋友演示一些软件的安装、配置等流程,发给他一个网址就能看见你的操作。

GitHub: screego/server: screen sharing for developers https://screego.net/


通观全局

screego 是一个 Go 编写的单文件程序,screego.config 保存配置文件。仅此 2 个文件,一目了然:

/usr/local/bin/screego
/usr/local/bin/screego.config

必须使用 TLS,因此需要域名和申请证书,本文提供了相应的教程。

另外,WebRTC 的通信方式造成了当多个人观看你的桌面时,你本机的 CPU 占用率会很高。原因为:当双方进行 WebRTC 握手时,他们会选择各自支持的编解码器。这意味着如果视频流式传输到支持不同编解码器的多个对等点,则浏览器必须使用不同的编解码器对其进行多次编码。

下载与安装

官方文档: https://screego.net/#/install

由于是 Go 开发,就单个二进制文件,没必要用 Docker 容器安装运行


复制全部内容,粘贴到终端执行

github_project="screego/server"
stable_release_or_pre='releases/latest'

arch=$(uname -m)
if [[ $arch == "aarch64" ]]; then ARCH="arm64"
elif [[ $arch == "x86_64" ]]; then ARCH="amd64"
else echo "Unknown architecture: $arch"; exit 1
fi

tag=$(curl -m 10 -sL "https://api.github.com/repos/${github_project}/${stable_release_or_pre}" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g')
echo "going to download version ${tag}"

# 下载与解压
curl -L -O https://github.com/${github_project}/releases/download/${tag}/screego_${tag#v}_linux_${ARCH}.tar.gz
mkdir -p temp_screego && tar -zxvf screego_${tag#v}_linux_${ARCH}.tar.gz -C temp_screego/
mv temp_screego/screego ./
rm -r temp_screego && rm -f ./screego_${tag#v}_linux_${ARCH}.tar.gz

移动到执行文件惯例目录下

sudo mv ./screego /usr/local/bin/

填写配置文件

配置说明: https://screego.net/#/config

  1. 需要机器的 IP ,可以用 curl 'https://api.ipify.org' 查看,动态 IP 则使用域名
  2. 需要域名
sudo vim /usr/local/bin/screego.config

按含义自行修改

# 公网地址
SCREEGO_EXTERNAL_IP=23.165.248.239,2602:fce1:45a:132::a
SCREEGO_CORS_ALLOWED_ORIGINS=https://screego.cufah.cloud
# 密钥,用于 cookie 验证
SCREEGO_SECRET=6jznQgDzpFNQ4EZuq
# 本文选择自身不开启 TLS,而是借助 Nginx
SCREEGO_SERVER_TLS=false
# 网页的监听地址,这里要使用 Nginx 反代,因此用 127.0.0.1
SCREEGO_SERVER_ADDRESS=127.0.0.1:5050
# TURN 功能监听的地址
SCREEGO_TURN_ADDRESS=0.0.0.0:3478
# Nginx 反代时必须填 true,并且 Nginx 要使用 X-Real-Ip
SCREEGO_TRUST_PROXY_HEADERS=true

# 验证方式:
#   all: User login is always required
#   turn: User login is required for TURN connections
#   none: User login is never required
SCREEGO_AUTH_MODE=none
# 上面验证方式为 none,因此用户文件路径空着即可(the location of the users file)
# File Format:
#   user1:bcrypt_password_hash
#   user2:bcrypt_password_hash
# Example:
#   user1:$2a$12$WEfYCnWGk0PDzbATLTNiTuoZ7e/43v6DM/h7arOnPU6qEtFG.kZQy
#
# The user password pair can be created via
#   screego hash --name "user1" --pass "your password"
SCREEGO_USERS_FILE=

Nginx 反代

将域名解析指向机器 IP,通过 acme.sh 申请证书,若不了解先看此文: [[02acme.sh]] 使用 acme.sh 申请和自动更新证书的完整指南 – 技焉洲

sudo -i

以下的域名记得修改

acme.sh --issue -d screego.cufah.cloud --webroot /var/www/html
acme.sh --install-cert -d screego.cufah.cloud \
--key-file       /etc/ssl/private/screego.cufah.cloud.key \
--fullchain-file /etc/ssl/certs/screego.cufah.cloud.cer \
--reloadcmd "systemctl reload nginx"

sudo vim /etc/nginx/sites-available/screego
upstream screego {
  server 127.0.0.1:5050;
}

server {
    listen 80;
    server_name screego.cufah.cloud;

    location /.well-known/acme-challenge/ {
        root /var/www/html;
    }

    location / {
        return 301 https://screego.cufah.cloud$request_uri;
    }
}

server {
    listen 443 ssl;
    server_name screego.cufah.cloud;

    ssl_certificate /etc/ssl/certs/screego.cufah.cloud.cer;
    ssl_certificate_key /etc/ssl/private/screego.cufah.cloud.key;

    location /.well-known/acme-challenge/ {
        root /var/www/html;
    }

    location / {
        proxy_pass http://screego;
        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 REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-Proto  $scheme;   

        # WebSocket-specific headers
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
sudo ln -s /etc/nginx/sites-available/screego /etc/nginx/sites-enabled/screego

检查配置

sudo nginx -t

重启生效

sudo systemctl reload nginx

查看效果

screego serve

在浏览器访问网址

screen_headpage.png

Systemd 守护进程

创建服务文件

sudo vim /etc/systemd/system/screego.service

下面假设用户是 vfly2。记得修改 User、Group:

[Unit]
Description=screego service
Wants=network-online.target
After=network-online.target nss-lookup.target

[Service]
Type=simple
User=vfly2
Group=vfly2
ExecStart=/usr/local/bin/screego serve
Restart=on-failure
SyslogIdentifier=screego

[Install]
WantedBy=multi-user.target

重新加载

sudo systemctl daemon-reload

运行开机自启,并立即运行

sudo systemctl enable --now screego.service

查看状态

sudo systemctl status screego.service
sudo systemctl start screego.service
sudo systemctl stop screego.service

原文链接: https://yanh.tech/2024/11/screego-installation/

版权声明:本博客所有文章除特別声明外,均为 AhFei 原创,采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 技焉洲 (yanh.tech)

保持更新 ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ 清晰恒益的实用技能,欢迎使用 RSS 订阅,如果能留言互动就更好了。

可在 Telegram 群组 https://t.me/vfly2 交流依文章步骤遇到的问题。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇