本文属于「自托管 Docker 部署实战」系列(共 35 篇),第 12 篇。 示例中的 IP(192.0.2.10)、域名(example.com)、密码均为占位符,请按实际环境替换。

它是什么

定时任务/脚本编排面板(青龙类工具),支持 Python/Node/Shell 任务、环境变量、日志。

前置条件

  • 一台 Linux 服务器(1C1G 起步;Java 类应用建议 2C4G 以上);
  • 已安装 Docker 与 Compose v2,执行 docker compose version 有版本号输出;
  • 所有示例里的 IP / 域名 / 密码都是占位符,实际部署请替换成自己的。
# 安装 Docker(已安装可跳过)
curl -fsSL https://get.docker.com | sh

# 目录约定:一个服务一个目录,后文的 ./data 均指栈目录内
mkdir -p /srv/docker/active/<stack> && cd /srv/docker/active/<stack>

镜像地址

ghcr.io/engigu/baihu:latest

目录结构

/srv/docker/active/baihu/
├── docker-compose.yml
├── data/                # 任务、日志、脚本
├── configs/             # 配置
└── envs/                # 环境变量文件

部署步骤

services:
  baihu:
    image: ghcr.io/engigu/baihu:latest
    container_name: baihu
    restart: unless-stopped
    ports:
      - "8052:8052"
    volumes:
      - ./data:/app/data
      - ./configs:/app/configs
      - ./envs:/app/envs
    environment:
      - TZ=Asia/Shanghai
      # 可选:用 MySQL 而不是内置 SQLite
      # - BH_DB_TYPE=mysql
      # - BH_DB_HOST=mysql
      # - BH_DB_PORT=3306
      # - BH_DB_USER=baihu
      # - BH_DB_PASSWORD=${BH_DB_PASSWORD}
      # - BH_DB_NAME=baihu
      # - BH_DB_TABLE_PREFIX=baihu_
      # - BH_SECRET=<随机串>
docker compose up -d
# 访问 http://<SERVER_IP>:8052

关键配置

  • 默认 SQLite,数据在 data/;用 MySQL 时把 BH_DB_* 打开;
  • BH_ALLOWED_ORIGINS 配反代域名,跨域才正常;
  • BH_SECRET 用于会话签名,必须随机。

注意事项

  • 面板能执行任意脚本,权限等同于容器内 root,公网暴露风险极高;
  • 定时任务日志会涨,配日志轮转;
  • 导入的脚本注意来源,别直接跑陌生仓库的 install.sh。

备份与升级

# 任务、日志、配置、环境变量
tar czf "baihu-$(date +%F).tar.gz" ./data ./configs ./envs

# 升级
docker compose pull
docker compose up -d
  • 用 MySQL 存数据时,额外做数据库备份;
  • 升级前导出任务列表,防止 schema 迁移出问题。