Sunshine Docker 部署避坑指南:三个翻车现场,一次讲透
2026/8/20 1:37:51 网站建设 项目流程

Sunshine Docker 部署避坑指南:三个翻车现场,一次讲透

【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine

Sunshine 是开源的自托管游戏串流服务端,配合 Moonlight 客户端即可把主机游戏串到任意设备。Docker 容器化部署免去了手工编译与依赖折腾,一条命令起服,但细节没抓对照样翻车。这篇避坑指南,专治部署前十分钟。

坑一:镜像标签,拉到的不一定是你要的版本

不少人照搬老教程执行docker pull lizardbyte/sunshine:latest,得到的要么是报错,要么是行为异常的旧版。原因在于v0.18.0 起官方收紧了标签命名:镜像标签从单一版本号改成了「<版本>-<操作系统>」的组合格式latestmaster这类简单标签已不再单独存在。

换句话说,合法的标签长这样:

# 组合标签:版本段 + 系统段,缺一不可 lizardbyte/sunshine:latest-ubuntu-22.04 lizardbyte/sunshine:v0.18.0-ubuntu-24.04 lizardbyte/sunshine:master-debian-bookworm

版本段可以是具体版本号、latest、master,甚至某个 commit hash;系统段则从下面四个里挑:

基础系统一句话点评
archlinux面向滚动发行版用户
debian-bookworm体积与稳定性均衡
ubuntu-22.04长期支持,兼容性最稳
ubuntu-24.04工具链与驱动较新

顺带一提,官方镜像的定位是"基础镜像",你完全可以在其上继续叠加 Steam、weston 等组件,拼出专属串流环境。我的经验是:系统段拿不准就选 ubuntu-22.04,生产环境则把版本段固定到具体版本号,别让 latest 悄悄漂移。

坑二:容器起来了,Web 面板却死活打不开

镜像没问题、容器也跑起来了,浏览器一访问却毫无反应。这时八成是端口没映射全——Sunshine 对外暴露的不止一个端口:

端口协议用途
47984-47990TCP与客户端握手通信,47990 是 Web 管理面板
48010TCP备用通信通道
47998-48000UDP音视频流传输

只映射 47990,会出现"客户端能连、管理页进不去"的怪象。所以docker run时三组端口一个都不能省:

docker run -d \ --name sunshine-host \ --restart unless-stopped \ --ipc host \ --device /dev/dri \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Asia/Shanghai \ -v /home/user/sunshine-cfg:/config \ -p 47984-47990:47984-47990/tcp \ -p 48010:48010 \ -p 47998-48000:47998-48000/udp \ lizardbyte/sunshine:latest-ubuntu-22.04

启动后访问http://主机IP:47990,看到下面的欢迎页就说明服务就位了,创建账号密码即可进入管理后台。

小提示:47990 被其他服务占用时,改左端宿主端口即可,比如-p 8080:47990,管理地址随之变成 8080。

坑三:GPU 没直通,画面卡成 PPT

服务通了、也能串流,延迟却高到没法玩——这种情况九成是 GPU 加速没生效,Sunshine 在拿 CPU 硬扛编码。两个参数是关键:

  • --device /dev/dri:把宿主机显卡设备直通进容器,容器内才能调用硬件编码;
  • --ipc host:共享主机内存空间,绕开容器默认限制,高码率串流更稳。

另外两个环境变量PUIDPGID决定了容器内运行用户的身份,必须与挂载目录的实际属主一致,否则/config会出现写不进去的权限问题。

⚠️ 注意 GPU 直通前先确认宿主机驱动装全:NVIDIA 需装好对应驱动,Intel/AMD 核显一般开箱即用。排查时直接看容器日志,若出现编码器加载失败之类的报错,基本就是驱动或设备没传进去。

日志页会列出 GPU 型号、编码器状态等关键信息,是排查容器部署问题最快的入口。实测把设备、内存、权限三件事一次配齐,之后基本不用再碰容器。

进阶玩法:docker-compose 一键起服,Podman 告别守护进程

嫌 docker run 参数太长?把配置固化成 compose 文件,改配置只需改文件:

services: stream-host: image: lizardbyte/sunshine:latest-ubuntu-24.04 container_name: sunshine restart: always ipc: host devices: - /dev/dri:/dev/dri volumes: - ./sunshine-config:/config environment: PUID: "1000" PGID: "1000" TZ: "Asia/Shanghai" ports: - "47984-47990:47984-47990/tcp" - "48010:48010" - "47998-48000:47998-48000/udp"

保存为 compose.yml 后,docker compose up -d一键起服,参数基本不用背。

不想引入 Docker 守护进程的话,Podman 是更轻的替代,参数几乎平移,只需把用户命名空间换成--userns=keep-id,让容器内用户与宿主机保持一致:

podman run -d \ --name sunshine-host \ --userns=keep-id \ --device /dev/dri \ --ipc=host \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Asia/Shanghai \ -v /home/user/sunshine-cfg:/config \ -p 47984-47990:47984-47990/tcp \ -p 48010:48010 \ -p 47998-48000:47998-48000/udp \ lizardbyte/sunshine:latest-debian-bookworm

选平台之前,先看清架构支持矩阵

还有一个容易被忽略的变量:你的机器是 x86_64 还是 ARM64?不是所有镜像都两者通吃:

基础系统x86_64ARM64
archlinux支持不支持
debian-bookworm支持支持
ubuntu-22.04支持支持
ubuntu-24.04支持支持

Arch 用户通常跑在 x86_64 上影响不大;但如果你想在树莓派、飞腾这类 ARM 设备上做 Sunshine ARM64 部署,务必绕开 archlinux,从 Debian 或 Ubuntu 里选。

写在最后:跑起来,才是第一步

绕开上面三个坑,你的 Sunshine 容器部署基本成型。剩下的工作是进 Web 面板添加应用、给客户端配对 PIN,再连上 Moonlight 验证延迟。遇到问题别慌,第一反应永远是翻日志——它比任何教程都诚实。🎮

现在就动手吧:挑一个镜像标签,复制对应的部署命令,把第一台串流服务器跑起来。更细的配置项说明,官方文档写得很清楚,部署完成后花十分钟通读一遍,能省下后面大量排查时间。

【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

立即咨询