Sunshine游戏串流服务Docker部署避坑指南:新手一次跑通的完整教程
2026/8/25 6:55:25 网站建设 项目流程

Sunshine游戏串流服务Docker部署避坑指南:新手一次跑通的完整教程

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

Sunshine 是一个开源的 Moonlight 游戏串流服务端,装好后可以把电脑上的游戏画面实时推到手机、平板甚至另一台电脑上。但对新手来说,手动装依赖、配显卡、开端口,每一步都可能劝退。这篇教程带你用 Docker 把 Sunshine 跑起来,从镜像选择、GPU 挂载到端口冲突排查一次讲清楚,照着做就能完成你的第一次串流。

动手前,先备齐这三样东西

Docker 部署最大的好处,是把 Sunshine 和它的一堆运行依赖像打包好的行李一样塞进镜像,你不用自己逐个安装编译环境。但有三样东西还是得你亲自准备:

  • 一台装了 Docker 的机器:主流 Linux 发行版都行;如果你在 Windows 上装了 Docker Desktop,建议配 WSL2 后端再跑。
  • 一块能用的显卡:核显、N 卡、A 卡都可以,前提是宿主机驱动装好。没有 GPU 也能启动,但编码会走 CPU,延迟和画质都明显变差。
  • 一台装 Moonlight 的设备:手机、平板、另一台电脑都行,它就是你的"遥控器"。

如果你打算用 Podman 替代 Docker,本文的命令同样适用,差异点会在后面单独说明。

第一条命令:10 分钟把串流服务拉起来

先别纠结参数含义,把下面命令里的/home/you/sunshine-config换成你自己的目录,直接执行:

docker run -d \ --name=sunshine \ --restart=unless-stopped \ -e TZ=Asia/Shanghai \ -v /home/you/sunshine-config:/config \ -p 47984-47990:47984-47990/tcp \ -p 48010:48010 \ -p 47998-48000:47998-48000/udp \ lizardbyte/sunshine:latest-ubuntu-24.04

这条命令会拉取镜像并在后台启动容器,配置目录、时区和三组串流端口一次性全部配好。

想确认它有没有起来,执行docker logs sunshine看输出;想确认端口在监听,执行docker ps。然后打开浏览器访问http://你的宿主机IP:47990,看到欢迎页就说明服务已经活了。首次登录会让你设置用户名和密码,务必记好——这是以后进入管理界面的唯一凭证:

到这里其实已经能用 Moonlight 配对串流了。不过先别急着开玩,下面两个问题不搞清楚,之后很容易在奇怪的地方卡住。

选镜像别踩坑:最新版的标签规则变了

网上不少教程还在写lizardbyte/sunshine:latestv0.18.0这种简单标签,直接复制会报"镜像不存在"。原因是自 v0.18.0 起,官方收紧了镜像标签规则:不再提供独立的 latest、master、vX.X.X 标签,必须使用"版本-系统"的组合标签

标签格式为<版本>-<系统>,例如latest-ubuntu-24.04v0.18.0-debian-bookworm

  • 版本部分可选:具体版本号(如v0.18.0)、latest(最新稳定版)、master(开发分支),甚至某个 commit 的 hash。
  • 系统部分目前可选:debian-bookwormubuntu-22.04ubuntu-24.04,对应不同的基础镜像。

系统后缀主要影响底层的 glibc 版本和可用软件源,日常使用选ubuntu-24.04基本不会出错。如果你是 ARM 架构的机器(开发板、ARM 云主机等),这三个后缀目前都同时提供 x86_64 和 arm64 两种架构的镜像,拉取时 Docker 会自动匹配,不用手动指定。

正式一点:把命令整理成 docker-compose

docker run 适合临时验证,想长期稳定运行,还是写一份 docker-compose 配置更省心——改参数、升级、换机器都能直接复用。下面这份保存成docker-compose.yml即可:

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

这份配置和前面的 docker run 命令一一对应:devices把显卡设备传进容器,ipc: host让容器共享宿主机内存(串流传输要用),volumes把配置持久化到宿主机,ports暴露三组端口。保存后在同目录执行docker compose up -d即可启动。

