Mac搭建远程桌面
Mac 高性能外网远程桌面搭建笔记
目标
在外网环境下,高性能远程访问 Mac,获得比传统 VNC 更流畅的体验。
最终方案
- Sunshine:安装在被控 Mac 上,负责采集画面和编码推流
- Moonlight:安装在客户端设备上,负责连接和显示远程画面
- Tailscale:负责内网穿透,让外网也能安全访问 Mac
方案优点
- 延迟低
- 画质好
- 比 VNC / Chrome Remote Desktop 流畅很多
- 不需要手动做公网端口映射
- 安全性比直接暴露公网端口高
一、服务端 Mac 配置流程
1. 安装 Sunshine
在 Mac 上下载安装 Sunshine,安装完成后启动。
2. 打开 Sunshine Web 管理界面
浏览器访问:
https://localhost:47990
首次初始化时,也可以直接尝试:
https://localhost:47990/welcome
注意:
- 必须是
https- 不是
http://localhost:47990- 浏览器提示证书不安全时,继续访问即可,因为这是本地自签名证书
3. 如果 Web 页面打不开,排查方法
先确认 Sunshine 是否真的启动了:
ps aux | grep -i sunshine
lsof -iTCP:47990 -sTCP:LISTEN
再用 curl 验证 Web UI:
curl -vk https://localhost:47990/
curl -vk https://localhost:47990/welcome
正常情况:
/会跳转到/welcome/welcome应该能返回页面
如果 Web UI 异常,可以尝试:
pkill -f Sunshine
rm -rf ~/.config/sunshine
然后删除旧版 Sunshine,重新安装最新版,再重新访问:
https://localhost:47990/welcome
二、Mac 权限设置
1. 开启屏幕录制权限
进入:
系统设置 → 隐私与安全性 → 屏幕与系统音频录制
或旧版本系统中的:
系统设置 → 隐私与安全性 → 屏幕录制
把 Sunshine 打开。
如果之前没开,开完以后一定要:
- 完全退出 Sunshine
- 再重新打开 Sunshine
否则权限可能不会立即生效。
2. 避免显示器休眠
Sunshine 在 macOS 上推流时,需要有一个可用的活动显示器。
如果显示器休眠、合盖、熄屏,可能会报错:
Failed to initialize video capture/encodingUnable to find display or encoder during startupPlease check that a display is connected and powered on
所以要调整这些设置:
- 测试时不要让 Mac 自动熄屏
- 不要合盖
- 不要让外接显示器断电
- 尽量保持屏幕点亮
3. 长期远程使用建议
如果以后想让 Mac 长期远程可用,建议:
- 保持开盖
- 或接一个外接显示器
- 或使用 HDMI dummy plug(假显示器)
Sunshine 抓屏依赖可用显示输出,没有活动显示器时容易失败。
三、安装 Tailscale 做外网访问
1. 在 Mac 安装 Tailscale
在被控 Mac 上安装 Tailscale,并登录自己的账号。
2. 在客户端也安装 Tailscale
在需要远程连接的客户端设备上也安装 Tailscale,并登录同一个账号。
3. 获取 Mac 的 Tailscale IP
安装完成后,Mac 会获得一个类似下面的地址:
100.x.x.x
这个地址就是后续 Moonlight 要连接的目标。
四、客户端配置流程
1. 安装 Moonlight
在客户端安装 Moonlight。
支持平台:
- Mac
- Windows
- iPhone / iPad
- Android
2. 添加主机
在 Moonlight 中添加主机,输入 Mac 的 Tailscale IP,例如:
100.x.x.x
3. 配对
首次连接时,Moonlight 会弹出 PIN 码。
回到 Mac 上的 Sunshine 页面,输入 PIN 完成配对。
配对成功后,就可以正式连接桌面。
五、连接时遇到的典型问题与解决办法
1. Web UI 打不开
现象:
http://localhost:47990打不开- 页面空白
- 一直
not authorized
处理:
- 用
https://localhost:47990 - 试
https://localhost:47990/welcome - 检查 Sunshine 进程和 47990 端口
- 必要时删除
~/.config/sunshine后重装
2. 配对后连接提示 503
现象:
Failed to initialize video capture/encodingIs a display connected and turned on? (Error 503)
原因通常是:
- Sunshine 没有屏幕录制权限
- Mac 当前没有活动显示器
- Mac 合盖或熄屏
- 显示器进入休眠
处理:
- 开启 Sunshine 的屏幕录制权限
- 保持 Mac 屏幕亮着
- 不合盖
- 不让显示器休眠
- 重启 Sunshine 后再试
重启命令:
pkill -f Sunshine
open -a Sunshine
3. Sunshine 日志出现 Fatal 错误
例如:
Fatal: Unable to find display or encoder during startup.
Fatal: Please check that a display is connected and powered on.
这说明 Sunshine 找不到可用显示器或编码器。
处理重点:
- 检查 Mac 屏幕是不是亮着
- 检查是不是合盖
- 检查外接显示器是否通电
- 检查屏幕录制权限
- 重启 Sunshine
六、连接成功后的体验
这个方案连接成功后,整体体验很好:
- 画面流畅
- 延迟低
- 远程操作接近本地
- 适合日常办公、开发,甚至更高性能场景
相比 VNC 方案,提升非常明显。
七、如何断开连接
客户端是 Mac 且全屏时
Moonlight 全屏时顶部工具栏可能隐藏,可以这样退出:
方法 1:退出全屏
Control + Command + F
方法 2:切出应用
Command + Tab
或者:
Control + ↑
打开 Mission Control。
方法 3:直接退出 Moonlight
Command + Q
方法 4:强制退出
Option + Command + Esc
然后强制退出 Moonlight。
八、推荐的最终使用方式
推荐组合
- 服务端:Mac + Sunshine
- 网络:Tailscale
- 客户端:Moonlight
推荐使用习惯
- Sunshine 保持开启
- Tailscale 开机自启
- Mac 不要随意合盖
- 避免显示器休眠
- 远程时优先保持一个活动显示器
九、精简版结论
最终结论
Mac 高性能外网远程桌面的最佳实践:
Sunshine + Moonlight + Tailscale
关键注意事项
- Sunshine Web UI 一定要用
https://localhost:47990 - 必须给 Sunshine 开启屏幕录制权限
- Mac 必须有活动显示器,不能合盖熄屏
- 外网访问通过 Tailscale,不需要端口映射
- 客户端使用 Moonlight,流畅度明显优于 VNC
十、我的实际踩坑记录
1. Sunshine Web UI 打不开
一开始访问的是:
http://localhost:47990
这是错的,正确的是:
https://localhost:47990
后面用 curl 验证发现:
/会 307 跳转到/welcome- Sunshine 进程和端口其实都正常
2. Moonlight 已配对但无法连接
配对成功后,客户端报错大意是:
Failed to initialize video capture/encoding
Is a display connected and turned on? (Error 503)
同时 Sunshine 日志里出现:
Fatal: Unable to find display or encoder during startup.
Fatal: Please check that a display is connected and powered on.
根因是:
- Sunshine 没拿到可用显示器
- 或者 Mac 当时处于熄屏 / 合盖 / 无活动显示输出状态
- 以及屏幕录制权限可能未生效
3. 最后解决的关键点
- 给 Sunshine 开启 屏幕录制权限
- 保持 Mac 屏幕点亮
- 不合盖
- 避免显示器休眠
- 必要时重启 Sunshine
十一、可选优化项
1. 让远程更稳定
- Sunshine 开机启动
- Tailscale 开机启动
- Mac 接电源使用
- 关闭自动睡眠
2. 让无头远程更稳定
如果以后需要合盖或不接显示器远程:
- 接一个 HDMI dummy plug
- 或长期连接外接显示器
3. 画质建议
Moonlight 里可以按网络情况调:
- 1080p / 60fps:最稳
- 1440p / 60fps:兼顾画质与带宽
- 更高分辨率:需要更高上传带宽和更稳定网络
标签
#mac #remote-desktop #sunshine #moonlight #tailscale #远程桌面 #效率工具