收起左侧

超详细!手把手教你在NAS上部署 Steam Headless,打造游戏串流服务器

3
回复
135
查看
[ 复制链接 ]

20

主题

6

回帖

0

牛值

fnOS系统内测组

社区上线纪念勋章

Steam Headless:

一款远程游戏流媒体服务器,可用于搭建远程游戏串流服务

图片

核心功能:

  • • 基于 Debian Bookworm 构建,支持 Steam 客户端在 Linux 环境下运行,并兼容 Proton。
  • • 提供 Moonlight 兼容的串流服务,支持通过 Steam Link、Moonlight 或 Steam 客户端的远程畅玩功能进行游戏串流。
  • • 内置 Xfce4 桌面环境,可通过 noVNC 网页界面访问,支持音视频输出。
  • • 支持 NVIDIA、AMD 和 Intel 显卡,提供完整的控制器支持。
  • • 可通过 Flatpak 或 Appimage 安装额外应用(如 EmuDeck、Heroic、Lutris 等游戏启动器)。
  • • 支持 root 权限,方便进行自定义配置。

前言

本项目部署有一定难度,且对硬件性能有一定要求,建议认真看本教程步骤来操作,后续有需要再进行其他调整。

项目 Docker Compose 部署的官方说明文档:

https://github.com/Steam-Headless/docker-steam-headless/blob/master/docs/docker-compose.md

本教程参考了 B 站 UP 主 “紫玥爱吃狐萝卜” 的视频:

https://www.bilibili.com/video/BV1UVefz7ErE

演示的硬件,系统与环境:

  • • 硬件方面,搭载 i5-1235U 处理器,配备 40GB 内存,调用核显与 N 卡(RTX A2000 Laptop);
  • • 系统方面,使用基于 Debian 12 的绿联(UGOS Pro)系统,其他 NAS 系统的配置也是类似的;
  • • 环境方面,如果想用独显,建议先检测 Docker 里是否可以正常调用。

环境

除了要有 Docker 运行环境外,如果想在 Docker 里调用独显使用,还需要安装 NVIDIA 驱动和 NVIDIA Container Toolkit 工具。

NVIDIA 驱动

NVIDIA 驱动是连接 NVIDIA 显卡硬件与操作系统、应用程序的关键软件,它的核心作用是让操作系统和应用能够识别、控制并高效利用 NVIDIA 显卡的硬件功能。

TIP:目前我知道的绿联,飞牛和 Unriad 都是比较方便安装 NVIDIA 驱动的,至于其他 Linux 系统就不清楚了

绿联

图片

飞牛

图片

Unraid

图片

输入下面命令测试,没问题的话会打印显卡信息

nvidia-smi

图片

NVIDIA Container Toolkit 工具

NVIDIA Container Toolkit 是一套用于在容器化环境中高效运行 GPU 加速应用的工具集,它解决了容器与 NVIDIA GPU 之间的兼容性问题,让开发者和用户能轻松地在 Docker 等容器平台中利用 GPU 算力。

TIP:下面代码适用于基于 Debian 系统的飞牛和绿联,至于其他系统可以参考下面官方文档:

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html

依次执行下面代码

# 切换 root 权限
sudo -i

# 执行 curl 命令导入仓库 GPG 密钥
curl -fsSL https://developer.download.nvidia.com/com**/cuda/repos/debian12/x86_64/3bf863cc.pub | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

# 添加 NVIDIAContainerToolkit 官方仓库到系统源列表
echo "deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://developer.download.nvidia.com/com**/cuda/repos/debian12/x86_64 /" | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

# 更新包列表
sudo apt-get update

# 安装 nvidia-container-toolkit 工具包
sudo apt-get install -y nvidia-container-toolkit

# 配置 NVIDIA 在 Docker 中运行
sudo nvidia-ctk runtime configure --runtime=docker

# 重启 Docker 服务
sudo systemctl restart docker

运行 Docker 容器测试,可以成功调用会显示显卡信息

