如何使用云服务器挂卡

我很久没挂卡了,这两天看见曾哥在捣鼓 ASF 我也重新跑了下这玩意,发现总挂卡时间好像有点长,台式机常开费电,干脆丢服务器上吧。

使用 Windows 服务器

这个是最简单的办法,直接远程到服务器,像操作自己的 Windows 电脑一样操作服务器就好,你甚至可以直接拷贝自己机器上的 ASF 和配置文件到服务器上直接运行——只需输入两步验证码。

使用 Linux 服务器

我本来以为在 Linux 环境跑需要安装 .NET Core SDK,后来发现有直接可以使用的 release,省了安装 dotnet 的步骤。

我使用的 SSH 工具是 Xshell,传输工具是 Xftp,其他工具用法类似。

下载 ASF

2019 年 9 月 26 日的最新稳定版本是 4.0.4.2,直接使用 wget 下载:

wget -S https://github.com/JustArchiNET/ArchiSteamFarm/releases/download/4.0.4.2/ASF-linux-x64.zip
mkdir asf
sudo apt install unzip
unzip -d ./asf ASF-linux-x64.zip
rm ASF-linux-x64.zip

其他版本修改 4.0.4.2 数字即可。

修改配置文件

如果你在自己的机器上运行过 ASF 那么可以省略这一步。

这里我使用最小配置,有更多需求时可以参考 wiki 修改配置。

前往 ASF web config,我们至少有两个文件需要生成。首先是程序配置,点击 ASF,选择对应的 ASF 版本,填写必须字段并选取需要的特性,下载即可。以下是我的配置参考:

{
  "s_SteamOwnerID": "xxxxx",
  "IPC": true,
  "Headless": false,
  "IPCPassword": "password"
}
  • s_SteamOwnerID 是 64 位 SteamID,可以在 SteamDB 查询自己的 ID。
  • IPC 可提供网页后台,方便使用,关于 IPC 的更多信息可以查看其 wiki
  • IPCPassword 是网页登录密码。
  • Headless 影响命令行是否接受输入,建议直接设置为 false

然后是 bot 配置文件,输入 steam 账户密码和 bot 名即可,json 文件大致如下:

{
  "SteamLogin": "bolitao",
  "SteamPassword": "passwd",
  "Enabled": true
}

将配置文件传至服务器

这两个 json 文件准备好后用 Xftp 丢到 asf 目录下的 config 文件夹下就好叻。

配置 IPC

如果需要 IPC 请放行防火墙和安全组的 1242 端口。

config 文件夹下创建 IPC.config 文件:

vim IPC.config

官方模板:

{
    "Kestrel": {
        "Endpoints": {
            "example-http4": {
                "Url": "http://127.0.0.1:1242"
            },
            "example-http6": {
                "Url": "http://[::1]:1242"
            },
            "example-https4": {
                "Url": "https://127.0.0.1:1242",
                "Certificate": {
                    "Path": "/path/to/certificate.pfx",
                    "Password": "passwordToPfxFileAbove"
                }
            },
            "example-https6": {
                "Url": "https://[::1]:1242",
                "Certificate": {
                    "Path": "/path/to/certificate.pfx",
                    "Password": "passwordToPfxFileAbove"
                }
            }
        },
        "PathBase": "/"
    }
}

我偷点懒,直接配成允许本地访问,然后再用 Nginx 代理出去:

{
    "Kestrel": {
        "Endpoints": {
            "HTTP": {
                "Url": "http://127.0.0.1:1242"
            }
        }
    }
}

如果没有域名/不设置代理,可以把 Url 部分改为 http://*:1242,使用 ip:1242 进行访问

注:这样直接粗暴的方法可能会有潜在安全风险,请至少设置 IPCPassword

Nginx

在 Nginx 配置目录添加一个 asf.conf 配置,然后在 nginx.confinclude ASF 的配置。

一个最简单的配置文件内容如下:

server {
  server_name asf.bolitao.xyz;

  client_max_body_size 128M;

  location / {
    proxy_pass http://127.0.0.1:1242;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

之后使用 certbot 自动配置 SSL:

sudo certbot --nginx

Certbot

运行 ASF

安装一些必要依赖:

sudo apt install libcurl3 libicu60 libkrb5-3 liblttng-ust0 libssl1.0.0 zlib1g # Ubuntu 16.04

可执行权限:

cd asf; chmod +x ArchiSteamFarm

运行 ASF:

./ArchiSteamFarm

后台运行

上述方法在关闭 SSH 窗口后程序也会自动结束,使程序常驻运行方法很多,这里使用 screen:

sudo apt install screen
screen -S asf
~/apps/asf/ArchiSteamFarm

# 其他 screen 命令
screen -ls # 列出运行中的 screen,会给出 pid,可以使用 kill -9 pid 结束进程
screen -r abc # 返回到名为 abc 的 screen

这样子我们的 ASF 云挂卡就跑起来了:

而且不论身处何地只要有网,我们都可以登录 ip:port 或域名来查看 ASF 的运行状态、进行 ASF 相关的操作:

加载评论