feat: add jetboard deployment manager

This commit is contained in:
JetSprow
2026-05-01 01:50:37 +10:00
parent 4dd2f9280f
commit 6d6489817d
9 changed files with 1854 additions and 18 deletions

View File

@@ -99,8 +99,12 @@ J-Board Lite 面板和 Agent 使用相对独立的版本节奏。
| `prisma/schema.prisma` | 数据模型事实源。 |
| `data/GeoLite2-City.mmdb` | 默认 GeoIP 城市库。 |
| `agent/jboard-agent` | Go Agent 源码、构建脚本和 Agent 文档。 |
| `scripts/install-jboard-panel.sh` | 面板一键安装向导。 |
| `scripts/upgrade-jboard-panel.sh` | 面板升级脚本。 |
| `scripts/install-jetboard-standalone.sh` | 不使用 Docker 的面板一键安装向导。 |
| `scripts/uninstall-jetboard-standalone.sh` | standalone 部署一键卸载脚本。 |
| `scripts/jetboard.sh` | Docker / standalone 共用的 `jetboard` 管理命令入口。 |
| `scripts/install-jboard-panel.sh` | Docker 面板一键安装向导。 |
| `scripts/upgrade-jboard-panel.sh` | Docker 面板升级脚本。 |
| `scripts/uninstall-jboard-panel.sh` | Docker 面板一键卸载脚本。 |
| `scripts/install-jboard-agent.sh` | Agent 安装脚本。 |
| `scripts/upgrade-jboard-agent.sh` | Agent 升级脚本。 |
| `docs/API.md` | HTTP 接口与 Server Actions 参考。 |
@@ -121,21 +125,23 @@ J-Board Lite 面板和 Agent 使用相对独立的版本节奏。
| `DATABASE_URL` | SQLite 文件地址 | 本地默认 `file:./storage/jboard.db`Docker 部署时 Compose 会覆盖为容器内 `/app/storage/jboard.db`。 |
| `GEOIP_MMDB_PATH` | GeoIP 城市库 | 默认 `data/GeoLite2-City.mmdb`。可换成自己的 MaxMind City MMDB。 |
| `JBOARD_LOG_CLEANUP_SCHEDULER` | 日志清理定时器 | 默认启用。设为 `false` 可关闭进程内自动清理任务。 |
| `ADMIN_EMAIL` / `ADMIN_PASSWORD` / `ADMIN_NAME` | 初始管理员 | 首次 `db:seed` 创建管理员账号。已有数据库不会强制重置旧管理员密码。 |
| `ADMIN_EMAIL` / `ADMIN_PASSWORD` / `ADMIN_NAME` | 初始管理员 | 首次 `db:seed` 创建管理员账号。已有数据库不会强制重置旧管理员密码;忘记密码时执行 `jetboard reset`。 |
SMTP 邮件服务、注册邮箱验证开关、支付方式、3x-ui 节点等业务配置在管理后台填写,不建议写进 `.env`
日志清理在后台“系统设置 -> 日志清理”中配置。默认每天最多自动清理一次 30 天前日志,范围包含审计日志、任务记录、流量日志、节点延迟日志、风控访问日志和风控事件;正在生效的用户端风控限制不会被自动清理。管理员也可以在后台选择日志范围和天数,立即手动清理过期日志。
## 一键部署
## Standalone 一键部署
适合全新 Linux 服务器。脚本会安装基础依赖、安装 Docker 与 Compose 插件、拉取代码、生成 `.env`、初始化数据库并启动面板
适合不想使用 Docker 的全新 Linux 服务器。脚本会安装基础依赖、安装 Node.js、拉取代码、生成 `.env`、构建 Next.js standalone 产物、初始化 SQLite并注册 systemd 服务
```bash
bash <(curl -fsSL https://raw.githubusercontent.com/JetSprow/J-Board-Lite/main/scripts/install-jboard-panel.sh)
bash <(curl -fsSL https://raw.githubusercontent.com/JetSprow/J-Board-Lite/main/scripts/install-jetboard-standalone.sh)
```
安装和更新脚本会自动检测 CPU、宿主机内存、Docker 可用内存和 Docker 数据盘空间。常规机器使用 Docker 默认构建策略1C、低于 2GB 内存或 Docker 可用空间低于 8GB 的小机器会自动进入低资源模式,降低 Compose 并发、npm 编译并发和 Next 构建堆内存,并把镜像分步构建,构建会更慢但峰值占用更低。
安装和更新脚本会自动检测 CPU、内存和安装目录可用空间。常规机器使用 npm/Next 默认构建策略1C、低于 2GB 内存或可用空间低于 8GB 的小机器会自动进入低资源模式,降低 npm 编译并发和 Next 构建堆内存,构建会更慢但峰值占用更低。
安装完成后会写入 `/etc/jetboard.conf` 并安装全局命令 `jetboard`。直接执行 `jetboard` 会打开 JetBoard 管理菜单,后续更新、状态查看、日志查看、管理员密码重置和卸载都可以从这里完成。
脚本会交互询问:
@@ -152,20 +158,20 @@ bash <(curl -fsSL https://raw.githubusercontent.com/JetSprow/J-Board-Lite/main/s
也可以通过环境变量覆盖默认行为:
```bash
APP_DIR=/opt/jboard GH_REPO=JetSprow/J-Board-Lite BRANCH=main bash <(curl -fsSL https://raw.githubusercontent.com/JetSprow/J-Board-Lite/main/scripts/install-jboard-panel.sh)
APP_DIR=/opt/jboard GH_REPO=JetSprow/J-Board-Lite BRANCH=main bash <(curl -fsSL https://raw.githubusercontent.com/JetSprow/J-Board-Lite/main/scripts/install-jetboard-standalone.sh)
```
构建资源策略也可以手动覆盖:
```bash
# 自动判断,默认值
JBOARD_BUILD_PROFILE=auto ./scripts/upgrade-jboard-panel.sh
JBOARD_BUILD_PROFILE=auto jetboard update
# 强制低资源慢速构建
JBOARD_BUILD_PROFILE=low ./scripts/upgrade-jboard-panel.sh
JBOARD_BUILD_PROFILE=low jetboard update
# 强制常规构建,不额外限制并发或 Node heap
JBOARD_BUILD_PROFILE=normal ./scripts/upgrade-jboard-panel.sh
JBOARD_BUILD_PROFILE=normal jetboard update
```
脚本完成后会输出:
@@ -180,6 +186,75 @@ JBOARD_BUILD_PROFILE=normal ./scripts/upgrade-jboard-panel.sh
请把管理员密码保存到密码管理器。已有数据库重复部署时,脚本会尽量沿用现有配置,不会随意重置管理员。
## JetBoard 管理命令
Docker 和 standalone 一键脚本都会安装全局命令。安装后可在任意目录执行:
```bash
jetboard
```
常用命令:
```bash
jetboard status # 查看当前部署状态
jetboard update # 拉取最新代码、备份 SQLite、按机器配置更新
jetboard reset # 重置或创建管理员账号密码
jetboard logs # 查看服务日志
jetboard restart # 重启面板
jetboard uninstall # 完整卸载当前部署
```
`jetboard` 会读取 `/etc/jetboard.conf` 中的部署模式Docker 部署会调用 Docker Composestandalone 部署会调用 systemd 和本机构建。`jetboard update` 和安装脚本使用同一套资源检测逻辑强机器不额外限制构建1C1G、小内存或可用空间不足时自动进入低占用慢速构建。忘记管理员账号密码时执行 `jetboard reset`,按提示输入管理员邮箱和新密码;如果该管理员不存在,会自动创建并激活为管理员。
完整一键卸载 standalone 部署:
```bash
bash <(curl -fsSL https://raw.githubusercontent.com/JetSprow/J-Board-Lite/main/scripts/uninstall-jetboard-standalone.sh)
```
非交互卸载:
```bash
UNINSTALL_CONFIRM=YES bash <(curl -fsSL https://raw.githubusercontent.com/JetSprow/J-Board-Lite/main/scripts/uninstall-jetboard-standalone.sh)
```
卸载脚本会先备份 `.env``storage/``backups/``/root/jboard-uninstall-backup-时间.tar.gz`,再删除 systemd 服务、全局命令、`/etc/jetboard.conf` 和安装目录。
## Docker 一键部署
适合希望用 Docker Compose 隔离运行环境的服务器。脚本会安装基础依赖、安装 Docker 与 Compose 插件、拉取代码、生成 `.env`、初始化数据库并启动面板。
```bash
bash <(curl -fsSL https://raw.githubusercontent.com/JetSprow/J-Board-Lite/main/scripts/install-jboard-panel.sh)
```
Docker 安装和更新脚本会自动检测 CPU、宿主机内存、Docker 可用内存和 Docker 数据盘空间。常规机器使用 Docker 默认构建策略1C、低于 2GB 内存或 Docker 可用空间低于 8GB 的小机器会自动进入低资源模式,降低 Compose 并发、npm 编译并发和 Next 构建堆内存,并把镜像分步构建,构建会更慢但峰值占用更低。
Docker 一键脚本也会安装 `jetboard` 全局命令,并写入 Docker 部署模式。常用操作:
```bash
jetboard status # docker compose ps
jetboard update # 拉取代码、备份 SQLite、按机器配置重建镜像
jetboard reset # 通过 init 容器重置或创建管理员
jetboard logs # docker compose logs -f app
jetboard uninstall # 备份后删除 Compose 服务、volume 和安装目录
```
完整一键卸载 Docker 部署:
```bash
bash <(curl -fsSL https://raw.githubusercontent.com/JetSprow/J-Board-Lite/main/scripts/uninstall-jboard-panel.sh)
```
非交互卸载:
```bash
UNINSTALL_CONFIRM=YES bash <(curl -fsSL https://raw.githubusercontent.com/JetSprow/J-Board-Lite/main/scripts/uninstall-jboard-panel.sh)
```
卸载脚本会先备份 `.env``backups/` 和 Docker SQLite volumeroot 执行时保存到 `/root/jboard-docker-uninstall-backup-时间.tar.gz`,非 root 直接执行时保存到当前用户 HOME随后执行 `docker compose down --volumes --remove-orphans`,最后删除全局命令、`/etc/jetboard.conf` 和安装目录。Docker 本身不会被删除。
## 手动 Docker 部署
首次启动: