Sunshine 自托管游戏串流服务器:免费把 PC 变成 Moonlight 串流主机的完整指南
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
客厅电视能连游戏主机,却玩不了你 PC 上的游戏?人不在电脑前,想远程开一把游戏却够不着键鼠?Sunshine 就是来解决这个问题的:它是一个自托管的游戏串流服务器,跑在你的游戏 PC 上,把画面硬件编码后推给 Moonlight 客户端——Moonlight 装在你想看的设备上,负责显示画面和回传键鼠、手柄输入。Sunshine 开源免费,无订阅费,配置全靠浏览器里的 Web UI。
| 关键信息 | 说明 |
|---|---|
| 主机平台 | Windows、Linux、macOS(实验性)、FreeBSD |
| 硬件编码 | NVIDIA(NVENC)、AMD(AMF/VAAPI)、Intel(QuickSync/VAAPI)、Apple(VideoToolbox),另有 CPU 软编兜底 |
| 管理方式 | 浏览器 Web UI,默认https://localhost:47990 |
| 客户端 | 任意设备上的 Moonlight 客户端 |
| 授权 | 开源免费(见 LICENSE) |
三种系统各自的安装命令,以及首次启动后必做的两件事
# Windows:官方安装包 winget install LizardByte.Sunshine # Linux:Flatpak flatpak install --system flathub dev.lizardbyte.app.Sunshine # macOS brew install sunshine各发行版的 .deb / .rpm / AppImage 等完整安装包列表见 docs/getting_started.md。
装完先确认服务活着,再打开 Web UI:
# Linux 用户服务方式 systemctl --user --now enable app-dev.lizardbyte.app.Sunshine浏览器访问https://localhost:47990,提示"不安全"是正常的——自签名证书而已。首次设置会要求你创建用户名和密码,当场记下来;忘了就只能靠命令行重置,见下文。
最后是配对:Moonlight 客户端里添加这台主机,客户端会显示一个 PIN,在 Sunshine Web UI 的 PIN 页面输入它并给设备起个名字,配对完成。
编码器按显卡选,应用列表给每个游戏一个入口
Sunshine 按显卡自动选用硬件编码器,Web UI 的 AudioVideo 页签可切换。每个配置项都能通过顶部搜索框直接搜,不用一页页翻。
| 编码 API | 适用显卡 | 平台 |
|---|---|---|
| NVENC | NVIDIA | Linux / Windows |
| QuickSync | Intel | Windows |
| AMF | AMD | Windows |
| VAAPI | AMD / Intel / NVIDIA | Linux |
| VideoToolbox | Apple | macOS |
| 软编 | 任意 | 全平台 |
编码器核心实现分散在 src/nvenc/(NVENC)和 src/platform/(各平台捕获与编码)。没有独显就选软编,但 1080p 下 CPU 占用会明显上升,能硬编就别硬扛。
应用管理在 Web UI 的 Applications 页签,点 "Add New" 添加:填名称、可执行文件路径、工作目录,还能加prep-cmd(启动前执行的命令)。默认应用列表(桌面、Steam 大屏模式)来自 src_assets/linux/assets/apps.json。三条行为规则要记住:
- 启动新应用,会先终止正在串流的应用;
prep-cmd失败则放弃启动;- 应用退出,串流随之结束。
⚠️ 五个高频问题的速查,和无头主机、HDR 的正确打开方式
| 现象 | 原因 | 解法 |
|---|---|---|
| 忘了 Web UI 账号密码 | 凭据只存本地 | 停掉 Sunshine,跑sunshine --creds 新用户名 新密码重置 |
| 浏览器访问 47990 打不开 | 防火墙挡了端口,或进程没起 | systemctl --user status app-dev.lizardbyte.app.Sunshine确认服务,再放行 47990 |
| Linux 上键鼠/手柄无反应 | 运行用户没有 uinput 权限 | 把用户加进input组,重新登录 |
| 画面卡顿、丢包 | 串流路径上某一段网络比主机慢 | 用 iPerf3 测出瓶颈,必要时把主机网卡从 2.5G 降到 1G |
| 开了 HDR 却发白过曝 | 客户端侧没开 HDR | Moonlight 设置里启用 HDR,主机端确认 HDR 已激活 |
忘了密码时,停掉 Sunshine 后运行(各平台二进制名略有差异):
sunshine --creds 新用户名 新密码Linux 主机不接显示器也能串流,无头场景的正确打开方式:
ssh user@主机IP 'export DISPLAY=:0; sunshine'NVIDIA 显卡在 X11 下走 NVFBC 捕获,必要时加个 HDMI 欺骗器让显卡保持输出状态。
边界也说清楚:
- macOS 不支持虚拟手柄——客户端插着 DualSense,主机上不会虚拟出对应设备;Windows 和 Linux 支持最全。
- HDR 串流:Windows 正式支持,Linux 要求 KMS 捕获后端 + Intel/AMD 显卡 + VAAPI 的 HEVC/AV1 10-bit,NvFBC/X11 捕获不支持。
- 串流时常用快捷键:
Ctrl+Alt+Shift+N隐藏光标,Ctrl+Alt+Shift+F1/F12切换显示器。
延伸入口
- docs/getting_started.md:各平台安装、首次设置、快捷键
- docs/configuration.md:全部配置项逐项说明
- docs/troubleshooting.md:凭据重置、网络测试、丢包处理
- docs/performance_tuning.md:码率与分辨率调优
- src/platform/:各平台屏幕捕获与编码实现,想了解内部行为从这里入手
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考