docker run --rm --gpus all nvidia/cuda:11.3.1-base-ubuntu18.04 nvidia-smi

图片

安装

先下载镜像(josh5/steam-headless:latest)到本地,避免还没开始就结束了

图片

下载模板

来到官方部署的说明文档,可以看到 GPU 支持 Intel,NVIDIA 和 AMD

https://github.com/Steam-Headless/docker-steam-headless/blob/master/docs/docker-compose.md

图片

打开左边 compose-files 文件夹,这里存放的就是配置模版

图片

点击下载 .env 配置文件

图片

TIP:

带 privileged 的模版,对设备有的完全访问权限,不需要手动指定具体设备路径;如果是多张显卡环境,想指定显卡,可以使用普通模版。但是不清楚是不是我硬件问题,实测使用 docker-compose.nvidia.privileged.yml 模版运行不正常,后来换成 docker-compose.nvidia.yml 就好了。

根据实际情况下载模版文件,这里我用的是 N 卡

图片

NAS 里创建一个文件夹,将下载的两个文件放到里面

图片

修改配置

打开 .env(下载后可能自动改为 env.txt) 文件,需要修改几个地方

图片

这里先标出需要修改的几个参数,下面也会进行详细说明

TZ
SHM_SIZE
HOME_DIR
SHARED_SOCKETS_DIR
GAMES_DIR
ENABLE_SUNSHINE

修改时区为 Asia/Shanghai,避免系统时间问题

图片

修改容器共享内存大小,过小会影响图形渲染性能,也不要给过多占用 NAS 系统资源

图片

TIP:有些系统可能不能使用相对路径,可以改为需要映射目录的绝对路径

修改 HOME_DIR 的值为 ./home ,主机上挂载到容器内 /home/default 的目录(持久化用户数据)

图片

修改 SHARED_SOCKETS_DIR 的值为 ./sockets ,共享套接字目录(用于 X11、PulseAudio 等进程通信)

图片

TIP:这里是存储游戏目录,如果后面下载比较多游戏,担心固态太小可以改为机械硬盘的目录

修改 GAMES_DIR 的值为 ./games ,主机上挂载到容器内 /mnt/games 的目录(游戏库存储路径)

图片

TIP:如果后面映射文件有问题,可以修改这个,默认不需要修改(这里后来我改成root权限了)

图片

TIP:容器内默认用户的密码,默认不需要修改

图片

TIP:Web UI 访问端口,注意是否会和其他容器端口冲突,默认不需要修改

图片

修改 ENABLE_SUNSHINE 的值为 true ,设置为自动启用 Sunshine 串流服务

图片

TIP:Sunshine 登录用户名和密码,如果服务映射到外网建议修改一下

图片

更换软件源

创建名称为 Dockerfile 的文件,粘贴下面的代码

FROM josh5/steam-headless
RUN su default -c bash 'flatpak --user remote-modify flathub --url=https://mirror.sjtu.edu.cn/flathub'
RUN echo 'Types: deb\nURIs: https://mirrors.tuna.tsinghua.edu.cn/debian\nSuites: bookworm bookworm-updates bookworm-backports\nComponents: main contrib non-free non-free-firmware\nSigned-By: /usr/share/keyrings/debian-archive-keyring.gpg\n\nTypes: deb\nURIs: https://ftp.sjtu.edu.cn/debian-security/\nSuites: bookworm-security\nComponents: main contrib non-free non-free-firmware\nSigned-By: /usr/share/keyrings/debian-archive-keyring.gpg' > /etc/apt/sources.list.d/debian.sources
RUN apt-get -o Acquire::Check-Valid-Until=false update && apt-get install fonts-noto-cjk -y
RUN apt-get clean all

打开 .yaml 模版文件

图片

将原来 image: josh5/steam-headless:latest 这行删除,替换为下面代码(注意对齐的格式)

    build: 
      context: .
      dockerfile: Dockerfile

图片

最后进行检查,注意 Dockerfile 文件是没有后缀格式的,将原来 .yml 模版文件重命名为 docker-compose.yaml ,原来 env.txt 配置文件重命名为 .env(有些系统可能会隐藏以.开头的文件,修改后就消失了)

图片

项目部署

创建名称为 steam-headless 项目,存放路径选择上面的目录,Compose 配置就可以导入了

图片

点击“立即部署”,正常情况是不会有报错的

图片

容器已经正常运行了(因为网络选择了 host,所以这里不能快捷跳转到页面)

图片

查看日志,等待显卡驱动下载完成(速度还是很快的)

图片

等看到这个信息,说明可以访问 VNC 界面

图片

使用

浏览器中输入 http://NAS的IP:8083 就能看到 VNC 界面

图片

TIP:日志要显示这个才算启动完成,可以进行连接

图片

点击连接按钮

图片

进入到这个界面(如果不是这个界面,多刷新一下网页)

图片

换源加速

如果上面下载速度比较慢,就需要更换源(如果速度还可以就不需要了)。有人可能好奇为什么要换两次,因为上面换源可能有点问题,所以再弄一次。但如果不弄上面会一直卡着核显安装步骤,就不细究为什么了。

手动来到容器终端,执行下面代码

su default -c 'flatpak --user remote-modify flathub --url=https://mirror.sjtu.edu.cn/flathub'

图片

执行完成,重启一下容器

图片

可以看到,现在下载速度就非常快了

图片

注意旁边括号,是否正常打勾

图片

查看硬件信息

点击左上角,可以查看硬件信息

图片

可以看到处理器的详细信息

图片

核显和独显信息也可以看到

图片

安装设置

全部完成会切换到这个桌面(不行就多刷新网页),点击下载安装 Steam

图片

等待 Steam 下载安装

图片

TIP:点击左上角,可以找到 Steam 应用

图片

登录 Steam 账号了

图片

点击左上角,简单设置一下 Steam

图片

界面,设置语言为中文

图片

存储空间,建议设置一下存储游戏为 Game 目录

图片

TIP:如果游戏运行崩溃,可以设置一下兼容性工具版本为 Proton 9.0-4

图片

网络连接

回到首页,发现内容还是没有显示

图片

开了梯子立马见效,可以正常访问

图片

也可以通过修改路由器 hosts 来解决(推荐),具体 IP 地址根据实际修改

23.219.73.99 steamcommunity.com
23.215.157.129 store.steampowered.com

畅玩游戏

随便选择一个游戏作为测试

图片

可以灵活的选择下载位置

图片

下载安装都没遇到问题,点击就开始畅玩游戏

图片

运行游戏都没问题

图片

右上角游戏声音也没问题

图片

NAS 系统可以看到显卡也是正常调用

图片

游戏比较小,资源占用并不多

图片

Sunshine + Moonlight 串流

目前,Sunshine + Moonlight 串流是较为热门的低延迟远程游戏串流方案。其中,Sunshine 作为游戏串流服务端,Moonlight 作为客户端,二者需相互配合,才能实现游戏的远程串流功能。

浏览器中输入 https://NAS的IP:47990 就能看到界面,注意是 HTTPS 的地址开头

图片

点击“高级”,选择继续前往

图片

输入用户名和密码,默认是 admin/admin

图片

成功进入 Sunshine 控制面板

图片

先设置一下语言为中文(保存应用之后会重新加载,需要等一下)

图片

接下来根据自己系统,下载 Moonlight 客户端

https://moonlight-stream.org/

图片

安装好后,应用会自动搜索 Sunshine 服务端

图片

如果一直搜索不出来,直接手动输入主机 IP 地址

图片

添加成功后,点击进行连接(注意弹窗的 Pin 码)

图片

切换到 Pin 码,输入配对信息(名称可以根据连接设备填写)

图片

TIP:Sunshine 点击“应用程序”,可以添加快捷打开应用

图片

配对成功以后,就会进入应用界面

图片

按道理这时候就能连接上了,但是我这边打开就会卡死(VNC 和 Sunshine 网页端都访问不了,有清楚解决办法的,可以留言交流)

