1 背景
目前 n8n 的官方镜像仓库是 docker.n8n.io/n8nio/n8n(以前常用的是 docker.io/n8nio/n8n),国内直接拉取经常超时或失败。以下两种主流且相对稳定的解决路径,按推荐顺序排列:
- 路径1:公共/第三方同步镜像源。这种方式最简单,0配置成本,网上推荐使用“轩辕镜像”,一直让我登录充钱,我很不喜欢,所以我没考虑这个方案。
- 路径2:个人镜像仓库。这种方式就是自己用腾讯云 CCR(个人版免费)做中转(最稳,长期可控,推荐生产/长期使用)。
2 步骤详解
开通 & 初始化腾讯云个人版容器镜像服务
- 登录腾讯云控制台 → 搜索「容器镜像服务」或直接访问:https://console.cloud.tencent.com/tcr
- 如果是首次使用,点击「实例管理」→ 选择“广州”(只有广州能创建个人版) → 「初始化密码」,你的腾讯云账号 ID(纯数字,例如 10001xxxxxxxxxx,在右上角头像 → 基本信息 里能看到)

- 初始化个人版实例(会要求设置一个命名空间,例如
myuser或n8n-mirror,全局唯一,记下来)
创建镜像仓库(可选但推荐)
- 左侧导航 →「镜像仓库」→「新建」
- 命名空间:选你刚才创建的
- 仓库名称:建议叫
n8n(或n8n-mirror) - 类型:公有(最方便,拉取不用登录)或私有(更安全,但每次都要 docker login)
- 创建后会得到完整镜像地址前缀,例如:
ccr.ccs.tencentyun.com/myuser/n8n
在能访问外网的环境(强烈推荐 GitHub Actions)同步镜像
方式A:最简单 – 用 GitHub Actions + crane / skopeo / regctl 等工具(推荐)
新建一个 GitHub 仓库(名字随便,例如 docker-sync-n8n)
在仓库 Settings → Secrets and variables → Actions 新增以下 Repository secret:
变量名 说明 示例值 TCR_USERNAME 10001xxxxxxxxxx 你的腾讯云账号 ID(纯数字) TCR_PASSWORD 你刚才设置/重置的固定密码 个人版登录密码 TCR_NAMESPACE 你的命名空间 einscat 在仓库创建
.github/workflows/sync-n8n.yml文件,内容示例(使用 crane 工具,简单可靠):
name: Sync n8n to TCR (using skopeo) on: workflow_dispatch: # 手动触发(用于测试) schedule: - cron: '0 3 * * 0' # 每周日 UTC 03:00 自动同步 jobs: sync: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install skopeo run: | sudo apt-get update sudo apt-get install -y skopeo - name: Clean old auth (optional but safe) run: rm -f ~/.docker/config.json || true - name: Login to Tencent TCR Personal run: | echo "${{ secrets.TCR_PASSWORD }}" | skopeo login ccr.ccs.tencentyun.com \ --username ${{ secrets.TCR_USERNAME }} --password-stdin echo "Login completed." skopeo inspect docker://ccr.ccs.tencentyun.com/${{ secrets.TCR_NAMESPACE }}/n8n:latest || echo "Inspect failed (normal if image not exist yet)" # 同步主 n8n 镜像 - name: Copy n8n:latest from official to TCR run: | skopeo copy --remove-signatures \ docker://docker.n8n.io/n8nio/n8n:latest \ docker://ccr.ccs.tencentyun.com/${{ secrets.TCR_NAMESPACE }}/n8n:latest - name: Optional - Copy specific version (e.g. if you want pinned) run: | # 取消注释下面行来同步特定版本 # skopeo copy --remove-signatures \ # docker://docker.n8n.io/n8nio/n8n:1.53.2 \ # docker://ccr.ccs.tencentyun.com/${{ secrets.TCR_NAMESPACE }}/n8n:1.53.2如果仓库是公有的,推送后拉取不用登录;如果是私有,服务器上也要 docker login 同样用账号ID + 密码
- 提交后去 Actions 页面手动触发一次 workflow,等待几分钟~十几分钟完成。
成功后,你的镜像地址就是:
ccr.ccs.tencentyun.com/einscat/n8n:latest在国内服务器上拉取使用
如果你创建的是公有仓库:
docker pull ccr.ccs.tencentyun.com/einscat/n8n:latest如果是私有仓库,先登录:
docker login --username=你的腾讯云账号ID ccr.ccs.tencentyun.com # 密码就是你 TCR 个人版设置的访问凭证密码(控制台-我的镜像-访问凭证)
然后正常
docker pull即可。
腾讯云个人版 TCR 的登录方式跟企业版/标准版不一样,它不使用 AccessKey/SecretKey 来做 crane/docker login,而是用腾讯云账号的数字 ID 作为 username + 你手动设置的固定登录密码。