Sunshine 从零上手:自托管游戏串流主机,三步串出 Moonlight 画面
2026/9/16 21:17:19 网站建设 项目流程

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,另有vaapivulkansoftware(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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询