轻量级定时任务管理系统,支持 Python, Node.js, Go, Rust, PHP 等所有主流语言的动态安装与多版本切换,,Docker/Compose 即用。A lightweight, high-performance cron panel built with Go & Vue 3.
轻量级定时任务管理系统,支持 Python, Node.js, Go, Rust, PHP 等所有主流语言的动态安装与多版本切换,,Docker/Compose 即用。A lightweight, high-performance cron panel built with Go & Vue 3.
白虎面板 (Baihu Panel) 是一款极致轻量、高性能的自动化任务调度平台。采用 Go + Vue3 架构,专注于高性能与低系统开销。通过深度集成 Mise 运行时管理,它原生支持 Python、Node.js、Go、Rust、PHP 等所有主流语言环境的动态安装(几乎所有的版本)与统一依赖管理。支持 Docker/Docker-Compose 一键部署,开箱即用,是您理想的轻量化脚本托管与任务调度解决方案。
演示站点(演示站点的服务器比较烂,见谅) 演示站点
文档说明 文档说明
最新版本:v1.1.30 (2026.09.11)
golang.org/x/crypto 至 v0.55.0 修复安全漏洞。点击展开查看近期历史版本日志
baihu-tray.exe)。Ctrl+C 终结与 Linux PTY 崩溃修复。多少和青龙面板有点关系,我自己也是青龙面板的使用者,但是现在的青龙面板性能我觉得有点难以接受。以我自己的使用(机器1C2G)为例,一个python的requests脚本每隔30s执行一次,有时候cpu执行的时候能跳变到50%以上。可以看看下面gif图片(如果不动,点击图片查看)
我觉得一个内存和性能占用低的面板更合适自己,所以做了这个项目。
如果你和我一样需要一个性能和内存占用低的定时面板,这个项目你可以体验下。
同样的定时场景和代码,这个项目的情况如下(cpu执行定时跳变不超过20%):
如果项目有用,请帮忙点个star。
点击展开查看详细功能
点击展开查看已支持的语言及依赖管理详情
白虎面板原生支持以下脚本的定时执行:
系统内置了高度集成的跨语言依赖管理器,支持自动化安装和管理以下语言的依赖项,并确保在容器内全局可用:
| 语言 | 包管理器 | 功能说明 |
|---|---|---|
| Python | pip | 自动使用内置虚拟环境,支持清华源 |
| Node.js | npm | 全局安装模式,自动配置 npmmirror 镜像 |
| Go | go install | 通过 go install 安装二进制工具 |
| Rust | cargo | 通过 cargo install 安装 Rust 依赖 |
| Ruby | gem | 支持 gem install 本地安装 |
| Bun | bun | 支持 bun add -g 全局模式 |
| PHP | composer | 支持 composer global require |
| Deno | deno | 支持 deno install -g |
| .NET | dotnet | 支持 dotnet tool install -g |
| Elixir/Erlang | mix | 支持 mix archive.install |
| Lua | luarocks | 通过 luarocks 管理 Lua 包 |
| Nim | nimble | 支持 nimble install |
| Dart/Flutter | pub | 支持 pub global activate |
| Perl | cpanm | 简单的 cpanm 安装支持 |
| Crystal | shards | shards 项目级别或工具安装 |
mise 一键安装所需的语言及版本。mise exec 实现了完善的环境隔离,不同版本的依赖包互不冲突。项目提供多种基础镜像,可根据具体环境选择:
| 标签 (Tag) | 基础镜像 | 说明 |
|---|---|---|
latest |
Debian 12 | 默认推荐:集成 Python 3.13 与 Node.js 23,开箱即用 |
latest-debian13 |
Debian 13 | 尝鲜版本,基于 Debian Trixie |
latest-minimal |
Debian 13 | 最小化版:不预置语言环境,由用户通过面板自主按需安装 |
提示:下方部署示例默认使用
latest标签,如需换用 Debian 13 版,只需将latest替换为latest-debian13即可。
警告:架构升级破坏性变更
本版本(2026.02.13+)对底层运行时环境进行了彻底重构,弃用了原有的静态 Python/Node 环境,转为使用 Mise 进行动态版本管理。
- 不再提供 Alpine 镜像:由于 glibc 兼容性问题,Mise 无法在 Alpine 上完美运行,因此暂时取消 Alpine 镜像支持。
- 环境数据不兼容:如果您是从旧版本升级上来,原有的 Python/Node 环境数据将无法迁移。升级后您需要:
- 清空或备份原有的
envs/挂载目录- 启动新容器,让系统自动初始化新的 Mise 环境
- 在面板中重新安装所需的语言和依赖
方式一:环境变量部署(推荐)
通过环境变量指定配置,简单灵活,适合容器编排场景。
使用 SQLite(默认):
docker run -d \
--name baihu \
-p 8052:8052 \
-v $(pwd)/data:/app/data \
-v $(pwd)/envs:/app/envs \
-e TZ=Asia/Shanghai \
-e BH_SERVER_PORT=8052 \
-e BH_SERVER_HOST=0.0.0.0 \
-e BH_DB_TYPE=sqlite \
-e BH_DB_PATH=/app/data/baihu.db \
-e BH_DB_TABLE_PREFIX=baihu_ \
-e BAIHU_SECRET_KEY=your_secret_key_here \
--restart unless-stopped \
ghcr.io/engigu/baihu:latest
提示:如需通过反向代理部署在子路径(如
/baihu),添加环境变量:-e BH_SERVER_URL_PREFIX=/baihu配置后访问地址为
http://your-domain.com/baihu/,详见下方「URL 前缀配置」说明。
Docker Compose(SQLite):
…
使用 MySQL:
docker run -d \
--name baihu \
-p 8052:8052 \
-v $(pwd)/data:/app/data \
-v $(pwd)/envs:/app/envs \
-e TZ=Asia/Shanghai \
-e BH_SERVER_PORT=8052 \
-e BH_SERVER_HOST=0.0.0.0 \
-e BH_DB_TYPE=mysql \
-e BH_DB_HOST=mysql-server \
-e BH_DB_PORT=3306 \
-e BH_DB_USER=root \
-e BH_DB_PASSWORD=your_password \
-e BH_DB_NAME=baihu \
-e BH_DB_TABLE_PREFIX=baihu_ \
-e BAIHU_SECRET_KEY=your_secret_key_here \
--restart unless-stopped \
ghcr.io/engigu/baihu:latest
提示:如需配置 URL 前缀,添加
-e BH_SERVER_URL_PREFIX=/baihu
Docker Compose(MySQL):
…
方式二:配置文件部署
通过挂载 config.ini 配置文件来管理配置,适合需要持久化配置的场景。
Docker 命令:
docker run -d \
--name baihu \
-p 8052:8052 \
-v $(pwd)/data:/app/data \
-v $(pwd)/configs:/app/configs \
-v $(pwd)/envs:/app/envs \
-e TZ=Asia/Shanghai \
-e BAIHU_SECRET_KEY=your_secret_key_here \
--restart unless-stopped \
ghcr.io/engigu/baihu:latest
Docker Compose:
services:
baihu:
image: ghcr.io/engigu/baihu:latest
container_name: baihu
ports:
- "8052:8052"
volumes:
- ./data:/app/data
- ./configs:/app/configs
- ./envs:/app/envs
environment:
- TZ=Asia/Shanghai
- BAIHU_SECRET_KEY=your_secret_key_here
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
restart: unless-stopped
首次使用需要复制 configs/config.example.ini 为 configs/config.ini,然后根据需要修改配置。
配置文件示例(configs/config.ini):
[server]
port = 8052
host = 0.0.0.0
# 可选:配置 URL 前缀用于反向代理,例如 /baihu
url_prefix =
# 全局会话 Cookie 名称
cookie_name = BHToken
[database]
type = sqlite
path = ./data/baihu.db
table_prefix = baihu_
方式三:配合独立中心化消息服务部署(非必需/仅供参考)
好消息:自白虎面板最新版本起,系统已原生内置了完整强大的消息推送功能!您可直接在面板「消息推送」菜单内绑定十余种主流渠道和系统通知事件,原配合外置的
Message-Push-Nest部署方式已不再是使用面板的基础要求。您可随时直接使用上方的第一种简单命令开箱即用体验。以下「白虎 + 消息聚合服务」的联合部署内容被予以保留,专为仍然需要「中心化通知网关」的重度企业解耦用户作为参考:
白虎面板通过系统集成也可轻松连接独立的消息聚合服务。这里推荐使用 Message-Push-Nest 作为分布式的统一消息推送中心。
使用 SQLite
创建 docker-compose.yml 文件:
…
使用 MySQL(适合生产环境,需要已有 MySQL 服务)
创建 docker-compose.yml 文件:
…
启动服务:
docker-compose up -d
访问地址:
注意:使用 MySQL 方式时,请先在 MySQL 中创建
baihu和message_nest两个数据库,并修改配置中的 MySQL 地址和密码。也可以使用同一个数据库。
在任务中使用推送
如今你无需依赖任何外部服务,可以通过面板自身完成:
(如继续使用 Message-Push-Nest,你可以通过其管理界面中「消息模板」的「复制推送代码」提取旧有版集成样例。)
提示:在 Docker Compose 部署的环境中,推送服务地址使用
http://message-nest:8000(容器内部通信)。如果是独立部署,请使用实际的服务地址。
环境变量优先级高于配置文件,两种方式可以混合使用。
方式四:Nginx 反向代理部署(HTTPS)
如果需要通过域名和 HTTPS 访问白虎面板,可以使用 Nginx 作为反向代理。
Nginx 配置示例:
…
配置说明:
example.com 替换为你的域名172.17.0.1:8052 是 Docker 容器的宿主机地址和端口,根据实际情况修改重载 Nginx 配置:
nginx -t && nginx -s reload
启动后访问:http://localhost:8052
默认账号: 用户名 admin,密码见启动日志(首次启动会自动生成 12 位随机密码并打印在日志中)
注意:出于安全性考虑,系统不再使用固定默认密码。请在容器启动日志中搜索
管理员账号创建成功找到您的随机密码,并登录后及时修改。
命令行工具 (CLI)
白虎面板在环境内内置了同名的 baihu 命令行工具。如果您在终端内需要执行系统级别的操作,可以使用以下命令:
baihu server # 以前台方式启动面板的后台进程服务(面板启动指令)
baihu reposync # 供定时任务调用,将远程 Git 仓库的高级特性同步到本地目录中
baihu resetpwd # 交互式重置系统 admin 账号密码(密码丢失时可通过进入终端重置)
baihu restore # 使用本地的 .zip 备份压缩包文件,一条命令直接全量恢复系统数据
终端执行 baihu 会直接打印内置支持的高级命令帮助列表。
./
├── baihu # 可执行文件
├── data/ # 数据目录(自动创建)
│ ├── baihu.db # SQLite 数据库
│ └── scripts/ # 脚本文件存储
├── configs/
│ └── config.ini # 配置文件(自动创建)
└── envs/ # 运行环境挂载目录(自动创建)
└── mise/ # Mise 运行时核心目录 (包含所有语言环境及依赖)
容器启动时 docker-entrypoint.sh 会执行以下操作:
/app/data、/app/configs、/app/envs 等核心目录。/app/envs/mise,确保持久化挂载后运行时依然可用。MISE_DATA_DIR 等环境变量,确保运行时数据指向持久化目录。mise shims 路径加入系统 PATH,实现 Python、Node.js 等多版本环境的全局无感调用。baihu 面板主进程。提示:通过挂载
./envs:/app/envs,您通过面板安装的所有编程语言运行时以及通过「依赖管理」安装的所有第三方库都会永久保留,容器升级或重启后无需重新安装。
点击展开查看配置详情
配置文件路径:configs/config.ini
[server]
port = 8052
host = 0.0.0.0
url_prefix =
[database]
type = sqlite
host = localhost
port = 3306
user = root
password =
dbname = bh_panel
table_prefix = baihu_
所有配置项都支持通过环境变量覆盖,环境变量优先级高于配置文件:
| 环境变量 | 对应配置 | 说明 | 默认值 |
|---|---|---|---|
BH_SERVER_PORT |
server.port | 服务端口 | 8052 |
BH_SERVER_HOST |
server.host | 监听地址 | 0.0.0.0 |
BH_SERVER_URL_PREFIX |
server.url_prefix | URL 前缀,用于反向代理子路径部署 | - |
BH_COOKIE_NAME |
server.cookie_name | 全局会话 Cookie 名称 | BHToken |
BH_DB_TYPE |
database.type | 数据库类型 (sqlite/mysql) | sqlite |
BH_DB_HOST |
database.host | 数据库地址 | localhost |
BH_DB_PORT |
database.port | 数据库端口 | 3306 |
BH_DB_USER |
database.user | 数据库用户 | root |
BH_DB_PASSWORD |
database.password | 数据库密码 | - |
BH_DB_NAME |
database.dbname | 数据库名称 | bh_panel |
BH_DB_PATH |
database.path | SQLite 文件路径 | ./data/baihu.db |
BH_DB_TABLE_PREFIX |
database.table_prefix | 表前缀 | baihu_ |
BAIHU_SECRET_KEY |
- | 系统加密秘钥,用于机密功能(注:仅支持环境变量设置,不支持配置文件) | - |
如果需要通过反向代理(如 Nginx)将白虎面板部署在子路径下,可以配置 URL 前缀。
配置方式:
# 方式一:配置文件
[server]
url_prefix = /baihu
# 方式二:环境变量
-e BH_SERVER_URL_PREFIX=/baihu
配置效果:
配置 url_prefix = /baihu 后,访问路径变为:
| 类型 | 路径示例 |
|---|---|
| 前端页面 | http://your-domain.com/baihu/ |
| 登录页面 | http://your-domain.com/baihu/login |
| 任务管理 | http://your-domain.com/baihu/tasks |
| API 接口 | http://your-domain.com/baihu/api/v1/* |
| WebSocket | ws://your-domain.com/baihu/api/v1/terminal/ws |
Nginx 反向代理配置示例:
location /baihu/
No open issues yet, or sync has not completed.