asfcn-autobuild 是 ArchiSteamFarm + Caddy(Steam 社区反代)的多架构 Docker 镜像。它不靠容器内自我更新,而是由 GitHub Actions 定时轮询上游稳定版,有新版就自动重建并推送。
# 拉取(多架构镜像,amd64 / arm64 同一地址) docker pull ghcr.io/dc1024/asfcn-autobuild:latest
常见做法是让容器里的 ASF 自己更新,运行期再去取新版本。这个镜像换了个位置:把版本更新放到镜像构建阶段 —— 基础镜像每次构建都取官方最新稳定版,容器只管跑,不操心升级。对应的取舍是下面四条。
CI 取官方最新稳定版作为基础镜像重建,更新发生在构建阶段,容器启动时就已经是新版。
容器内不跑版本自更新,也就不需要在运行期维护一条对外的更新链路。升级只需拉新镜像。
不必在每台机器上放升级脚本或定时任务,版本跟进全部在 CI 完成,各设备配置完全一致。
Caddy 只反代 Steam 社区 / 商店 / API,不代理其它站点 —— 需要维护的外部地址更少,也更不容易被外部变动牵连。
版本守卫让流水线只在「上游确实更新了」时才构建,既不空转消耗额度,也不会漏掉版本。
GitHub Actions 按 schedule 每 2 小时唤醒一次,向 GitHub API 查询 JustArchiNET/ArchiSteamFarm 的最新稳定版 tag。
拿上游 tag 和本仓库已有的 git tag asf-<版本> 比对。已经构建过就直接跳过,一次构建都不浪费。
确实有新版本时,用 QEMU + buildx 构建 linux/amd64 与 linux/arm64 两套镜像,基础镜像取官方最新稳定版。
推送到 ghcr.io/dc1024/asfcn-autobuild,同时打上 :latest 与 :<ASF版本> 两个标签 —— 需要回滚时钉版本号即可。
构建成功后打 asf-<版本> git tag。它既是下次的守卫依据,也让仓库保持活动状态 —— 规避 GitHub「60 天无活动自动停用 schedule」。
所有设备无需任何脚本或定时任务,需要时跑 docker compose pull && up -d 即可。
把镜像地址换成下面这行即可。多架构,同一份配置在 x86 与 ARM 设备上通用。
services: asf: image: ghcr.io/dc1024/asfcn-autobuild:latest container_name: asf shm_size: 256mb ports: - 1242:1242 # ASF IPC / Web - 443:443 # Caddy(Steam 反代) volumes: - ./config:/app/config - ./logs:/app/logs - ./plugins:/app/plugins # 只放第三方插件 # ⚠️ 不要挂载 /asf restart: unless-stopped
docker compose pull && docker compose up -d
logs/ 与 plugins/ 里没有账号状态,用不着搬。但 config 里有个容易忽略的细节,它决定新机要不要重新登录。
bot.db 里存着登录令牌。两个文件一起搬过去,ASF 在新机上直接登录,不必重新验证。
少了 .db,ASF 会重新走一遍登录,可能触发 Steam Guard / 邮件令牌,甚至要重新过 2FA。
# 旧机:停容器,只打包 config docker compose stop tar -czf asf-config-$(date +%F).tar.gz -C /path/to/asf config # 新机:解包后直接起 tar -xzf asf-config-*.tar.gz -C /path/to/asf docker compose up -d
搬完在新机跑一次 verify.sh(下一节),确认 bot 已登录、反代通、没有重复插件报错。
仓库自带 verify.sh。在装了 docker 的宿主机、于 compose 文件所在目录执行,一条命令跑完 9 项,给出 PASS / FAIL 与退出码。
bash verify.sh # 需要 sudo 的机器: DOCKER="sudo docker" bash verify.sh
/asfheader_up Host,或还留着 github 反代,都会报
退出码 0 = 全过,1 = 有未通过项 —— 方便接进你自己的巡检脚本。顺带一个容易踩的点:ASF 的 IPC 用 Authentication 请求头鉴权(值就是 IPCPassword),不是 HTTP Basic,用 curl -u 会稳定拿到 401。
核心特色。CI 定时轮询上游稳定版,有新版自动重建,滞后上界就是轮询间隔。
linux/amd64 与 linux/arm64 同一镜像地址,NAS、小主机、ARM 盒子共用一份配置。
没有新版本就不构建,省下 CI 额度;同时用 git tag 保活,schedule 不会被自动停用。
保留原项目的 Steam 社区反代,并补上 header_up Host 以适配 Akamai 的 Host 校验,避免 bot 反复断连。
不追预发布,避免测试版带来的意外。对月更的稳定版而言,等于发布即跟进。
不需要在每台机器上放脚本、定时任务或更新逻辑,配置完全一致。
老教程挂载的那份除了 Steam 反代,还带着三段 github.com / github.io / raw.githubusercontent.com 反代,本镜像不依赖它(版本走镜像层)。而且挂载的宿主文件会完全盖住镜像内置版本 —— 想改反代就改内置那份,或干脆不挂。
宿主目录挂到 /asf 会盖住镜像里的新程序 —— 结果是「拉了新镜像也不更新」。旧配置里的这条挂载要删掉。
官方插件镜像内自带。放重复副本会让 ASF 两个目录都扫,启动刷几百行重复报错(功能无损,但很吵)。
ghcr.io 国内多数线路可直连,但非绝对。若设备拉不动,配置 HTTP 代理,或改用国内镜像仓库地址。