Sunshine 自托管游戏串流服务器教程:把 PC 游戏串到任何设备
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
Sunshine 是一款免费开源的自托管游戏串流服务器,装在你的游戏 PC 上后,它会通过 Moonlight 客户端把本地画面和音频编码成低延迟视频流,推送到手机、平板、电视或另一台电脑上。与云游戏平台不同,数据始终留在你自己的网络里,硬件编码由你自己的显卡完成,不用按月付费。本文覆盖从硬件确认、多平台安装、Web UI 配置、客户端配对,到画质延迟调优和故障排查的完整流程。
自托管串流和云游戏的区别
先理解 Sunshine 的工作方式,后面所有操作都会顺理成章:
- 服务器端:Sunshine 运行在你的游戏 PC 上,负责抓取屏幕、采集音频、用显卡硬件编码,并接收客户端发来的键鼠手柄输入。
- 客户端:Moonlight 是接收端,运行在你要看串流的设备上,负责解码播放并把操作回传给服务器。
- 配置端:Sunshine 自带一个浏览器管理界面(Web UI),加游戏、改参数、配对设备都在这里完成。
相比云游戏,自托管方案的优势是延迟取决于你自己的局域网(通常只有个位数到几十毫秒)、游戏库完全归你、没有订阅费用;代价是服务器必须保持开机,且搭建需要你做一次性的配置。
安装前先确认硬件与系统要求
Sunshine 的门槛不高,但有两点值得提前核对:显卡是否支持硬件编码,网络是否够快。
| 项目 | 最低要求 | 4K 串流建议 |
|---|---|---|
| GPU | AMD VCE 1.0+ / Intel 支持 VAAPI 的核显 / NVIDIA 支持 NVENC 的显卡 | RTX 2000 系以上、Radeon VCE 3.1+、Intel HD 510+ |
| CPU | Intel Core i3 / AMD Ryzen 3 | Core i5 / Ryzen 5 |
| 内存 | 4GB | 8GB 以上 |
| 网络 | 主机与客户端均建议 5GHz 802.11ac | 双端 CAT5e 以上有线 |
| 系统 | Windows 11+ / Ubuntu 22.04+、Debian 13+、Fedora 43+ / macOS 14.2+ / FreeBSD 15.1+ | 同左 |
注意官方提醒:以上表格仍在完善中,仅供参考,不要仅凭它做购机决定。实际体验里,网络往往是最大变量——主机和客户端都走有线时,延迟和卡顿问题会减少一大半。
如何在 Windows、Linux、macOS 上安装 Sunshine
各平台都有现成的安装方式,下面只列最常用的。完整的官方安装说明见 docs/getting_started.md。
Windows
用 winget 可以直接安装并自动处理依赖:
winget install LizardByte.Sunshine安装后 Sunshine 默认以 Windows 服务形式常驻后台。另外建议在 Windows 上安装配套的 Virtual HID 驱动,以获得完整的手柄与 Raw Input 键鼠支持(安装器和状态提示会在 Web UI 中给出)。
Linux
如果发行版仓库里有 sunshine 包,优先用包管理器安装;也可以用 AppImage 免安装体验:
chmod +x Sunshine_{version}_{arch}.AppImage ./Sunshine_{version}_{arch}.AppImage包管理方式安装的服务名是app-dev.lizardbyte.app.Sunshine,可以用systemctl --user enable --now让它开机自启。AppImage 不支持 KMS 捕获,长期使用建议装发行版专属包。
macOS
通过 Homebrew 安装(macOS 版目前仍标记为实验性,暂不支持手柄):
brew tap LizardByte/homebrew brew install sunshine首次启动时系统会要求授予屏幕录制和麦克风权限,按提示允许即可。
Docker
官方提供了 Docker 镜像,适合想在容器里跑的用户,但官方文档明确提示它不适合大多数场景(音频、输入、权限都要额外打通),新手不建议从这里入手:
docker run -d --name=sunshine --network=host -v /path/to/config:/config lizardbyte/sunshine:latest首次启动:打开 Web UI 并添加第一个串流应用
Sunshine 启动后,在浏览器访问https://localhost:47990(浏览器会提示证书不受信任,这是自签名证书的正常现象,可继续访问)。首次进入时需要设置登录用户名和密码,请务必记好,之后每次打开 Web UI 都要用。
接着做两件事:
- 添加串流目标。应用列表页可以添加 Desktop(直接串整个桌面)、Steam(串 Steam 库中的游戏,支持大图标模式),也可以手动填路径添加任意 exe 或命令。
- 调整参数。所有配置项都支持搜索,找不到某项时直接在搜索框输入关键词即可。
外观主题可以按喜好切换,不影响功能:
Moonlight 客户端配对流程
串流之前,需要先让 Moonlight 客户端和 Sunshine 服务器"认得"彼此:
- 在 Moonlight 里找到你的主机(同一局域网一般会自动发现;找不到可手动输入 IP 添加)。
- 客户端发起配对请求后,会提示输入 PIN。
- 打开 Sunshine 的 Web UI,进入导航栏的 PIN 页面,填入请求显示的 PIN,并给这台设备起个名字,配对即完成。
- 回到 Moonlight,选择要串流的应用,开始连接。
Web UI 的 Featured Apps 页面汇总了各平台 Moonlight 客户端的官方获取入口,包括 Windows、macOS、Linux、Android、iOS、Apple TV 和树莓派等,可以直接在配对时打开对照:
画质与延迟:编码器选择与关键参数
按显卡选编码器
Sunshine 的编码能力取决于平台和显卡,Web UI 会只显示当前机器实际可用的编码器:
| 编码器 | 适用平台 | 说明 |
|---|---|---|
| NVENC | Windows / Linux(NVIDIA 显卡) | 最成熟的硬件编码路径,4K 120fps 串流的主力 |
| AMD AMF / Vulkan Video | Windows / Linux(AMD 显卡) | Windows 走 AMF,Linux 可走 VAAPI 或 Vulkan Video |
| Intel QuickSync | Windows / macOS(Intel 核显) | 核显串流的主力,功耗低 |
| VAAPI | Linux(AMD / Intel / NVIDIA 核显) | Linux 下最通用的硬件编码接口 |
| VideoToolbox | macOS | 系统自带编码,Apple Silicon 效率不错 |
| Software | 全平台 | 纯 CPU 软编,画质尚可但吃 CPU,仅作兜底 |
一般规则:有硬编就用硬编,编码器跟随你的显卡走。如果画面出现撕裂、绿块或掉帧,第一个怀疑对象通常是网络,第二个才是编码器设置。
关键参数的正确理解
新手常犯的一个错误是以为分辨率、帧率写在 Sunshine 的配置里。实际上分辨率和帧率由 Moonlight 客户端在连接时指定,Sunshine 侧主要控制的是上限和设备:
# sunshine.conf 中值得了解的几项 adapter_name = Radeon RX 580 Series # 多显卡时指定用哪块卡编码 output_name = HDMI-0 # 多显示器时指定串哪一路输出 max_bitrate = 5000 # 限制最高码率(Kbps),0 表示跟随客户端请求口语化地说:adapter_name决定"谁来编码",output_name决定"播哪块屏幕",max_bitrate决定"最多用多少带宽"。局域网带宽充足时保持默认(0)即可;带宽紧张或想在公网串流时,把码率降到 10000~15000 Kbps 以内会明显更稳。
网络层面的调优建议(有线优先、双端 5GHz、避开 2.4GHz 拥塞信道等)可以参考官方调优文档 docs/performance_tuning.md。
连不上或画面异常时的排查路径
出问题时不要盲目重装,先看日志再动手。Web UI 的 Troubleshooting 页汇总了运行中的警告和错误,并给出每条的修复线索:
几个高频问题的快速对照:
| 现象 | 大概率原因 | 处理方向 |
|---|---|---|
| Moonlight 里发现不了主机 | 防火墙拦截 / 两端不同网段 | 检查 Sunshine 所在端口的防火墙规则,确认同网段 |
| 能连上但黑屏 | 输出选错或采集方式不可用 | 核对output_name,确认该显示器有信号输入 |
| 有画面但无声音 | 音频采集设备未选 | 在 Web UI 的 audio_sink 中选择正确的输出设备 |
| 手柄无响应 | 虚拟输入权限不足 | Linux 下把运行 sunshine 的用户加入input组;Windows 下确认虚拟 HID 驱动已装 |
| 卡顿、掉帧严重 | 带宽不足或编码压力大 | 降分辨率/帧率/码率,改走有线 |
| 编码器报错 | 显卡驱动过旧 | 更新显卡驱动后重启服务 |
Linux 用户的完整配置项含义可以在 docs/configuration.md 中逐项查。
日常维护:安全与更新
串流服务器长期开机,安全习惯比云游戏时代更重要:
- 强密码:Web UI 密码是唯一的身份验证,设置长密码并妥善保管,它同时用于客户端连接认证。
- 端口最小化:局域网使用不需要开放任何入站端口;若确实需要跨网段访问,再考虑配置 UPnP 或手动端口转发,平时保持关闭。
- 保持更新:定期更新 Sunshine 本体和显卡驱动,两者是串流不稳定最常见的共同源头。
- 备份配置:配置文件(sunshine.conf、apps.json 等)都在用户配置目录下,迁移系统前复制一份即可,路径见 docs/configuration.md 的 Config Files 一节。
进阶玩法
基础串流跑通后,按需解锁:
- 多显示器切换:
Ctrl+Alt+Shift+F1到F12可以在串流中切换输出显示器,不用回到主机操作。 - HDR 串流:Windows 主机已正式支持,Linux 为实验性(需要 KMS 捕获 + 支持 HDR 的桌面合成器)。前提是主机系统本身开启 HDR,且 Moonlight 客户端也打开 HDR 选项,两端都要配好,画面才不会发白。
- 公网访问:配置
upnp = enabled后,Sunshine 会自动在路由器上打洞,方便从外面连接;不常用就不开。 - 应用启动细节:apps.json 支持环境变量、前置命令(prep-commands)等写法,适合给模拟器、启动器做复杂封装,参考 docs/app_examples.md。
延伸阅读
- 完整配置项字典:docs/configuration.md
- 安装与平台说明:docs/getting_started.md
- 性能调优:docs/performance_tuning.md
- 排错指引:docs/troubleshooting.md
- 核心源码(编码器、RTSP 服务、Web UI 处理逻辑都在这里):src/
想深入看实现时,可以克隆源码仓库阅读:
git clone https://gitcode.com/GitHub_Trending/su/Sunshine配置好第一台主机后,下一步自然是实测:先串 Desktop 验证延迟,再挑一个在线游戏或本地大作逐步提高分辨率和帧率,把带宽、编码器、码率三个旋钮调到你网络的极限为止。
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考