# 剧核工厂部署脚本

## 一键推送

在 Windows 项目根目录执行：

```bat
API\deploy\push.bat root@服务器IP
```

脚本会构建 WEB、ADMIN，交叉编译 Linux amd64 API，并上传二进制、静态文件、迁移、部署脚本以及 `workers`。默认增量推送不会上传本地 `API/.env`，服务器继续使用 `/etc/juyou_ai/juyou_ai.env`，避免 Windows 开发环境配置覆盖 Linux 生产配置。

仅上传、不执行服务器部署时也可以显式使用：

```bat
API\deploy\push.bat root@服务器IP stage-only
```

只有首次部署或明确需要整体替换服务器环境配置时，才使用：

```bat
API\deploy\push.bat root@服务器IP with-env
```

`with-env` 会把本地 `API/.env` 暂存为服务器 `/tmp/juyou_ai.env`。使用前必须确认其中的 FFmpeg、Python 和脚本路径适用于 Linux；普通增量部署不要使用该选项。

## 一键部署

上传完成后，在服务器执行：

```bash
sudo bash /opt/juyou_ai/deploy/one_click_deployment.sh
```

普通增量部署会继续使用 `/etc/juyou_ai/juyou_ai.env`。使用 `with-env` 推送时，部署脚本才会用 `/tmp/juyou_ai.env` 更新生产环境配置。

部署脚本会安装 `python3-pip`，并在缺失时安装 `faster-whisper 1.2.1`；同时会将 FFmpeg、Python 和音频识别脚本路径规范为 Linux 运行路径。`push.bat` 会在本机下载默认 `small` 模型，并在服务器缺少模型时上传到 `/opt/juyou_ai/models/faster-whisper-small`。服务器部署和运行阶段不会访问 Hugging Face；后续增量部署会保留并复用已经上传的模型。

项目目录固定为 `/opt/juyou_ai`，systemd 服务名固定为 `juyou_ai`，API 内部端口固定为 `8123`。脚本仅保存域名和证书邮箱；再次执行会自动复用配置。多个域名会全部作为 SAN 追加到同一张证书。脚本只复用输入域名对应的现有证书，不会扫描其他项目的证书；没有匹配证书但填写邮箱时使用本地 `API/acme/acme.sh` 申请 HTTPS，域名填 `_` 或未填写邮箱时使用 HTTP。systemd 从 `/etc/juyou_ai/juyou_ai.env` 加载环境变量，项目目录不会保留 `.env`。

API、AI Worker 和 HTTP 请求日志统一写入 `/var/log/juyou_ai/juyou_ai.log`。日志每天轮转，最多保留 14 份，单个文件超过 50MB 时会提前轮转；可使用 `sudo tail -f /var/log/juyou_ai/juyou_ai.log` 实时查看。

完整操作说明参见 [部署文档.md](部署文档.md)。

第三方接口、网址和密钥字段说明参见 [第三方说明及密钥.md](第三方说明及密钥.md)。

## 更新 acme.sh

```bash
sudo bash /opt/juyou_ai/deploy/update_acme.sh
```

更新脚本通过 jsDelivr CDN 下载 acmesh-official/acme.sh 的最新 master 单文件版本，不执行 GitHub clone。
