forked from lunanting/cangku
17 lines
1.4 KiB
Markdown
17 lines
1.4 KiB
Markdown
# 生产部署(Docker)
|
||
|
||
生产实例使用 MySQL、Redis、Redis TLS 网关、Node.js 后端和部署注册服务容器。MySQL、后端与注册服务只监听内部网络或服务器回环地址;Nginx 暴露 `ck.yydd.ai:8443`,Redis TLS 网关暴露 `ck.yydd.ai:6380`。
|
||
|
||
服务器目录约定:
|
||
|
||
- `/opt/cangku/app`:仓库代码和前端构建结果
|
||
- `/opt/cangku/shared`:权限为 `0700` 的环境配置
|
||
- `/opt/cangku/data`:MySQL、Redis 和部署注册服务持久数据
|
||
- `/www/wwwroot/cangku-acme`:Let's Encrypt HTTP-01 校验目录
|
||
|
||
真实密码、JWT 密钥、部署 Key 和第三方数据库配置不得写入仓库。`mysql.env`、`redis.env`、`backend.env` 和 `bootstrap.env` 只在服务器生成并保持 `0600` 权限。
|
||
|
||
SSH 隧道账号只接受由注册服务 CA 签发的短期证书,只允许转发到服务器 `127.0.0.1:3307`,并关闭终端、TTY、代理转发和密码认证。生产主机的 SSH 管理账号使用独立密钥,关闭密码登录。
|
||
|
||
Redis 原始端口不映射到宿主机。公网 `6380` 只接受 TLS,注册服务为每台设备创建独立 ACL 账号;停用安装会删除该账号。ACL 保存在 Redis 数据卷的 `users.acl`,注册与撤销后立即执行 `ACL SAVE`,容器重启不会丢失设备账号。证书文件应归属 HAProxy 容器的 `99:99` 并保持 `0600`,续期后需重新生成 `/opt/cangku/shared/redis-tls.pem`、恢复该属主并重启 TLS 网关。
|