通过Docker快速部署ASF(ArchiSteamFarm)挂卡

今天来介绍一下超简单的使用 Docker 部署 ASF 的方法。在部署上,相对一般的部署,使用 Docker 会简单许多,今天我就来介绍一下如何使用 Docker 部署 ASF。

ArchiSteamFarm

这个软件就是用来 Steam 挂卡的,相信查到这篇文章的人应该都知道 Steam 挂卡是什么吧。在之前的一篇文章——在 Ubuntu 16.04 环境下使用 ASF(v3) 实现云挂卡里,我已经介绍了部署 ArchiSteamFarm 的一般流程,以及 ASF 的两步验证、IPC、在 Telegram 中管理 ASF 等内容,感兴趣的可以了解一下。

为什么使用 Docker

我也不想多介绍 Docker,大家可以自己去搜索一下。为什么要用 Docker 呢,那就是简单。

由于 Docker 确保了执行环境的一致性,不用在意系统环境,你只需要运行做好的 Docker 镜像,部署就完成了,又快又好。

步骤

安装 Docker

我是用一键脚本进行安装的,非常简便。

Ubuntu 系统使用以下脚本:

1
2
wget -qO- https://get.docker.com/ | sh
sudo service docker start

CentOS 系统使用以下脚本:

1
2
3
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo systemctl start docker

创建配置文件

创建文件夹

创建一个文件夹用于存储配置文件

1
mkdir /home/asf && cd /home/asf

创建配置文件

一样,我们需要创建 ASF 需要使用的配置文件。建议使用ASF 配置文件生成器进行生成ASF.jsonbotname.json文件,其中botname为机器人名称。

将生成的全局配置存储为ASF.json,生成的机器人配置存储为botname.json,可以将botname改成你喜欢的名称。

IPC 端口配置

在使用 docker 镜像的时候,需要让 IPC 在镜像内绑定到0.0.0.0:1242,否则外部无法访问。只需要添加配置文件IPC.config,填入以下内容。

1
2
3
4
5
6
7
8
9
{
"Kestrel": {
"Endpoints": {
"HTTP": {
"Url": "http://*:1242"
}
}
}
}

其他配置

如果还有其他需要配置的文件,也要将配置文件放置在此处,如 2FA 配置文件botname.maFile

启动 Docker 镜像

1
2
docker pull justarchi/archisteamfarm
docker run -it -p 127.0.0.1:1242:1242 -p [::1]:1242:1242 -v /home/asf:/app/config --name asf justarchi/archisteamfarm

注意将/home/asf改成你之前存储配置文件的文件夹。

这个命令运行后,将会进入镜像和程序进行交互,可能会有需要输入的内容,比如 Steam 的二次验证等。等程序正常运行后,按ctrl+P+Q撤出镜像并让镜像继续在后台执行。

这样运行下来,只有本地能够访问 1242 端口,建议保持这样,比较安全,可以使用 Nginx 进行反代 IPC 进行使用。

如果想要直接绑定到0.0.0.0:1242,可以将命令改成如下内容。

1
docker run -it -p 1242:1242 -v /home/asf:/app/config --name asf justarchi/archisteamfarm

ASF 的启动和停止

  • 启动: docker start asf
  • 停止: docker stop asf

Nginx 反代 IPC 配置

可以参考一下,由 ASF 作者提供。

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
server {
listen *:443 ssl;
server_name asf.mydomain.com;
ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/certificate.key;

location /Api/NLog {
proxy_pass http://127.0.0.1:1242;
# proxy_set_header Host 127.0.0.1; # Only if you need to override default host
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;

# We add those 3 extra options for websockets proxying, see https://nginx.org/en/docs/http/websocket.html
proxy_http_version 1.1;
proxy_set_header Connection "Upgrade";
proxy_set_header Upgrade $http_upgrade;
}

location / {
proxy_pass http://127.0.0.1:1242;
# proxy_set_header Host 127.0.0.1; # Only if you need to override default host
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
}
}