部署Steam 挂卡服务搭建
MeteorCatSteam 挂卡的核心原理是通过模拟游戏运行状态向 Steam 服务器发送 “游戏正在运行” 的心跳请求从而高效获取集换式卡牌.
注意: Steam 服务条款禁止第三方工具模拟游戏运行, 可能导致账号警告、限制市场功能或封禁, 所以本质上这种行为是带有风险
这部分功能目前已经有第三方实现并开源, 具体可以查看 ArchiSteamFarm
以下部分也是基于 ArchiSteamFarm 项目来搭建处理, 注意这里是基于 Debian 发行版搭建处理, 官方也提供更加方便的 Docker.
建议需要挂卡的账号配置 Steam 所有安全登陆配置(官方2FA), 避免挂载过程之后泄漏登陆密码或者 Token 相关
安装部署
按照官方安装指南来部署环境配置, 内部采用命令行模式而无需运行游戏界面来节约大量资源处理, 需要执行以下命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| # 参照文档: https://github.com/JustArchiNET/ArchiSteamFarm/wiki/Setting-up-zh-CN
# 注意: ArchiSteamFarm 是基于 .NET 开发, 也就代表需要安装对应的 .NET 依赖 # .NET: https://dotnet.microsoft.com/zh-cn/download # 有长期支持版和和热更新版本, 建议直接采用长期支持版即可, 还需要确认 ArchiSteamFarm 是否带有版本支持 # 所以这里目前的版本是 .NET10 版本, 我这边是 Debian13 wget https://packages.microsoft.com/config/debian/13/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb # 如果采用 Ubuntu24.04 则需要注意: 202512 的时候, Ubuntu 还没出稳定发布版本, 所以目前还不可用源配置 # Ubuntu 不要混用 debian 源, 会直接破坏内部依赖 # 官方说明: https://learn.microsoft.com/zh-cn/dotnet/core/install/linux-ubuntu-install?tabs=dotnet10&pivots=os-linux-ubuntu-2404
# 以下是针对目前没有构建源管理的包的手动脚本安装 wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh # 下载安装脚本 chmod +x ./dotnet-install.sh # 对脚本赋予执行权限 ./dotnet-install.sh --channel LTS # 默认安装的就是长期支持版本 # 默认安装的 SDK 都是放置于 /home/{执行系统用户}/.dotnet 之中, 因为不是源安装, 所以只能被指定系统用户才能执行 # 安装之后需要激活环境变量, 执行以下命令: echo 'export DOTNET_ROOT=$HOME/.dotnet' >> ~/.bashrc echo 'export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools' >> ~/.bashrc source ~/.bashrc # 激活生效
# 按照配置 sudo apt-get update && \ sudo apt-get install -y dotnet-sdk-10.0
# 这里需要按照 ArchiSteamFarm 来安装依赖, 这里按照 redhat|debian 发行版不同, 包的名称也有不同 # 这里有些库是 libxxxx{版本号}{-dev} 这样命名, 所以需要依赖最新版本的编写 # 比如 libicu 这个库其实最新版本是 libicu74, libssl 最新版本包是 libssl-dev sudo apt install -y ca-certificates libc6 libgcc-s1 libicu74 libgssapi-krb5-2 libssl-dev libstdc++6 zlib1g unzip # 最后确认版本信息 dotnet --version # 这里有输出代表已经安装完成: 10.0.101
# 之后就是拉取官方的代码包, 一般拉取 latest(最新) 即可 # 下载页面: https://github.com/JustArchiNET/ArchiSteamFarm/releases/latest # 因为这里采用 linux 服务器, 所以默认是 x64 平台, 如果是 arm64 的 cpu 就需要采用 arm64 的版本 # 我这边采用官方目前最新版本 6.3.0.2, 并下载到 /tmp 临时目录备用 wget https://github.com/JustArchiNET/ArchiSteamFarm/releases/download/6.3.0.2/ASF-linux-x64.zip -O /tmp/ASF.zip
# 这里我是专门在服务器创建 /data/ArchiSteamFarm 目录来管理 mkdir -p /data/ArchiSteamFarm && cd /data/ArchiSteamFarm # 创建目录并进入 unzip /tmp/ASF.zip # 解压文件到内部
# 解压之后的目录结构如下: # ArchiSteamFarm (放置您自己与 ASF 相关的东西) # ├── ArchiSteamFarm(.exe) # ├── config (核心配置目录在此, 也是后续需要启用监控机器人 Steam 帐号/密码/登陆Pin 的地方) # ├── logs # ├── plugins # ├── www # └── (...) #
# 默认直接写入 /data/ArchiSteamFarm/config/meteorcat-reboot.json vim /data/ArchiSteamFarm/config/meteorcat-reboot.json # 创建首个监控机器人配置 # 之后就是编写配置文件内容, 这里面的文件名可以随便声明, 程序会自动检测内部的 *.json 文件
|
/data/ArchiSteamFarm/config/meteorcat-reboot.json 这里面的基础内容:
lines1 2 3 4 5 6 7 8 9 10 11 12 13
|
{ "SteamLogin": "meteorcat", "SteamPassword": "meteorcat-password", "SteamParentalCode": "4321", "Enabled": true }
|
官方有提供在线生成器 WebConfigGenerator,
但是这种私密化的东西(账号|密码|授权码)最好能尽量少暴露就少点暴露.
官方也有 ASF-UI 可以在线配置, 但是我还是保持私有信息尽可能多的去手动配置, 而非选择对外暴露生成器这种东西
编写好机器人配置之后, 就可以准备启动挂卡机器人, 需要执行以下命令:
1 2 3
| # 启动命令, 需要确保执行管理员能够检索到 dotnet 和 Steam 信息正确 /data/ArchiSteamFarm/ArchiSteamFarm # 这里会默认启动 WebGUI, 地址为: http://localhost:1242
|
在浏览器访问对应的 http://localhost:1242 确认是否能能够查看到页面, 如果可以就代表服务启动完成.
虽然目前已经启动正常, 但是距离正确安全配置 ArchiSteamFarm 还有很多事情要做.
安全实践
上面的部署虽然正常, 但是对于服务器安全性极差, 一旦 ArchiSteamFarm 服务被攻破那么整个服务器就会被瞬间被攻破.
除了安全问题之外其实还有很多问题需要用到单独管理:
-
版本依赖: 如果将 dotnet 安装到全局, 可能因为用到比较新的 LTS 版本导致必须升级, 而升级可能会干扰到全局 dotnet
-
环境隔离: 有时候部分 dotnet 会做定制配置处理, 可能会导致干扰到全局的 dotnet 依赖
所以我们要多整个系统服务做好安全加固, 确保不会因为 ArchiSteamFarm 服务被攻破的时候顺带服务器一起沦陷, 需要配置命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| # 一般来说这种应用级的软件最好安装在 /var/lib 之中, 所以按照这方面规范安装 # 我们需要单独创建个系统账号, 用于专门管理挂载机器人这个服务, 这个系统账号权限不能太高 # 这个系统用户不需要密码也不需要登陆, 并且锁定默认构建家目录为 /var/lib/asf # 如果需要其他目录可以手动修改下, 这部分主要这个目录空间比较大 sudo useradd -r -m -d /var/lib/asf -s /sbin/nologin asf
# 当然如果数据不重要可以直接干脆删除 /data/ArchiSteamFarm 目录, 之后将 /tmp/ASF.zip 重新解压到内部 sudo -u asf mkdir -p /var/lib/asf/bin sudo -u asf unzip /tmp/ASF.zip -d /var/lib/asf/bin
# 指定目录授权给 asf 用户 sudo chown -R asf:asf /var/lib/asf sudo chmod -R 755 /var/lib/asf
# 切换系统用户 sudo su -s /bin/bash asf # 给无登录权限的asf用户, 临时分配bash环境并登录
# 给指定的系统用户安装 dotnet wget https://dot.net/v1/dotnet-install.sh -O /var/lib/asf/dotnet-install.sh chmod +x /var/lib/asf/dotnet-install.sh /var/lib/asf/dotnet-install.sh --channel LTS
echo 'export DOTNET_ROOT=$HOME/.dotnet' >> ~/.bashrc echo 'export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools' >> ~/.bashrc source ~/.bashrc # 激活生效
# 最后确认以 asf 系统用户是否能够启动完成, 之后就可以退出当前账户 dotnet --version # 确保激活环境配置
# 完成之后就能退出当前系统用户, 目前系统的配置已经准备完成 exit
# 在此之前可以测试下以 asf 系统用户运行, 没问题就中断该进程 sudo -u asf /var/lib/asf/bin/ArchiSteamFarm --no-restart --service --system-required
# 创建系统单元 sudo touch /etc/systemd/system/archi-steam-farm.service
|
之后就是准备编写系统测试单元了, 其实 /var/lib/asf/bin 目录下有个 [email protected] 就是官方提供的多用户系统单元;
但是这个针对多用户的 systemd 模板其实没什么必要, 一般只需要单独系统用户即可, 具体 archi-steam-farm.service 内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| [Unit] Description=ArchiSteamFarm Service Documentation=https://github.com/JustArchiNET/ArchiSteamFarm/wiki After=network.target
[Service] Type=simple User=asf Group=asf WorkingDirectory=/var/lib/asf ExecStart=/var/lib/asf/bin/ArchiSteamFarm --no-restart --service --system-required Restart=on-success RestartSec=1s
LimitNOFILE=65536 PrivateTmp=true CapabilityBoundingSet= DevicePolicy=closed LockPersonality=yes NoNewPrivileges=yes PrivateDevices=yes PrivateIPC=yes PrivateMounts=yes PrivateUsers=yes ProcSubset=pid ProtectClock=yes ProtectControlGroups=yes ProtectHome=read-only ProtectHostname=yes ProtectKernelLogs=yes ProtectKernelModules=yes ProtectKernelTunables=yes ProtectProc=invisible ProtectSystem=strict RemoveIPC=yes RestrictAddressFamilies=AF_INET AF_INET6 AF_NETLINK AF_UNIX RestrictNamespaces=yes RestrictRealtime=yes RestrictSUIDSGID=yes SecureBits=noroot-locked SystemCallArchitectures=native UMask=0077
[Install] WantedBy=multi-user.target
|
最后更新系统单元并且启动服务单元:
1 2 3 4 5
| sudo systemctl daemon-reload # 更新服务 sudo systemctl start archi-steam-farm.service # 启动服务 sudo systemctl status archi-steam-farm.service # 查看状态 sudo systemctl enable archi-steam-farm.service # 开机自动启动 # 后续访问 http://localhost:1242 就能进挂卡界面, 在这个界面也能手动配置新建机器人
|
不得不说这个 WebGUI 基本上都把该说明的配置都提供了, 所以只需要参照官方文档来配置即可.
现在的 ArchiSteamFarm 就是运行在 asf 系统最低权限下的进程, 并且拥有独立 dotnet 执行库不会对全局系统产生过多影响.
剩下的就是其他细碎的配置, 比如 WebGUI 访问最好是中间加个 NGINX 代理转发来过滤和监控非法IP(如果强行要暴露公网).
风险再次提醒: 本教程仅为技术交流, Steam 挂卡属于违规行为, 所有账号损失与技术风险均由使用者自行承担