negiix 更换成 caddy

This commit is contained in:
yml2213
2026-06-11 04:17:36 +08:00
parent 4b9ac0598f
commit c0403fc1ea
10 changed files with 194 additions and 82 deletions
+23 -8
View File
@@ -3,10 +3,17 @@
目标访问地址:
```text
http://hfb.221329.cc.cd:7890
https://hfb.221329.cc.cd
```
生产部署只暴露宿主机 `7890` 端口,避免和服务器已有的 `80``443` 服务冲突。后端、MySQL、Redis、MinIO 均通过 Docker 内网通信。
生产部署使用 Caddy 作为公网入口,只暴露宿主机 `80``443` 端口。Caddy 会自动申请和续签 HTTPS 证书,并直接托管前端静态资源(前端 `dist` 在构建 Caddy 镜像时打入);后端、MySQL、Redis、MinIO 均通过 Docker 内网通信。
部署前请确认:
- 域名 A 记录已解析到服务器公网 IP。
- 服务器安全组或防火墙已放行 `80/tcp``443/tcp`
- 服务器上没有其他服务占用 `80``443`
- 国内服务器如需对外访问,请先确认域名备案和云厂商限制。
## 1. 准备环境变量
@@ -17,6 +24,8 @@ cp backend/.env.prod.example backend/.env
编辑 `backend/.env`,至少替换以下占位值:
```text
CADDY_DOMAIN
CADDY_EMAIL
MYSQL_ROOT_PASSWORD
MYSQL_PASSWORD
MYSQL_DSN
@@ -39,9 +48,10 @@ STORAGE_SECRET_ACCESS_KEY
- 检查 `backend/.env` 是否仍指向 `127.0.0.1``localhost` 或占位值。
- 构建并启动生产容器。
- 通过 Caddy 自动申请或续签 HTTPS 证书。
- 等待 MySQL、Redis、MinIO 就绪。
- 按顺序执行尚未应用的数据库迁移。
- 重启后端并检查 `http://127.0.0.1:7890/api/health`
- 重启后端并检查 `https://你的域名/api/health`
如需部署完成后直接跟随查看后端日志:
@@ -64,9 +74,14 @@ backend/logs/app-YYYY-MM-DD.log
## 3. 手动启动服务
```bash
set -a
source backend/.env
set +a
docker compose -f deploy/docker-compose.prod.yml up -d --build
```
手动执行 `docker compose` 时需要先导出 `CADDY_DOMAIN``CADDY_EMAIL`,否则 Caddy 无法读取证书域名配置。优先推荐使用一键部署脚本,它会自动从 `backend/.env` 导出这两个变量。
## 4. 手动执行数据库迁移
通常直接使用一键部署脚本即可。确实需要手动迁移时,使用后端镜像内置的 goose:
@@ -86,15 +101,15 @@ docker compose -f deploy/docker-compose.prod.yml run --rm --no-deps backend \
## 5. 验证
```bash
curl http://127.0.0.1:7890/health
curl http://127.0.0.1:7890/api/health
curl https://你的域名/health
curl https://你的域名/api/health
```
浏览器访问:
```text
http://hfb.221329.cc.cd:7890
http://hfb.221329.cc.cd:7890/admin/login
https://hfb.221329.cc.cd
https://hfb.221329.cc.cd/admin/login
```
服务器安全组或防火墙需要放行 `7890/tcp`
Caddy 证书和 ACME 账号数据保存在 Docker 卷 `caddy_data``caddy_config` 中。不要随意删除这两个卷,否则 Caddy 会重新申请证书,频繁重建可能触发证书签发频率限制