尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

三步跑通 Sunshine 串流:容器化部署让手机秒变游戏主机

三步跑通 Sunshine 串流:容器化部署让手机秒变游戏主机 三步跑通 Sunshine 串流容器化部署让手机秒变游戏主机【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/SunshineSunshine 串流指的是用开源的 Sunshine 服务端软件把电脑上的游戏画面实时编码后通过网络投送到手机、平板、电视等设备上客户端通常搭配 Moonlight 一起使用。很多人不是不想玩而是栽在安装环节——编译、依赖、权限、显卡驱动随便一环出问题就能劝退一晚上。这篇文章换个思路不折腾手动安装用容器把 Sunshine 串流服务打包跑起来从下载到第一次成功串流总共就三组命令。先聊聊那个熟悉的场景游戏在电脑里人却在客厅周末想躺着打游戏但电脑在书房沙发在客厅总不能把主机搬过去。于是你想到串流——手机、平板、电视都能当屏幕键盘手柄照样用。方向没错问题出在服务端怎么装。Sunshine 本身是跨平台的Linux、macOS、Windows 都有安装包但如果你是 Linux 用户手动装一遍的感受大概是这样先装一堆编译工具再处理各种运行库接着发现缺了某个编码器最后还要调试显卡权限……运气好半小时运气不好一整晚。而容器把这一切都封装好了。你不需要知道里面装了什么、依赖怎么编排拉一个镜像、跑一条命令服务就起来了。下面就用这个思路把串流服务当成一个黑盒子直接投入使用。为什么非要用容器跑 Sunshine 串流先看一张对比手动安装和容器化的差别一目了然对比项手动安装容器化部署依赖处理手动补齐版本冲突是常态镜像内已封装开箱即用卸载重装残留文件、配置散落各处删除容器即清理干净升级版本覆盖安装容易踩雷换镜像标签重新拉取换机器迁移重新走一遍安装流程配置目录一挂直接复现隔离性直接躺在系统里与宿主环境隔离互不污染简单说容器就像一份打包好的游戏串流环境你在任何一台装了 Docker 的机器上都能原样复现。配置、权限、依赖全部固化在镜像里剩下的只是告诉容器主机上有什么资源可以用。部署前先照着这份清单做三件小事动手前花五分钟确认三件事能避开 80% 的坑确认主机装好了 Dockerdocker --version能打印版本号即可。偏好无守护进程方案的话Podman 也行后面会给出对应命令。确认显卡设备路径串流要调用 GPU 编码Intel / AMD / NVIDIA 集成或独立显卡通常在/dev/dri下可以ls /dev/dri看一眼。后面启动时要把它直通进容器。确认端口没被占用Sunshine 会用到 47984-47990、48010TCP以及 47998-48000UDP。如果被占用把宿主端端口改掉就行比如-p 8080:47990容器内部端口不能动。另外建一个配置目录比如~/sunshine-configSunshine 的所有配置会存在容器内的/config挂载出来方便备份和迁移。拉镜像别拉错看懂版本标签这串密码Sunshine 的镜像在 Docker Hub 上仓库名是lizardbyte/sunshine。从 v0.18.0 开始镜像标签规则变了不再有latest、master、vX.X.X这种单一标签必须用版本-系统组合的形式例如latest-ubuntu-22.04。拆开看就是两段前半段是版本可以是latest、master、v0.18.0甚至某个 commit hash后半段是基础操作系统。目前提供这三种后缀标签后缀amd64 / x86_64arm64 / aarch64debian-bookworm✅✅ubuntu-22.04✅✅ubuntu-24.04✅✅也就是说树莓派这类 ARM 设备也能跑选latest-ubuntu-22.04之类的标签镜像仓库会自动匹配对应架构。新手无脑选latest-ubuntu-22.04即可想要稳定就把latest换成具体版本号。三选一的启动方式挑顺手的来方式一docker run 一行命令docker run -d \ --device /dev/dri/ \ --namesunshine \ --restartunless-stopped \ --ipchost \ -e PUID1000 \ -e PGID1000 \ -e TZAsia/Shanghai \ -v ~/sunshine-config:/config \ -p 47984-47990:47984-47990/tcp \ -p 48010:48010 \ -p 47998-48000:47998-48000/udp \ lizardbyte/sunshine:latest-ubuntu-22.04PUID/PGID记得改成你当前用户的 ID可以用id命令查看。-v ~/sunshine-config:/config里的路径换成你刚才建的目录。方式二docker compose 配置文件新建一个docker-compose.yml内容如下services: sunshine: image: lizardbyte/sunshine:latest-ubuntu-22.04 container_name: sunshine restart: unless-stopped devices: - /dev/dri:/dev/dri volumes: - ~/sunshine-config:/config environment: - PUID1000 - PGID1000 - TZAsia/Shanghai ipc: host ports: - 47984-47990:47984-47990/tcp - 48010:48010 - 47998-48000:47998-48000/udp然后在同目录执行docker compose up -d。以后想升级改一下image的版本标签再docker compose pull docker compose up -d就完事。方式三Podman 同样顺手不用 Docker 的话Podman 命令几乎一比一对应唯一区别是用--usernskeep-id处理用户权限podman run -d \ --device /dev/dri/ \ --namesunshine \ --restartunless-stopped \ --usernskeep-id \ -e PUID1000 \ -e PGID1000 \ -e TZAsia/Shanghai \ -v ~/sunshine-config:/config \ -p 47984-47990:47984-47990/tcp \ -p 48010:48010 \ -p 47998-48000:47998-48000/udp \ lizardbyte/sunshine:latest-ubuntu-22.04跑完docker ps或podman ps看到容器状态是 Up就说明启动成功了。一张速查表端口、目录、设备、权限都是干什么的启动命令里参数不少第一次看容易晕其实就四类端口是门目录是仓库设备是工具环境变量是说明书。挨个看参数作用推荐值必填-p 47990:47990Web 管理页端口浏览器打开https://主机IP:47990就能进后台宿主端可改如8080:47990是-p 47984-47989:47984-47989/tcp配对与串流控制通道保持默认是-p 48010:48010数据通道保持默认是-p 47998-48000:47998-48000/udp视频流传输画面就靠这几扇门保持默认是-v 目录:/config配置持久化目录备份迁移全靠它任意可写目录是--device /dev/dri/把显卡直通进容器没有它画面起不来按主机实际路径强烈推荐--ipchost与主机共享内存画面数据搬运更快-强烈推荐PUID/PGID容器内文件归属的用户/组 ID防止权限打架id命令查到的值推荐TZ时区让日志时间对得上Asia/Shanghai可选这里有个小类比端口映射就像给房子开几扇专门的门——Moonlight 客户端在门外得知道走哪扇门进来才能找到 Sunshine。门宿主端口可以换号但屋里房间号容器端口不能动所以写的时候都是外:内的格式如8080:47990。启动之后第一件事登录、配对、把游戏加进来容器起来了串流还没开始接下来四步走完就能玩上。第一步进 Web 管理页建账号。浏览器打开https://主机IP:47990第一次访问会看到创建用户名和密码的欢迎页先填好并记牢——以后进后台全靠它。浏览器提示不安全别慌这是因为用的是自签名证书点继续访问就好。第二步添加应用。左侧导航进 Applications默认会带桌面Desktop和 Steam 等预设项。想串流某个游戏点 Add 新建一条填上名称和启动命令即可比如steam或/path/to/game。管理界面里可以随时编辑、删除或禁用某个应用。第三步顺手调一下配置。管理页顶部有搜索框想找什么设置直接搜。比如网络相关想开 UPnP 自动端口转发切到 Network 标签勾上即可省去手动在路由器上折腾映射的麻烦。第四步客户端配对。在手机或电视上装好 Moonlight 客户端手动添加这台电脑填主机 IP。客户端会弹出一个 PIN 码回 Sunshine 管理页的 PIN 标签页输入再给设备起个名字提示成功后在 Moonlight 里选一个应用游戏画面就该出现了。首次串流翻车自救手册三个常见坑第一次串流几乎人人都会踩坑把这几个最常见的对号入座坑一页面打不开或一直转圈。大概率是端口没映射全TCP 的 47984-47990 是一整段漏一个都不行。另外记得用https://访问Sunshine 默认不开 HTTP。坑二画面黑屏日志里出现编码器报错。先确认启动命令里有没有--device /dev/dri/再确认主机显卡驱动正常ls /dev/dri能看到 renderD128 之类的设备。管理页的 Troubleshooting 标签页能看到完整日志搜 Encoder not found 这类关键词定位问题最直接。坑三配置目录权限错乱。容器内文件归属由 PUID / PGID 决定如果宿主目录所有者和它不一致就会出现能启动但存不下配置。把宿主目录改给对应用户即可sudo chown -R 1000:1000 ~/sunshine-configID 换成你的。玩熟了还有这些进阶方向等着你顺利串流只是开始Sunshine 的玩法比想象中多把镜像当积木自己拼。Sunshine 的镜像本身被设计成可作基础镜像你可以基于它叠加 Steam、Wayland 等组件做出一个开机即游戏的自定义镜像FROM lizardbyte/sunshine:latest-ubuntu-22.04 # 安装 Steam 和 Wayland 相关组件 RUN apt-get update apt-get install -y \ steam \ wayland-protocols \ weston # 启动时先拉起 Steam 再启动串流服务 ENTRYPOINT [bash, -c, steam sunshine]画质和延迟还能再榨一榨。如果你的路由支持 QoS可以把 UDP 47998 端口的流量单独设高优先级队列串流卡顿会明显改善显卡支持的话在配置里开启 HDR、选择合适的编码器如 AV1画质能再上一个台阶。想多用户共用一台机器可以研究一下 Games on Whales 这类基于 Sunshine 的多用户串流方案把一台高配主机变成全家人的云游戏机房。从电脑在书房到游戏在客厅Sunshine 串流只差一个容器。照着上面三步走一遍今晚就能躺沙发上开黑。玩出心得了不妨再回头看看那些进阶玩法串流的世界远比想象中大。【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表