2025-12-23 22:22:25 +08:00
2025-12-22 18:24:02 +08:00
2025-12-22 21:36:06 +08:00
2025-12-23 22:12:27 +08:00
2025-12-23 18:18:23 +08:00
2025-12-23 22:22:25 +08:00
2025-12-23 22:12:27 +08:00
2025-12-20 09:30:16 +08:00
2025-12-21 10:23:25 +08:00
2025-12-21 10:23:25 +08:00
2025-12-20 09:30:16 +08:00
2025-12-20 09:30:16 +08:00
2025-12-20 09:30:16 +08:00
2025-12-22 18:24:26 +08:00

白虎面板 (Baihu Panel)

轻量级定时任务管理系统

基于 Go + Vue 3 构建,单文件部署,开箱即用

功能特性快速开始配置说明开发指南


功能特性

📋 定时任务管理

  • 支持标准 Cron 表达式调度
  • 常用时间规则快捷选择
  • 任务启用/禁用状态切换
  • 手动触发执行
  • 任务超时控制

📝 脚本文件管理

  • 在线代码编辑器
  • 文件树形结构展示
  • 支持创建、重命名、删除文件/文件夹
  • 支持压缩包上传解压
  • 支持多文件批量上传

🖥️ 在线终端

  • WebSocket 实时终端
  • 支持常用 Shell 命令
  • 命令执行结果实时输出

📊 执行日志

  • 任务执行历史记录
  • 执行状态追踪(成功/失败/超时)
  • 执行耗时统计
  • 日志内容压缩存储
  • 支持按任务名称搜索
  • 日志自动清理

🔐 环境变量

  • 安全存储敏感配置
  • 变量值脱敏显示
  • 任务执行时自动注入

⚙️ 系统设置

  • 站点标题、标语自定义
  • 站点图标自定义(SVG
  • 分页大小配置
  • Cookie 有效期配置
  • 密码修改
  • 系统信息查看

🎨 界面特性

  • 响应式设计
  • 深色/浅色主题切换
  • 现代化 UI 组件

🔒 安全特性

  • JWT Token 认证
  • 密码加盐哈希存储
  • 启动时自动生成随机密钥
  • Cookie HttpOnly 保护

🚀 快速开始

方式一:Docker 部署(推荐)

使用预构建镜像:

docker run -d \
  --name baihu \
  -p 8052:8052 \
  -v $(pwd)/data:/app/data \
  -v $(pwd)/configs:/app/configs \
  -e TZ=Asia/Shanghai \
  --restart unless-stopped \
  ghcr.io/engigu/baihu:main

使用 Docker Compose

创建 docker-compose.yml

version: '3.8'

services:
  baihu:
    image: ghcr.io/engigu/baihu:main
    container_name: baihu
    ports:
      - "8052:8052"
    volumes:
      - ./data:/app/data
      - ./configs:/app/configs
    environment:
      - TZ=Asia/Shanghai
    restart: unless-stopped

启动服务:

docker-compose up -d

方式二:本地构建运行

环境要求:

  • Go 1.21+
  • Node.js 18+
  • Make

构建步骤:

# 克隆项目
git clone https://github.com/engigu/baihu.git
cd baihu

# 安装依赖
make deps
cd web && npm install && cd ..

# 构建前端 + 后端
make build-all

# 运行
./baihu

访问面板

启动后访问:http://localhost:8052

默认账号:

  • 用户名:admin
  • 密码:123456

⚠️ 安全提示:首次登录后请立即修改默认密码


📁 目录结构

./
├── baihu                 # 可执行文件
├── data/                 # 数据目录(自动创建)
│   ├── ql.db             # SQLite 数据库
│   └── scripts/          # 脚本文件存储
└── configs/
    └── config.ini        # 配置文件(自动创建)

⚙️ 配置说明

配置文件路径:configs/config.ini

[server]
port = 8052
host = 0.0.0.0

[database]
type = sqlite
host = localhost
port = 3306
user = root
password = 
dbname = ql_panel
table_prefix = baihu_

配置项说明

配置项 说明 默认值
server.port 服务端口 8052
server.host 监听地址 0.0.0.0
database.type 数据库类型 sqlite
database.table_prefix 表前缀 baihu_

站点设置

以下设置可在管理面板「系统设置 > 站点设置」中配置:

设置项 说明 默认值
站点标题 显示在浏览器标签和侧边栏 白虎面板
站点标语 显示在登录页 轻量级定时任务管理系统
站点图标 SVG 格式,用于 favicon 和登录页 内置图标
分页大小 列表每页显示条数 10
Cookie 有效期 登录状态保持天数 7

调度设置

以下设置可在管理面板「系统设置 > 调度设置」中配置,用于优化任务执行性能:

设置项 说明 默认值
Worker 数量 并发执行任务的 worker 数量 4
队列大小 任务队列缓冲区大小 100
速率间隔 任务启动间隔(毫秒),200ms = 每秒最多 5 个任务 200

调度机制说明:

系统采用 Worker Pool + 任务队列的架构来控制任务执行:

  1. Worker Pool:固定数量的 worker 从队列中取任务执行,避免 cron 触发时无限并发
  2. 任务队列:cron 调度器触发的任务先入队,由 worker 按顺序执行
  3. 速率限制:控制任务启动频率,防止秒级 cron 同时触发多个进程导致 CPU 峰值
  4. 热重载:修改调度设置后立即生效,无需重启服务

🛠️ 技术栈

后端

  • Go 1.21+ - 编程语言
  • Gin - Web 框架
  • GORM - ORM 框架
  • SQLite - 嵌入式数据库
  • JWT - 身份认证
  • Cron - 定时任务调度
  • WebSocket - 实时通信

前端

  • Vue 3 - 前端框架
  • TypeScript - 类型安全
  • Vite - 构建工具
  • Tailwind CSS - 样式框架
  • Shadcn/ui - UI 组件库
  • Xterm.js - 终端模拟器

部署

  • Docker - 容器化部署
  • GitHub Actions - CI/CD
  • Multi-arch - 支持 amd64/arm64

📖 开发指南

项目结构

├── main.go                    # 入口文件
├── internal/
│   ├── bootstrap/             # 应用启动
│   ├── constant/              # 常量定义
│   ├── controllers/           # 控制器层
│   ├── database/              # 数据库初始化
│   ├── middleware/            # 中间件
│   ├── models/                # 数据模型
│   ├── router/                # 路由注册
│   ├── services/              # 业务逻辑层
│   ├── static/                # 静态文件嵌入
│   └── utils/                 # 工具函数
├── web/                       # 前端项目
│   ├── src/
│   │   ├── api/               # API 接口
│   │   ├── components/        # 公共组件
│   │   ├── composables/       # 组合式函数
│   │   ├── layouts/           # 布局组件
│   │   ├── router/            # 路由配置
│   │   └── views/             # 页面视图
│   └── ...
├── configs/                   # 配置文件
├── data/                      # 数据目录
├── Dockerfile                 # Docker 构建
├── Makefile                   # 构建脚本
└── README.md

开发命令

# 安装 Go 依赖
make deps

# 安装前端依赖
cd web && npm install

# 前端开发模式(热重载)
cd web && npm run dev

# 构建前端
make build-web

# 构建后端
make build

# 构建全部(前端 + 后端)
make build-all

# 清理构建产物
make clean

# Docker 构建
make docker-build

# Docker Compose 启动
make docker-up

# Docker Compose 停止
make docker-down

API 接口

认证相关

方法 路径 说明
POST /api/auth/login 用户登录
POST /api/auth/logout 用户登出
GET /api/auth/me 获取当前用户

任务管理

方法 路径 说明
GET /api/tasks 获取任务列表
POST /api/tasks 创建任务
GET /api/tasks/:id 获取任务详情
PUT /api/tasks/:id 更新任务
DELETE /api/tasks/:id 删除任务
POST /api/execute/task/:id 执行任务

环境变量

方法 路径 说明
GET /api/env 获取变量列表
POST /api/env 创建变量
PUT /api/env/:id 更新变量
DELETE /api/env/:id 删除变量

脚本文件

方法 路径 说明
GET /api/files/tree 获取文件树
GET /api/files/content 获取文件内容
POST /api/files/content 保存文件内容
POST /api/files/create 创建文件/文件夹
POST /api/files/delete 删除文件/文件夹
POST /api/files/upload 上传压缩包

执行日志

方法 路径 说明
GET /api/logs 获取日志列表
GET /api/logs/:id 获取日志详情

系统设置

方法 路径 说明
GET /api/settings/site 获取站点设置
PUT /api/settings/site 更新站点设置
POST /api/settings/password 修改密码
GET /api/settings/about 获取系统信息

🤝 贡献

欢迎提交 Issue 和 Pull Request


📄 License

MIT License

S
Description
定时任务调度面板
Readme Apache-2.0 6.4 MiB
Languages
Go 62.8%
TypeScript 30.6%
JavaScript 2.1%
Python 1.9%
Shell 0.8%
Other 1.7%