Sunshine 从零上手:自托管游戏串流主机,三步串出 Moonlight 画面
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
Sunshine 是一个自托管的游戏串流主机程序:它把你自己电脑的屏幕采集下来,用显卡硬件编码,再通过局域网送到任何装有 Moonlight 客户端的设备上。画面走网络,主机留在原地,开源免费,装一次长期可用。
Sunshine 解决什么问题
- 主机在书房,想在沙发和卧室玩
- 显示器接口占满,再加一块屏很麻烦
- 不想买订阅制串流服务,想要低延迟游戏画面
Sunshine 的思路是把"显示"这件事从主机侧挪到网络另一头:主机只负责跑游戏和编码,解码交给手机、平板、电视或盒子。省下的不是硬件钱,而是布线和搬机器的动作。
最小可跑通路径:安装、服务、建号、配对
第 1 步:装主机端
每个平台只走一条推荐路线:
- Windows:从 Release 页下载
Sunshine-Windows-AMD64-installer.msi,双击安装。安装器会写入防火墙规则并注册开机自启的服务,选项勾选时留意一下。 - Linux:Debian/Ubuntu 配好官方源后
sudo apt install sunshine,Arch 用pacman -S sunshine。Flatpak 装完后必须补跑flatpak run --command=additional-install.sh dev.lizardbyte.app.Sunshine,否则输入设备依赖缺失。 - macOS:把 DMG 里的
Sunshine.app拖进 Applications。macOS 目前是实验性支持,手柄模拟还不工作,先有心理准备。
验证点:安装走完无报错。
第 2 步:把服务拉起来
Windows 装完即服务化,自动运行。Linux 执行:
systemctl --user start app-dev.lizardbyte.app.Sunshine验证点:Linux 下systemctl --user status app-dev.lizardbyte.app.Sunshine显示 running;Windows 可在任务管理器看到 sunshine 进程。
第 3 步:进 Web UI 建账号
浏览器访问https://localhost:47990。页面提示"不安全"是自签名证书所致,忽略即可。首次进入要求设置管理员用户名和密码,配对全靠这套凭据,记下来。
验证点:能看到欢迎页。
第 4 步:Moonlight 配对
在局域网内的另一台设备装 Moonlight,它会自动发现主机。首次连接时 Moonlight 弹出 4 位 PIN,回 Web UI 顶部导航的 PIN 页输入并给设备命名。
验证点:Moonlight 里能列出这台主机,应用列表里有一个自带的 "Desktop"。
第一次真正用起来:加一个应用,串一次
动线:加应用 → 调一个参数 → 启动 → 看画面。
加应用。进 Applications 页。Desktop 已存在,串整屏桌面、不启动任何程序。要串游戏就新建一条:填程序路径、工作目录、启动参数,支持$(HOME)这类环境变量写法。
- 像
steam这种拉起后立刻返回的进程,启动方式要选detached,否则父进程一退出流就断。 - Flatpak 应用命令加
flatpak-spawn --host前缀,否则沙箱里找不到宿主程序。 - 启动新串流会结束上一个应用,同一时间只有一条流。
三个最常问的参数。配置页顶部有搜索框,几百个设置项按关键词直达。
encoder:默认是自动选第一个可用编码器,NVIDIA 对应 NVENC、Intel 对应 QuickSync、AMD 对应amdvce,另有vaapi、vulkan、software(CPU 软编码)兜底。想锁定某条通路才手动填,排障时用,拿不准就留空。max_bitrate(Kbps):默认0,意思是码率完全听 Moonlight 客户端请求的;想给主机端带宽封顶时才改成比如5000。nvenc_preset:仅在 NVENC 下生效,1延迟最低、7压缩最好,默认1。网络或解码端顶不住时再往上调,多数情况提高码率更划算。
声音侧:audio_sink默认用系统默认音频设备;多设备时填具体设备名,Linux 上可用pactl info | grep Sink查。想让主机扬声器在串流时静音,别动audio_sink,改用virtual_sink指定一张虚拟声卡。
串一次。在 Moonlight 选刚加的应用开始。首次启动时,Linux Wayland 的 Portal 采集或 macOS 会弹权限确认,允许即可。
验证点:客户端看到主机画面,键鼠和手柄有响应,游戏声音从客户端出声。
真实使用场景
如果你是瘦终端用户。笔记本只装 Moonlight,串书房那台主机跑 3A,笔记本只做解码显示,功耗和发热都省了。前提是两台设备同局域网且网络稳定,客户端分辨率按自身屏幕设。
如果你是电视或平板用户。直接串 Desktop,把主机当媒体机和浏览器用。静态内容带宽占用很小,max_bitrate保持默认即可。
如果你是多人多设备家庭。每个成员在自己的 Moonlight 设备上独立配对,Web UI 里各记各的设备名。要跨网络串流,把配置里的upnp设为enabled(默认disabled),让 47990 等端口自动转发。
常见坑自查
https://localhost:47990打不开→ 最可能是防火墙拦了端口。Windows 先确认安装器写入了防火墙规则,仍不通就临时关防火墙验证一次,通了再回头放行 47990。- 客户端发现不了主机→ 两台设备不同网段,或服务没在跑。Linux 上跑
systemctl --user status app-dev.lizardbyte.app.Sunshine看状态,确认在跑、同网段后重启服务和路由器。 - 串流卡顿、掉帧→ 先怀疑网络而不是 Sunshine。主机端
iperf3 -s,客户端iperf3 -c {主机IP} -t 60 -u -R -b 50M,看客户端丢包与抖动,理想值低于 5% 和 1ms。若带宽够却大量丢包,常见原因是主机网卡远快于客户端(2.5G 有线对 Wi-Fi),把网卡降一档速率或主机改有线。 - 忘了 Web UI 密码→ 不用重装,
sunshine --creds {新用户名} {新密码}直接重置。 - 以上都没命中→ 翻日志。Web UI 的 Troubleshooting 页内置日志与告警;日志文件在 Windows 的
%ProgramFiles%\Sunshine\config\sunshine.log,Linux / macOS 在~/.config/sunshine/sunshine.log。
下一步
拿第二台设备完成一次 Moonlight 配对,给应用列表加一条真实游戏,完整走一遍"配对 → 启动 → 串流 → 退出",再回头调max_bitrate和分辨率。
延伸阅读:
- 完整参数表:docs/configuration.md
- 疑难杂症索引:docs/troubleshooting.md
- 采集与编码实现:src/platform/
- 入门文档:docs/getting_started.md
【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考