Skip to content

部署形态总览

AutoRouter 的官方部署路径目前是两条,差别在于「镜像是否由 CI 构建、由谁把 docker compose 拉到服务器、由谁维护 .env」。CLIProxyAPI 受管 sidecar 是叠加在任一主路径之上的可选形态。本页说明这两条主路径与叠加形态的适用范围,便于在动手之前选定方向,避免后续把两条路径的命令混用。

两条主路径

路径镜像来源docker compose 文件来源.env 维护方适合场景
A. 源码 + docker compose本地从 Dockerfile 构建,或从 ghcr.io/g1331/autorouter 拉取已发布镜像仓库内 docker-compose.yml手工拷贝 .env.example 后编辑个人服务器、临时验证、与项目同步开发
B. CI + 远端 SSH(deploy-personal.ymlrelease.yml 在打 tag 时构建并推送到 ghcr.io/g1331/autorouter:<tag>部署作业通过 curl 从对应 tag 的 raw.githubusercontent.com 拉到服务器部署作业首次运行时自动生成,缺失字段会用 openssl rand 随机填充个人长期服务器、希望按 release tag 升级回滚、不愿意把 GitHub Actions 之外的部署脚本带上服务器

两条路径产出的运行形态是等价的——都是 autorouterdb 两个容器、共享 autorouter-net bridge 网络、两个 named volume(autorouter-datapostgres-data)。区别只在「谁把这些文件放到服务器、谁负责更新它们」。

路径 A:源码 + docker compose

适合直接对接本地开发节奏的部署。最短命令链是:

bash
git clone https://github.com/g1331/AutoRouter.git
cd AutoRouter
cp .env.example .env       # 然后按需修改 .env 中的密钥
docker compose up -d

镜像默认值在 docker-compose.yml 中:

yaml
image: ${AUTOROUTER_IMAGE:-ghcr.io/g1331/autorouter:latest}

AUTOROUTER_IMAGE 未设置时使用 latest tag。若希望与某个具体 release 对齐,请在 .env 中显式 pin 到 ghcr.io/g1331/autorouter:v<version> 或带 digest 的 ghcr.io/g1331/autorouter@sha256:<digest>,避免 latest 漂移。

完整步骤见 快速开始(源码 docker compose),每个环境变量字段的语义见 环境变量参考

路径 B:CI + 远端 SSH(deploy-personal.yml

适合个人长期服务器的「按 release 升级 / 按 tag 回滚」节奏。部署的触发方式不是 push,而是手工在 GitHub Actions 页面对 deploy-personal.yml 触发 workflow_dispatch,输入三个参数:

输入含义形式
image_ref要部署的镜像引用v0.1.0(自动补全 ghcr.io/g1331/autorouter: 前缀),或 ghcr.io/... 完整引用,或 sha256:... digest
environment_nameGitHub Environment 名称默认 personal-production,作业会绑定到该 environment 的 secrets 与审批策略
confirm_release_id用于二次确认的 release tag例如 v0.1.0;作业会校验该 tag 存在并在 origin/master 路径上

工作流通过 appleboy/ssh-action 登录目标服务器、mkdir -p ${DEPLOY_DIR}(默认 /opt/autorouter,可由 secret DEPLOY_DIR 覆盖)、curl 拉对应 tag 的 docker-compose.yml、首次部署时自动生成 .envPOSTGRES_PASSWORD / ENCRYPTION_KEYopenssl rand 随机填充,ADMIN_TOKEN 来自 GitHub secret),最后执行 docker pulldocker compose up -d --remove-orphans。完成后还会通过 /api/health 与一次完整代理 smoke test 校验部署可用性。

需要在 GitHub 上配置的 secrets:

Secret必填默认值用途
SERVER_HOST目标服务器主机名或 IP
SERVER_USERSSH 登录用户
SSH_PRIVATE_KEYSSH 私钥
SERVER_PORT22SSH 端口
DEPLOY_DIR/opt/autorouter部署目录
ADMIN_TOKEN管理 API token,作业会在 .env 中强制写入;缺失会终止部署

发布镜像本身由独立的 release.yml 完成:向 master 推送 v* 形式的 tag 即触发构建并推送到 ghcr.io。tag 命名遵守 vMAJOR.MINOR.PATCHvMAJOR.MINOR.PATCH-(alpha|beta).N,且必须指向 origin/master 上的提交。release notes 由 git-cliffcliff.toml 规则自动生成。

完整配置步骤参见 GitHub Actions CI 部署

何时叠加 CLIProxyAPI sidecar

CLIProxyAPI 是 AutoRouter 用来承接 Codex、Claude、Gemini 等 OAuth 上游账号的代理服务。它有两种与 AutoRouter 协作的形态,仓库为受管 sidecar 形态提供了可选叠加文件 docker-compose.cliproxy.yml

CLIProxyAPI 形态是否需要本仓库的叠加文件配置位置
外部 CLIProxyAPI(已独立部署或与 AutoRouter 分开运维)不需要在 AutoRouter 管理端「登记实例」时填写外部地址即可
受管 sidecar(与 AutoRouter 一起编排、统一启停)需要启动时同时引入 docker-compose.cliproxy.ymldocker compose -f docker-compose.yml -f docker-compose.cliproxy.yml up -d

叠加文件中 cliproxyapi 服务挂入仓库内的 cliproxy/config.yaml.templatecliproxy/docker-entrypoint.sh,入口脚本在容器启动时读取 CLIPROXY_* 环境变量并把模板渲染为实际配置。OAuth 凭据由 named volume cliproxy-auth 持久化,跨容器重建保留登录状态。该服务默认仅在 autorouter-net 内可达,AutoRouter 通过服务名 cliproxyapi 访问;除非确有需要,不要解开端口映射对外暴露。

需要特别强调的是「容器服务名」与「localhost」的差别:在受管 sidecar 形态下,AutoRouter 与 CLIProxyAPI 是两个独立容器,AutoRouter 的「localhost」指向自身容器,不会到达 CLIProxyAPI。登记实例时的代理地址必须填写 http://cliproxyapi:8317,使用同一 Docker 网络中的服务名解析。

路径与叠加形态的组合

两条主路径与 CLIProxyAPI 叠加可以任意组合,常见组合如下:

主路径是否带 sidecar启动命令适用
A. 源码 + docker composedocker compose up -d只需要常规上游(OpenAI / Anthropic 等普通 API Key)
A. 源码 + docker composedocker compose -f docker-compose.yml -f docker-compose.cliproxy.yml up -d本地或个人服务器同时治理 Codex / Claude / Gemini OAuth 账号
B. CI + 远端 SSHdeploy-personal.yml 触发即完成远端服务器按 release tag 升级,且不需要 OAuth 类上游
B. CI + 远端 SSHdeploy-personal.yml 完成后手工补 sidecar远端服务器需要 OAuth 类上游,但 deploy-personal.yml 不会自动配置 sidecar,须按 CI 部署后追加 CLIProxyAPI sidecar 手工补齐

deploy-personal.yml 当前只拉主 docker-compose.yml,不会拉 docker-compose.cliproxy.ymlcliproxy/ 目录,也不会维护 .env 中的 CLIPROXY_* 段。因此「CI 部署 + sidecar」是一条两步路径:先用 CI 完成 AutoRouter 主部署,再手工把 sidecar 资料补到服务器。

不在本页范围内

下列内容由其他专门页面承载,避免本页膨胀成「全量部署手册」:

Released under the MIT License.