Podman 用户注意:这里需要把ipc: host去掉,改用--userns=keep-id来处理用户权限,其余照抄。

登录管理界面后,在"Applications"里能看到 Desktop、Steam 等预设应用,也可以自己添加——串流时 Moonlight 里选择哪个应用,就对应启动哪个程序:

部署中三件最容易出错的事

新手在 Docker 部署 Sunshine 时,九成的问题都出在下面三个地方,提前了解能少走很多弯路。

GPU 设备如何挂载进容器

默认情况下容器里"看不见"你的显卡,串流会退化成 CPU 软编码,画面糊、延迟高。把显卡交给容器,核心就是一行:--device /dev/dri/(Intel、AMD 的核显和独显都走这个路径)。NVIDIA 用户还需要装好 nvidia-container-toolkit,并在启动命令里加--gpus all

挂载之后怎么确认生效?进入 Web 管理界面的配置页,找到编码器选项,看能不能选到你的显卡型号;或者翻日志,看编码器初始化是否成功。正常情况下日志会打印显卡型号和编码格式信息:

配置文件挂载与用户权限

Sunshine 把配置存在容器内的/config目录,所以必须挂载出来,否则容器一删配置全没。挂载后最常见的报错是"权限不足"或"无法写入配置",原因是容器内进程的用户和宿主机目录属主不一致。解决方式是指定宿主机上已有的用户 ID:

id 你的用户名

拿到输出里的uidgid后填入环境变量,例如输出是uid=1000gid=1000,就设置PUID=1000PGID=1000,同时确保宿主机上的配置目录属主也是这个 ID:

sudo chown -R 1000:1000 /home/you/sunshine-config

出现权限问题,先检查这两处是否一致,基本都能解决。

端口冲突怎么解决

Sunshine 串流用到三组端口:TCP 的 47984-47990(其中 47990 是 Web 管理界面)、TCP 的 48010、UDP 的 47998-48000(承载视频、音频和控制数据)。如果宿主机上已有服务占用,最简单的办法是只改宿主机一侧的映射,比如把管理界面映射成8080:47990,之后访问http://IP:8080即可。映射规则是"左边宿主机、右边容器",右边不能动,左边随便改。

跑不起来的时候,先从日志找答案

排查串流问题,第一站永远是管理界面右下角的 Logs 页面,而不是反复重启容器碰运气。日志会直接告诉你编码器有没有初始化成功、客户端有没有连上来、哪一步报了错:

结合新手最常见的几个现象,对号入座:

  • Moonlight 搜不到主机:多半是端口没映射全,或宿主机防火墙挡了 UDP 47998-48000。先docker ps确认端口都列出来了,再检查防火墙规则。
  • 能连上但画面卡成幻灯片:编码器没走 GPU,回到设备挂载那部分,确认显卡真的进了容器。
  • Web 管理界面打不开:确认映射的是 47990,且访问地址是宿主机 IP 而不是容器 IP。
  • 日志时间对不上:在环境变量里设置TZ(例如Asia/Shanghai),日志和配对时间就都准了。

让它长期稳定运行的小建议

跑通只是开始,想让服务一直安稳待命,最后这几条可以顺手做掉:

  • 固定镜像版本:把latest换成具体版本号(如v0.18.0-ubuntu-24.04),避免某天升级带来不兼容。
  • 定期备份配置/config目录里就是全部家当,复制一份到别处即可,几秒钟的事。
  • 限制资源占用:在 compose 里加cpusmem_limit,防止串流时把机器资源吃满,影响同一台机器上的其他服务。
  • 配合 Steam 使用:想串流 Steam 游戏的话,可以把 Steam 集成进同一镜像——Sunshine 官方镜像本来就是按"基础镜像"设计的,适合在自己项目里二次构建。

到这里,一条完整的"拉取镜像 → 启动容器 → 配置应用 → 远程串流"路径就通了。剩下的,就是选个舒服的姿势,开玩。

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

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

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

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

立即咨询