V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ihainan
V2EX  ›  分享发现

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

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

    前段时间网上冲浪时,发现有人已经成功解锁了 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
       41 天前
    哦对,顺便提醒,容器里面的 Steam 默认没有开启 GPU 加速,所以一开始使用时候会有些卡,设置里面开启 GPU 加速即可。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3408 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:16 · PVG 08:16 · LAX 17:16 · JFK 20:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.