Skip to content
⚡ Tenvo AI · 实时 · v0.16.26 · TLS · 每设备证书 · AGPL-3.0 · 免费方案 · 30 台设备 · 可自托管基础设施 · 自带 API 密钥 · MCP,适用于 CLAUDE & CURSOR
返回博客教程

Sunshine 与 Moonlight 设置:自托管与维护

Tenvo Editorial Team7 分钟阅读
Sunshine 与 Moonlight 设置:自托管与维护

如果你想从自己的电脑进行低延迟远程访问或游戏串流,Sunshine + Moonlight 很有吸引力:跨平台原生客户端、优秀的延迟表现、且不强制使用云账号。

如果你想从自己的电脑进行低延迟远程访问或游戏串流,Sunshine + Moonlight 很有吸引力:跨平台原生客户端、优秀的延迟表现、且不强制使用云账号。问题在于运维——把这套堆栈跑起来并不难;让它长期可靠、安全并且可达且不出现意外,则是本篇 walkthrough 要明确的、持续性的工作。

Sunshine 与 Moonlight 的实际功能

Sunshine 是你在要串流的机器上运行的主机/服务器组件。它负责捕获显示/音频、编码帧,并对外暴露一个服务,供 Moonlight(客户端)连接。Moonlight 是客户端:Windows、macOS、Linux、iOS、Android 以及部分智能电视有移植或构建。两者合起来用现代编码器以低延迟重现 GameStream 风格的串流。

选择你的连接模型 — 中继、直连,或 Tenvo 托管

让 Sunshine 可从互联网访问有四种可行方式。我按你应预期的运维负担逐一列出。

  • Tenvo 托管中继(推荐,除非规则禁止使用第三方基础设施)。你会得到多区域中继,由 Tenvo 维护;对大多数客户端而言无需证书、NAT 或路由器配置。Tenvo 定价:Free $0 / Lite $2.99/mo / Pro $7.99/mo —— 将其计入呼叫响应与运维节省成本时考虑。
  • 自己运行的公共中继(自托管)。在书面合规需求、隔离 VPC、数据驻留要求等情形下适用。自托管意味着证书、可用性、扩容以及密钥保管责任由你的团队承担。
  • 直连(端口转发或 NAT 穿透,如 UPnP、hole punching)。基础设施成本最低但脆弱:家用路由器、动态 IP、ISP 的 CGNAT 以及公司防火墙常常会导致连接中断。
  • 私有网络或 VPN(WireGuard、企业 VPN)。非常可靠,但需要 VPN 基础设施与用户入门。适合你能同时控制两端的小团队或实验环境。

前置条件 — 在点击安装前你必须准备的事项

  • 主机系统:近期的 Linux 发行版(常见选择为 Ubuntu 22.04 / Debian 12);Windows 和部分 macOS 构建受支持,但对于无头主机 Linux 更常见。
  • GPU/驱动:若要使用硬件编码,通常需要受支持的 GPU(NVIDIA、AMD)以及能暴露编码器的驱动。在 Linux 上这意味着使用厂商提供的软件包——GPU 驱动的更新策略很重要(它们常常需要与内核或 X/Wayland 兼容性校验)。
  • 网络:如果计划使用中继,确保允许出站 TLS(443/HTTPS)。对于直连,你需要稳定的公网 IP 或动态 DNS+端口转发与路由器访问权限。
  • 证书:若要在互联网暴露 IP/域名,使用自动化 TLS 方案(Caddy、certbot、acme.sh)。若你自托管中继,则需要自行处理证书签发与续期。
  • 客户端设备:在用户将使用的平台上安装 Moonlight。先在局域网内测试配对,确认基本功能后再开放到互联网。

分步:在 Linux 上安装并配置 Sunshine(示例流程)

下面给出一个针对 Linux 主机的务实示例(若你偏好原生安装程序,请替换为 Windows/macOS 的步骤)。我刻意不写具体的 Sunshine 发布版本号,因为分发方式会变——请从项目的 GitHub 或包仓库获取最近的稳定构建。

1) Prepare the OS
# Keep packages up to date
sudo apt update && sudo apt upgrade -y

2) Install GPU drivers (example: NVIDIA)
# On Ubuntu 22.04
sudo apt install -y nvidia-driver-535 # pick the vendor driver your GPU needs

3) Create a dedicated user for Sunshine
sudo useradd -r -m -d /var/lib/sunshine -s /usr/sbin/nologin sunshine

4) Download Sunshine & place binaries
# Download the official release tarball or package and extract to /usr/local/bin
sudo mkdir -p /etc/sunshine /var/lib/sunshine
sudo install -m 0755 /path/to/sunshine /usr/local/bin/sunshine

5) Example systemd unit (/etc/systemd/system/sunshine.service)
[Unit]
Description=Sunshine game streaming host
After=network.target

[Service]
User=sunshine
Group=sunshine
ExecStart=/usr/local/bin/sunshine --config /etc/sunshine/config.toml
Restart=on-failure

[Install]
WantedBy=multi-user.target

sudo systemctl daemon-reload
sudo systemctl enable --now sunshine

6) Firewall: only open what you intend to use
# If using only a managed relay, you need outbound TLS only. For direct connect, open the ports Sunshine advertises and your chosen TCP/UDP ports.
# Example (ufw):
sudo ufw allow from 192.168.0.0/16 to any port 47999 proto tcp # adjust to your config

7) TLS / certificates
# For internet exposure use an ACME-enabled server (Caddy or certbot) to get a cert for your FQDN. If you run a relay, verify its TLS requirements.

两个实用建议:将 Sunshine 的配置置于版本控制之下(如 /etc/sunshine/config.toml),并以非特权用户运行二进制程序。在动 DNS 或证书之前先在 LAN 上测试配对。

配对与客户端设置 — 实际发生的流程

首次连接时 Moonlight 与 Sunshine 会交换配对凭据。典型流程:在主机上启动 Sunshine,在客户端打开 Moonlight,通过局域网发现或手动输入 IP/FQDN 找到主机、发起配对请求、在主机端接受——通常会通过本地提示或短时验证码确认。配对完成后,Moonlight 会保存密钥并在未被主机撤销前无需再次交互式确认。

若使用中继(Tenvo 或自托管),发现过程通常经由中继服务发生,这样客户端可以在 NAT 后面无需端口转发就到达主机。运维上的注意点是:若使用第三方中继,TLS 会在该中继终止——中继运营方在技术上有能力观察或拦截流量(若其选择这么做)。在合规或信任决策中要考虑这一点。

持续维护:你将继承的那些安静责任

运行自有的 Sunshine 主机不是“装好就忘”的项目。请为下列定期任务做好规划:

  • 证书续期:若使用公网 TLS,请自动化续期(通过 certbot 或 Caddy 使用 Let's Encrypt)。验证自动续期的上报,并测试 Sunshine 重新加载新证书的路径,使服务能在不手动重启的情况下使用新证书。
  • 操作系统与驱动更新:每月的安全更新;GPU 驱动的更新应先在测试环境验证后再推向生产。驱动通常是串流与音频回归的来源。
  • 配置和密钥备份:将 /etc/sunshine 与配对密钥纳入配置备份。如果丢失配对密钥,用户需要重新配对。
  • 监控与告警:可用性检测(外部合成测试)、磁盘/CPU/GPU 使用监控与日志。为可用性制定 SLO,并明确在主机夜间宕机时谁需要响应。
  • 日志轮转与保留:串流日志量大;轮转日志并清理旧记录。决定哪些日志需保留用于审计以及保留期限。
  • 扩展与故障切换:如果部署多主机或多站点,请测试故障切换。单一自托管中继在一个区域内是单点故障;Tenvo 的多区域托管中继能替你移除该运维细节。
  • 用户生命周期管理:人员离职时撤销配对,并至少每季度审计一次已配对设备。

时间预估:单台主机安装并测试预计需 1–2 小时;之后小规模部署每周的持续工作以分钟计(证书检查、更新)。对于大规模机群,请按修补、监控与事件响应核算等效人力。

故障排查:常见失效模式与修复建议

  • 局域网无法发现主机 —— 检查 mDNS/UPnP 与本地防火墙。一些企业交换机会阻止组播;通过 IP ping 主机并尝试按 FQDN 或 IP 手动连接,而不要依赖发现。
  • 黑屏或画面乱码 —— 通常是 GPU 驱动或合成器冲突。尝试非合成会话或更新驱动。在 Wayland 下,检查合成器对屏幕捕获的支持情况。
  • 没有音频 —— 确认音频后端配置正确(PulseAudio/pipewire),并确认 Sunshine 已配置为捕获正确的 sink。
  • 高延迟 —— 检查网络路径与编码设置。降低比特率或更改编码器预设;在局域网内测试以将 GPU/编码问题与网络问题区分开来。
  • 配对反复失败 —— 清理旧密钥(如 /etc/sunshine/pairs 或类似位置)并重新发起配对;查看系统日志(journalctl -u sunshine)以获取错误信息。

如果你需要更深入的安全背景或完全避免端口转发,请参阅我们的指南 无端口转发的远程桌面 解释,以及威胁模型文章 远程桌面安全吗?坦率的威胁模型。若你的要求是完全自托管,请在决定前阅读 自托管远程桌面:为什么、如何、以及会坏的点。

结语 — 何时自托管、何时付费使用托管中继

只有在策略或网络隔离强制要求你自托管时,才应选择自托管 Sunshine 与中继。否则,托管中继在实际运维成本上常常更划算:你是在购买可用性、证书管理、多区域故障转移以及别人替你接外包的告警响应。Tenvo 的托管中继是我们建议的务实默认选择:它消除了大部分日常维护的繁琐,同时让你保持对主机与配对的控制权。如果你选择自托管,请为上文列出的维护项预留预算——这些比最初的安装更重要。

准备尝试托管中继或下载客户端?从 Download 开始。若你想要与其他工具做更深的比较,请参阅我们的其他文章,例如 RustDesk self-hosted setup: Docker + Caddy TLS,以及我们的定价比较以了解总体拥有成本。

获取 Tenvo

准备自己试用吗?

免费支持 30 台设备,无需信用卡。两分钟内即可运行并连接。