使用 Steam Headless 来搭建一个游戏串流专用服务器 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ihainan
V2EX    分享发现

使用 Steam Headless 来搭建一个游戏串流专用服务器

  •  1
     
  •   ihainan 160 天前 1127 次点击
    这是一个创建于 160 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前段时间网上冲浪时,发现有人已经成功解锁了 30/40 系显卡的 vGPU ,但是相关驱动和方案尚未公开,在搜索细节的时候又偶遇了 Steam Headless 这个容器项目,集成了 Xfce 、VNC 、Steam 客户端和 Sunshine ,简单折腾一番,搭了一个能够随时保存状态和恢复,方便自己玩独立游戏的专用游戏串流服务器。

    我的软硬件环境:零刻 GTi 12 Ultra + 显卡坞( PCIe 直连,非雷电或者 Oculink ),4060 Ti 透传 Debian 12 VM 。

    pve

    在 Debian VM 里面启动 Steam Headless 容器并配置好 Steam 与 Sunshine ,编写了一个脚本能够 使用 docker pause/unpause 快速冻结/恢复容器服务,接入到 Home Assistant 和 HomeKit ,最终实现效果如下面两个视频:

    演示移动端串流以及快速暂停/恢复串流服务: https://www.bilibili.com/video/BV1j6gWzzEMn

    演示脚本与暂停之后的功耗: https://www.bilibili.com/video/BV1GegLzrEke

    screenshot


    这套方案的一些优点:

    • 不依赖显卡支持 vGPU 特性,可以和 Linux Host 共享 GPU 。理论上你可以搭建多个串流服务器给不同人同时使用。
    • 暂停和启动很快,个人觉得比睡眠/唤醒 Windows VM 要快。
    • 暂停之后显卡坞与整机功耗基本与不开容器一致。不过插了欺骗器之后功耗还是比不插要高一点点。
    • 暂停期间 Steam 游戏时间不会被统计(关闭游戏后 Steam 会自动校准),暂停期间不会影响同一账号在其他设备上游玩别的游戏( Steam 同一账号同一时间只允许运行自己库内的一个游戏)。

    一些缺点:

    • Linux + Proton 天生的兼容性问题。理论上支持 DLSS 但是我没成功。
    • 暂时还不支持开启 HDR 。
    • 暂停期间显存/内存资源不会被释放。
    • Linux 的游戏串流生态(花样繁多的虚拟屏、虚拟手柄、串流软件、RTX HDR 等)不如 Windows 那么完善。

    踩的一些坑:

    • 雷电显卡坞的直通显卡(我的另一张 3060 12G 是接的雷电显卡坞)跑 Steam Headless 会有很多问题(甚至会导致 PVE Host 挂掉)。
    • Steam Headless 自带的虚拟显示器似乎有很多问题,所以我最后选择了欺骗器方案。

    我编写的容器启动脚本(里面暂停之前会杀掉 Sunshine 释放资源): https://gist.github.com/ihainan/16f8089dcbe18061c5b22b38d975517c

    我使用的容器 .env 文件: https://gist.github.com/ihainan/791bdf1980c2d89fba7156e81c80bb04

    我使用的 Home Assistant 配置:

    command_line: - switch: name: 串流开关 command_on: >- ssh -i /config/.ssh/id_ed25519 -o UserKnownHostsFile=/config/.ssh/known_hosts -o StrictHostKeyChecking=yes [email protected] 'bash /home/ihainan/extend/docker/Steam/docker-compose-manager.sh unpause' command_off: >- ssh -i /config/.ssh/id_ed25519 -o UserKnownHostsFile=/config/.ssh/known_hosts -o StrictHostKeyChecking=yes [email protected] 'bash /home/ihainan/extend/docker/Steam/docker-compose-manager.sh pause' command_state: >- ssh -i /config/.ssh/id_ed25519 -o UserKnownHostsFile=/config/.ssh/known_hosts -o StrictHostKeyChecking=yes [email protected] 'bash /home/ihainan/extend/docker/Steam/docker-compose-manager.sh check' value_template: "{{ value.strip() == 'No' }}" 

    最后再推荐我正在用的一个拉伸手柄,小鸡 X5Lite ,虽然相比中高端拉伸手柄(同品牌的 G8/G8+,雷蛇骑仕系列等),它的做工很一般,但是抖音常年 60 不到的价格(天天裸手柄扔背包里面不心疼),极其极其轻的重量,以及最重要的,闲鱼有人卖 3D 打印握把( 20 元左右),能够极大程度提升手柄的握持体验,让它反倒成为诸多使用过的拉伸手柄里面,我最喜欢的一个。

    唯一不能忍的缺点,连接 iOS 并进行串流,Home 按钮不能映射为 Guide Button ( Xbox/PS Button ),很多 Steam 手柄快捷键无法使用。Android 则没有这个问题。

    x5lite

    ihainan
        1
    ihainan  
    OP
       158 天前
    哦对,顺便提醒,容器里面的 Steam 默认没有开启 GPU 加速,所以一开始使用时候会有些卡,设置里面开启 GPU 加速即可。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2963 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 10:25 PVG 18:25 LAX 02:25 JFK 05:25
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86