Web 远程桌面(手机访问)

SimpleRemoter 自带一个 Web 端,让你不装客户端、用手机浏览器就能远程控制桌面。本文介绍如何配置 HTTPS,让 Web 端可以从公网访问。

这是一个非商业的个人兴趣项目,所有配置方案都基于免费工具(Let’s Encrypt、FRP、Nginx),跑通后不会产生持续费用,只需要承担域名和服务器的基础成本。


展示效果

手机浏览器访问远程桌面 平板浏览器访问远程桌面 Web 端设备列表

为什么必须配 HTTPS

Web 端用浏览器的 H.264 硬解码渲染画面,而浏览器只在 HTTPS 或 localhost 下才允许使用这个解码器。

你的访问地址能不能用
https://任意域名✅ 可以
http://localhost✅ 可以(只能本机)
http://公网IPhttp://内网IP❌ 提示 VideoDecoder not available

也就是说:想让手机访问,就必须有域名和 HTTPS 证书


整体架构

手机浏览器 ──HTTPS──> 公网服务器 (Nginx + FRP) ──隧道──> 你的电脑 (Yama)
  • Nginx:在公网服务器上做 HTTPS 终结,再把请求转发给 FRP
  • FRP:内网穿透,把你家里电脑的 Yama Web 端口”打洞”到公网
  • Yama:跑在你自己的 Windows 电脑上,负责真正的远程控制

你需要准备什么

项目说明
一台运行 Yama 的 Windows 电脑主控本体,可以是你家里的电脑
一台有公网 IP 的小服务器跑 Nginx + FRP,几块钱一个月的轻量云就够
一个域名.xyz.top 等后缀一年几块钱,免费的 DuckDNS 也行
基本的 SSH 命令行操作知道怎么用 PuTTY/Xshell/Terminal 连服务器即可

如果你完全没有这些条件,但又想体验 Web 远程,欢迎在 Telegram 上找我聊:@doge_grandfather。这是个人项目,主要是交个朋友,不是卖东西。


配置步骤

1. 把域名解析到服务器

去你买域名(或申请免费域名)的网站,在 DNS 解析里加一条 A 记录

字段填什么
类型A
主机@www(或你想用的子域名)
你服务器的公网 IP

等一两分钟,在本地 ping your.domain.com 能返回服务器 IP 就生效了。

2. 申请免费 HTTPS 证书

SSH 登录到你的公网服务器,安装 Certbot:

# Ubuntu / Debian
apt update && apt install certbot -y

用 DNS 验证方式申请证书(不需要服务器开 80 端口):

certbot certonly --manual --preferred-challenges dns -d your.domain.com

按提示在域名管理后台加一条 TXT 记录(Certbot 会告诉你内容),然后回车,就能拿到证书。证书路径通常是:

/etc/letsencrypt/live/your.domain.com/fullchain.pem
/etc/letsencrypt/live/your.domain.com/privkey.pem

Let’s Encrypt 证书 90 天到期,可以加个 cron 自动续签:

(crontab -l 2>/dev/null; echo "0 0 1 * * certbot renew --quiet && systemctl reload nginx") | crontab -

3. 配 Nginx 做 HTTPS 反代

安装 Nginx:

apt install nginx -y

新建配置文件 /etc/nginx/sites-available/yama(CentOS 放 /etc/nginx/conf.d/yama.conf):

server {
    listen 8080 ssl;
    server_name your.domain.com;

    ssl_certificate     /etc/letsencrypt/live/your.domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your.domain.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:9000;
        proxy_http_version 1.1;

        # WebSocket 支持(远程桌面靠它)
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;

        proxy_read_timeout 86400;
    }
}

把里面 4 处 your.domain.com 都替换成你的真实域名,然后启用并重启:

ln -s /etc/nginx/sites-available/yama /etc/nginx/sites-enabled/   # Ubuntu/Debian 才需要
nginx -t && systemctl restart nginx

这里用了 8080 端口,你也可以换成 4439443 等任意未占用端口。

4. 配 FRP 打通内网

服务器端 frps.toml

bindPort = 7000

本地电脑(推荐用 Yama 自带 FRP):

打开 Yama → 菜单「设置 → FRP 设置」→ 启用 → Web 端口填 9000 → 保存。

Yama 启动时会自动连接 FRP Server,不用自己折腾 frpc.toml

5. 开放防火墙和云安全组

很多人卡在这步——服务器自带防火墙 + 云控制台安全组都要放行

# Ubuntu
ufw allow 8080 && ufw allow 7000 && ufw allow 9000

如果是阿里云、腾讯云这类,还要去网页控制台的”安全组”加入站规则,开放 808070009000

6. 手机访问

启动顺序:

  1. 服务器上 FRP Server (./frps -c frps.toml)、Nginx
  2. 本地电脑上启动 Yama

手机浏览器打开:

https://your.domain.com:8080

⚠️ 必须 https://,不是 http://。看到登录页就成功了。


常见问题

Q:浏览器还是提示 VideoDecoder not available 确认地址栏是 https:// 开头,清下浏览器缓存,换 Chrome / Edge 试试。

Q:手机打不开,提示证书错误? 检查域名拼写、证书是否过期,certbot certificates 可以看证书状态。

Q:能打开登录页但连不上设备? WebSocket 没通。检查 Nginx 配置里有没有 Upgrade / Connection 那几行 header。

Q:完全连不上服务器? 按顺序排查:

curl -k https://127.0.0.1:8080   # Nginx 通不通
curl http://127.0.0.1:9000        # FRP 通不通
ping your.domain.com              # 域名解析对不对

再检查云控制台安全组有没有开放端口。

Q:证书快到期了?

certbot renew && systemctl reload nginx

总结

配完一次,以后随时随地用手机就能开远程桌面。整个流程一次跑通可能要折腾一两个小时,但搞定之后就是”忘掉它”的状态了。

遇到问题可以在 Telegram 找我,或者去 Gitea Issues 留言。