图片

Steam Link 串流

可将电脑上的 Steam 游戏画面串流至移动设备、电视机、VR 头戴式显示器或另一台 PC 上,让用户在不同设备上畅玩 Steam 游戏

Steam Link 下载链接:

https://apps.apple.com/cn/app/steam-link/id1246969117

https://help.steampowered.com/zh-cn/faqs/view/7112-CD02-7B57-59F8

打开应用,不需要手动搜索,自动就能找到服务器(电脑和手机都是)

图片

会自动切换到 Steam 大屏显示,手柄操作会更加方便

图片

默认没有手动设置,画质感觉一般(有点糊)

图片

简单玩一下游戏都没什么问题,操作延时能够感觉的出(Wi-Fi 无线连接)

图片

资源占用不是很大,毕竟游戏只是 Demo 很小

图片

独显可以正常调用工作

图片

扩展

这部分内容不一定都用得上,只是作为记录,有需要的可以看看

下载驱动卡住

一般卡住不是下载慢,而是没变化看起来没运行

图片

如果一直卡着不动,可以关闭容器,删除映射文件夹再重新启动

图片

VNC 连接不上

页面顶部显示 Failed to connect to server

图片

查看日志,有可能只是单纯还没启动完成(正常是要显示二行 INF0 reaped unknown pid xxx,才算成功启动)

图片

如果是使用带 privileged 的模版,可以试试换为普通模板

图片

桌面加载不正常

进入到桌面,一直加载不正常,顶部状态栏没有

图片

查看日志是否有警告提示(比如这里就是 Sunshine 有异常)

图片

可以重启容器试试

图片

正常加载应该是这样的

图片

桌面无法点击

桌面顶部栏这些按钮点击都没反应,可以刷新网页多试几次

图片

Steam 安装没反应

点击安装按钮后,没有 Steam 下载的弹窗出现

图片

关闭容器,删除 /home/.steam 目录,重新再启动容器

图片

这样就会重新提示安装了

图片

如果还是不行,可以试试修改一下配置文件,重新再构建项目

图片

VNC 遇到错误

提示 noVNC encountered an error,好像长时间打开没操作就会提示

图片

刷新一下网页好像就没问题了

图片

Moonlight 串流问题

使用 Moonlight 连接,会导致 Sunshine 出现错误重启

图片

Sunshine 的日志有报错,这里我就不会看了,目前我也没有解决方法

图片

总结

总的来说,Steam Headless 这工具挺适合想折腾的玩家 —— 用 Docker 把游戏串流服务搭在 NAS 这类设备上,不管是手机、电视还是电脑,都能远程玩游戏想法确实不错。尤其配上独显,体验会好不少,算是把闲置硬件利用起来的好办法~不过还是有挺多坑的,最起码要安装好驱动和工具,Docker 里面可以调用显卡;Steam 网络有问题,需要修改 hosts 或者搞个梯子解决;另外我自己是遇到 Moonlight 串流问题,目前没办法搞定。

综合推荐:⭐⭐⭐⭐(有独显一定要试试,榨干所有性能)

使用体验:⭐⭐⭐⭐(意外的还不错,除了遇到串流问题)

部署难易:⭐⭐⭐⭐(有一定难度)

收藏
送赞
分享

5

主题

76

回帖

0

牛值

初出茅庐

社区上线纪念勋章

docker调用GPU是吧,哈哈,太猛了,教程太长了,分两步就好了

0

主题

1

回帖

0

牛值

江湖小虾

修改了时区的环境变量,但是docker里面简体中文乱码,怎么解决

有加Dockerfile文件吗  详情 回复
昨天 21:49

20

主题

6

回帖

0

牛值

fnOS系统内测组

社区上线纪念勋章

昨天 21:49 楼主 显示全部楼层
papigo 发表于 2025-9-2 19:50
修改了时区的环境变量,但是docker里面简体中文乱码,怎么解决

有加Dockerfile文件吗
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则