Docker 安装(外部 Caddy)
这种方式里,NocoBase 应用容器和 Caddy 容器分别运行。你可以先按 Docker 安装(内置 Nginx) 完成基础安装,再把入口切换为外部 Caddy 容器。
什么时候用这种方式
- 希望把 NocoBase 和 Web 服务器分开部署
- 希望用 Caddy 简化反向代理和 HTTPS 配置
- 希望只对外暴露代理容器,应用容器只在内部网络通信
docker-compose.yml 示例
下面的示例使用镜像:nocobase/nocobase:latest-full-no-nginx。
这里的 13000:80 只是为了本地测试方便,避免直接占用宿主机的标准端口。生产环境通常不会继续使用 13000:80,而是让外部 Caddy 直接映射宿主机的 80 和 443。
关键点
NOCOBASE_EXTRACT_CLIENT_ASSETS=true用于提取前端静态资源,并生成代理配置NOCOBASE_PROXY_PROVIDER=caddy表示生成 Caddy 配置NOCOBASE_PROXY_UPSTREAM_HOST=app表示让 Caddy 容器通过 Compose 网络访问app服务./storage需要同时挂载到app和caddy容器,方便共享代理配置、静态资源和上传文件caddy容器启动前需要等待nocobase.caddy生成, 再通过ln -sf链接到/etc/caddy/Caddyfile- 自动生成的配置会把
APP_PUBLIC_PATH下的/files/和根路径/files/转发到 NocoBase,用于登录鉴权后的文件预览和下载 - 只需要对外暴露 Caddy 容器端口。测试时可以先用
13000:80,生产环境通常直接暴露宿主机的80和443,而app服务不需要对宿主机暴露端口
如果使用宿主机本地 Caddy
如果你的 Caddy 不是运行在 Docker 容器里,而是直接安装在宿主机上,建议单独使用一份 docker-compose.yml。这种情况下,app 需要直接对宿主机暴露端口,同时代理相关环境变量也要改成宿主机视角。
可以参考下面的 docker-compose.yml:
其中:
NOCOBASE_PROXY_STORAGE_PATH需要写成宿主机上的storage绝对路径NOCOBASE_PROXY_UPSTREAM_HOST需要改成127.0.0.1app服务需要保留ports,这样宿主机本地 Caddy 才能通过127.0.0.1:13000访问到应用
启动 app 容器后,再在宿主机上等待配置文件生成,并把它链接到本地 Caddy 配置路径:
如果你的宿主机 Caddy 没有使用 /etc/caddy/Caddyfile,需要把链接路径改成你自己的配置路径。通常来说,保持 nocobase.caddy 作为主入口文件会更稳妥,不建议手动拆开后再复制内容。
如果你没有使用自动生成的配置,而是自行维护 Caddy,请确认 /files/* 及 APP_PUBLIC_PATH 下对应的文件路径会转发到 NocoBase,并且这些规则位于 SPA 回退规则之前。完整示例见 Caddy 反向代理。
相关链接
- Docker 安装(内置 Nginx) — 从单容器安装开始
- Caddy 静态资源代理 — 了解生成的 Caddy 配置

