diff --git a/.gitea/act-runner/README.md b/.gitea/act-runner/README.md index aad4f4d..0342656 100644 --- a/.gitea/act-runner/README.md +++ b/.gitea/act-runner/README.md @@ -48,6 +48,59 @@ docker compose up -d | `docker: command not found` | job 容器无 Docker CLI | 工作流已指定 act 镜像;或 runner 改用 catthehacker/ubuntu | | `Cannot connect to Docker daemon` | 未挂载 docker.sock | 按上文修改 config.yaml 并重启 runner | | `node not in PATH` | job 镜像无 Node | 标签映射改用 catthehacker/ubuntu:act-22.04 | +| `http: server gave HTTP response to HTTPS client` 且 token 指向 `127.0.0.1` | **Gitea 容器 registry 配置/反代错误** | 见下文「Registry 登录失败」 | + +## Registry 登录失败(127.0.0.1 / HTTP vs HTTPS) + +若 `docker login git.rc707blog.top` 报错类似: + +```text +Get "https://127.0.0.1:xxxxx/v2/token?...": http: server gave HTTP response to HTTPS client +``` + +说明 Gitea 把 **Docker 认证 token 地址** 配成了本机内网地址,CI runner 访问不到。需在 **Gitea 服务器** 修复,而非改 workflow。 + +### 1. 检查 `app.ini` + +```ini +[server] +ROOT_URL = https://git.rc707blog.top/ +; 内部通信用,勿写成对外域名 +LOCAL_ROOT_URL = http://127.0.0.1:3000/ + +[packages] +ENABLED = true +``` + +`ROOT_URL` 必须与浏览器访问 Gitea 的 **HTTPS 外网地址** 完全一致(含末尾 `/`)。 + +### 2. 反向代理必须转发 `/v2` 并带上头 + +Container Registry 固定使用根路径 `/v2`。Nginx 示例: + +```nginx +location / { + client_max_body_size 0; + proxy_pass http://127.0.0.1:3000; + 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; +} +``` + +关键:`X-Forwarded-Proto: https` 和正确的 `Host: git.rc707blog.top`。 + +### 3. 在 runner 宿主机验证(修复后) + +```bash +curl -I https://git.rc707blog.top/v2/ +echo "$REGISTRY_TOKEN" | docker login git.rc707blog.top -u rose_cat707 --password-stdin +``` + +应返回 `401 Unauthorized`(正常,表示 registry 可达)且 `docker login` 显示 **Login Succeeded**。 + +参考:[Gitea 反向代理文档](https://docs.gitea.com/administration/reverse-proxies) ## Gitea Runner v0.6.x(个人 runner) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 01f49d1..d4142a0 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -97,6 +97,7 @@ jobs: docker login "${{ env.REGISTRY }}" -u "${{ gitea.actor }}" --password-stdin - name: Build and push + shell: bash env: GITEA_SHA: ${{ gitea.sha }} GITEA_REF: ${{ gitea.ref }}