Skip to content

后端开启密码认证时 Caddy 反代缺少 Authorization 头 #159

Closed

Description

@sopyk

部署时遇到一个问题:当后端 opencode serve 配置了 OPENCODE_SERVER_PASSWORD 时,容器内置 Caddyfile.standalone 的 reverse_proxy 只转发 Host 头,不携带 Authorization 头,导致所有 /api/* 请求返回 401,前端页面无法连接后端。

建议在 README 的部署说明中补充以下配置指引:

后端开启了密码认证时

容器内置 Caddy 不会自动转发认证头。若后端配置了 OPENCODE_SERVER_PASSWORD,需要在 docker-compose 中挂载自定义 Caddyfile,并在 reverse_proxy 块中添加:

header_up Authorization "Basic <base64编码的用户名:密码>"

凭证生成:

echo -n "user:pass" | base64

compose 中增加 volumes 挂载:

volumes:
  - ./Caddyfile.standalone:/etc/caddy/Caddyfile.standalone:ro

Activity

  1. lehhair commented on Aug 29, 2026

    @lehhair
    Owner

    已修复,感谢反馈!

    原因

    前端在服务器连接界面填入用户名/密码后,会为每个请求携带 Authorization: Basic <base64> 头(src/api/http.ts 的 getAuthHeader)。但镜像内置的 Caddyfile.standalone 未显式转发该头到后端,部分反代场景下被丢弃,导致 /api/* 返回 401。

    修复内容(commit db9ff56f,已推送 dev/main)

    1. docker/Caddyfile.standalone:在 reverse_proxy 块中显式转发客户端 Authorization 头:
      header_up Authorization {http.request.header.Authorization}
      客户端未携带时 Caddy 会自动删除空头,不影响无认证场景。
    2. README / README_EN:在「Docker 部署(纯前端)」章节补充了密码认证时的部署说明,包括自定义 Caddyfile 的兜底示例(header_up Authorization + compose 挂载)。

    验证

    重新构建 frontend 镜像(或升级到包含该 commit 的镜像)后,在 UI 填好用户名/密码连接带密码认证的后端即可。若你用的是自定义 Caddyfile,按 README 中新增的示例手动加一行 header_up Authorization {http.request.header.Authorization} 即可。

    麻烦验证后如有问题再反馈,没问题可关闭此 issue。

  2. added a commit that references this issue on Aug 29, 2026
    db9ff56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions