Web 远程桌面(手机访问)
SimpleRemoter 自带一个 Web 端,让你不装客户端、用手机浏览器就能远程控制桌面。本文介绍如何配置 HTTPS,让 Web 端可以从公网访问。
这是一个非商业的个人兴趣项目,所有配置方案都基于免费工具(Let’s Encrypt、FRP、Nginx),跑通后不会产生持续费用,只需要承担域名和服务器的基础成本。
展示效果
为什么必须配 HTTPS
Web 端用浏览器的 H.264 硬解码渲染画面,而浏览器只在 HTTPS 或 localhost 下才允许使用这个解码器。
| 你的访问地址 | 能不能用 |
|---|---|
https://任意域名 | ✅ 可以 |
http://localhost | ✅ 可以(只能本机) |
http://公网IP 或 http://内网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端口,你也可以换成443、9443等任意未占用端口。
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 如果是阿里云、腾讯云这类,还要去网页控制台的”安全组”加入站规则,开放 8080、7000、9000。
6. 手机访问
启动顺序:
- 服务器上 FRP Server (
./frps -c frps.toml)、Nginx - 本地电脑上启动 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 留言。