Sunshine 串流服务容器化部署实战:3 步把书房主机搬到客厅电视

发布时间:2026/8/19 10:27:57
Sunshine 串流服务容器化部署实战:3 步把书房主机搬到客厅电视 Sunshine 串流服务容器化部署实战3 步把书房主机搬到客厅电视【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/SunshineSunshine 是一款开源的自托管游戏串流服务端它的任务只有一个把电脑上的游戏画面实时推送给任意位置的 Moonlight 客户端。本文不谈空泛的原理直接带你完成容器化部署——3 个步骤、几条命令从拉取镜像到手机或电视成功串流全程大约一刻钟。文中每一条命令都能直接复制运行参数含义也一并讲透。先说一个真实场景主机在书房快乐在客厅周末下午你窝在沙发上电视开着手柄握在手里脑子里想的全是昨晚没打完的 Boss。可主机在书房。你不得不爬起来跑过去开机、进游戏再坐回客厅——如果显示器离电视足够近还得拖着长长的 HDMI 线在茶几和书桌之间反复腾挪。这就是 Sunshine 存在的意义让游戏画面无线搬家。主机待在原地不动画面通过局域网实时编码并推送到你手边的任何屏幕。而容器化则让这个串流服务的安装从地狱级变成复制粘贴级。我最初是手动装的编码器库、图形栈、音频栈、权限配置一环扣一环系统一升级就崩。后来换成官方 Docker 镜像五分钟跑通再也没折腾过第二遍。容器到底帮我们挡掉了什么麻烦把镜像想成一张出厂模板容器则是按模板拆开即用的快递盒——盒子里已经装好了 Sunshine 需要的整套运行环境不需要你在宿主机上手动凑齐依赖。手动部署时你要和这些东西搏斗显卡编码库NVENC、AMF、VAAPI 各平台不同图形与音频栈的系统依赖用户权限、目录归属、开机自启升级系统后某依赖版本冲突服务直接罢工用容器以上全部封进镜像。换机器、重装系统、多台设备共用一套配置都只是拉镜像 跑容器的事。数据仍然在你手里这就是自托管的意义。动手前的三分钟自检显卡、端口、镜像标签开始敲命令之前先花三分钟确认三件事能少走大半弯路。第一显卡是否有硬件编码能力。NVIDIA 走 NVENCAMD 走 AMF/VAAPIIntel 核显走 Quick Sync。没有独显也能跑但 CPU 软编码延迟明显串流体验会打折扣。第二端口别被占用。下面这组端口是串流协议必需的部署前检查一下47984–47990TCP网页管理界面与配对48010TCPRTSP 握手47998–48000UDP音视频与控制流第三会读镜像标签。从 v0.18.0 起官方镜像不再支持latest、master、vX.X.X这种单独标签必须用版本-系统的组合格式例如latest-ubuntu-24.04。版本部分可以是latest、master、具体版本号或 commit hash系统部分目前提供debian-bookworm、ubuntu-22.04、ubuntu-24.04三种后缀均同时支持 x86_64 和 ARM64 架构。 第一步读懂镜像标签再把它拉下来先用最省事的组合跑通流程docker pull lizardbyte/sunshine:latest-ubuntu-24.04这条命令会拉取官方镜像。第一次使用就用latest-ubuntu-24.04验证全链路跑通之后再换成固定版本号——比如想锁定某个正式版本可以先到镜像仓库的 Tags 页查一下有哪些可用版本再填入vX.X.X-ubuntu-24.04这样的标签避免手滑写了不存在的版本号。第二步一条 docker run 命令跑起服务镜像就绪后直接执行下面的命令按你的实际路径替换/data/sunshine和用户 IDdocker run -d \ --namesunshine \ --restartunless-stopped \ --device /dev/dri/ \ --ipchost \ -e PUID1000 \ -e PGID1000 \ -e TZAsia/Shanghai \ -v /data/sunshine:/config \ -p 47984-47990:47984-47990/tcp \ -p 48010:48010 \ -p 47998-48000:47998-48000/udp \ lizardbyte/sunshine:latest-ubuntu-24.04拆开看每一行都不是摆设--device /dev/dri/把 GPU 图形设备直通进容器这是后面画质优化的前提--ipchost共享宿主机内存空间避免串流进程的内存访问异常-v /data/sunshine:/config把配置和配对凭据持久化到宿主机容器删除也不丢三组-p分别对应网页界面、RTSP 会话、音视频数据流缺一不可PUID/PGID/TZ容器内运行身份与时区直接影响文件权限和日志时间PUID 和 PGID 用id命令查一下自己当前的用户 ID 即可挂载目录的属主要和它保持一致否则容器可能没有写入权限。第三步打开浏览器完成首次配对容器运行后在任意一台能访问到它的设备上打开浏览器访问http://主机IP:47990你会看到 Sunshine 的欢迎页按提示设置访问密码之后在 Moonlight 客户端里添加主机、输入屏幕上的 PIN 码握手就完成了。手机、平板、电视盒子、另一台电脑装好 Moonlight 都能连。到这一步串流链路已经打通。接下来是让它变得更好用的进阶操作。那串参数到底在管什么端口、目录、身份、时区很多人部署成功后不敢动参数其实规则很简单冒号左边是宿主机右边是容器内部。网页端口容器内固定 47990宿主机一侧可以随便改比如-p 8080:47990就能用 8080 访问管理页串流端口三组端口的内部端口都不能改它们被 Moonlight 协议写死了配置目录/config是唯一的配置落盘点所有密码、应用列表、画质设置都在里面务必挂载身份与时区PUID/PGID 不设则容器以 root 运行设了更安全TZ 影响所有日志的时间戳如果之后要改 PUID/PGID需要重建容器所以最好一开始就定好。 画质不掉帧的关键一步把 GPU 直通给容器这是串流体验的分水岭。CPU 软编码不是不能跑而是高分辨率、高码率下延迟和丢帧都很难看。硬件编码才是正解。Intel / AMD 核显或独显上面命令里的--device /dev/dri/已覆盖绝大多数场景无需额外配置NVIDIA 独显需要额外的驱动与容器运行时支持步骤稍多建议先确认宿主机驱动版本验证是否生效进入网页端的 Logs 页面能看到编码器识别情况如果日志里出现编码器相关的 Error先回去检查 GPU 直通日志页是排错的第一现场串流黑屏、起流失败十有八九能从这里找到答案。更进一步把部署固化成 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 environment: - PUID1000 - PGID1000 - TZAsia/Shanghai volumes: - /data/sunshine:/config ports: - 47984-47990:47984-47990/tcp - 48010:48010 - 47998-48000:47998-48000/udp保存后在文件所在目录执行docker compose up -d即可。如果用的是 Podman把--usernskeep-id换成对应的 compose 配置项其余参数几乎可以照搬。踩坑现场五个高频问题的抢救手册容器起来了网页却打不开。先查端口映射是否完整再确认 47990 没被宿主机其他进程占用docker logs sunshine看一眼启动日志最直接。串流黑屏或起流失败。八成是 GPU 没直通成功。确认/dev/dri设备存在且--device参数正确然后回 Logs 页找编码器相关的报错。容器内写不了配置。挂载目录的属主和 PUID/PGID 对不上。把目录属主改成对应 ID例如chown -R 1000:1000 /data/sunshine1000 换成你自己的 ID。局域网能连出门就连不上。这是网络问题不是容器问题。需要在路由器上为 47984–48010 的 TCP 和 47998–48000 的 UDP 做端口转发并配合公网 IP 或内网穿透使用。升级后配置不兼容服务起不来。很可能是用了latest标签镜像更新把配置格式带偏了。这就是为什么我建议生产环境锁定具体版本号升级前先备份/config。出门前 10 分钟锁版本、做备份、管好安全版本锁定把latest换成明确的版本号可预期、可回滚定期备份/config目录里是全部家当密码、应用列表都在备份它等于备份整个服务开机自启--restartunless-stopped已包含在示例中断电重启后服务会自动恢复安全边界网页管理界面别直接暴露到公网建议用反向代理加 HTTPS管理密码设强一些资源限制机器上还有其他服务的话可以用--cpus和--memory给容器划定上限避免串流吃满整机资源到这里你的 Sunshine 已经跑在容器里可以随时用手机、平板或电视串流玩 3A 大作了。下一步值得折腾的方向很多Steam 大屏模式配合手柄直连、多客户端同时接入、把整套 compose 配置写进自己的部署脚本。最后想问问你你手上的显卡是 NVIDIA 还是 AMDGPU 直通这一步有没有踩过什么神奇的坑欢迎对照这篇文章里的日志排查思路说说你的串流配置和实际延迟表现。【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考