watchtower + Gin Gin+ SQLite SQLite+ Docker Registry Docker Registry + Nginx+ Python+ Node.js+ Vue3+ Element Plus

Docker 一键部署的轻量多语言定时任务管理面板,含自动更新

Go 后端提供调度与 API,Vue3 前端可视化管理,SQLite 免外部数据库,Docker 与 Watchtower 实现一键部署与自动更新

✓ Docker 一键部署,开箱即用✓ 内置 22 种消息推送渠道 ✕ Watchtower 不会自我更新,需手✕ 国内镜像加速站 latest 可能是陈旧

方案简介

呆呆面板 (Daidai Panel) 是一款轻量级定时任务管理平台,采用 Go (Gin) + Vue3 (Element Plus) + SQLite 架构,专注于脚本托管与自动化任务调度。它支持 Python、Node.js(含 .js / .mjs)、Shell、TypeScript、Go 等多语言脚本的定时执行与可视化管理。

这套方案的定位是「轻量、现代的定时任务管理面板,Docker 一键部署,开箱即用」,适合需要托管定时脚本(如签到、爬虫、数据同步等自动化任务)、又不想自己搭建复杂调度系统的个人开发者或小团队。相比需要外部数据库的方案,它使用 SQLite 单文件存储,通过 Docker Compose 两个服务(面板本体 + Watchtower 自动更新)即可完整上线,并内置环境变量管理、依赖管理、订阅管理、Open API、2FA 等面板常用能力。

亮点与能力

  • 定时任务 — Cron 表达式调度,支持重试、超时、定时停止、任务依赖、前后置钩子
  • 脚本管理 — 在线代码编辑器,支持 Python、Node.js(含 .mjs)、Shell、TypeScript、Go,拖拽移动文件
  • 执行日志 — SSE 实时日志流,历史日志查看与自动清理
  • 环境变量 — 分组管理、拖拽排序、批量导入导出(兼容青龙格式)
  • 订阅管理 — 自动从 Git 仓库拉取脚本,支持定期同步
  • 依赖管理 — 可视化安装/卸载 Python (pip)、Node.js (npm) 依赖,以及 Linux 系统包
  • 通知推送 — Bark、Telegram、Server酱、企业微信、钉钉、飞书等 22 种渠道
  • 开放 API — App Key / App Secret 认证,支持第三方系统对接
  • 系统安全 — 双因素认证 (2FA)、IP 白名单、登录日志、多设备会话管理
  • 数据备份 — 一键备份与恢复,支持每天/每周/每月定时备份
  • 系统监控 — 实时 CPU / 内存 / 磁盘监控,任务执行趋势统计

组成与分工

  • Go (Gin):后端框架,提供任务调度、脚本执行、Open API 等服务端能力
  • Vue3 (Element Plus):前端框架与组件库,构建可视化管理界面(在线演示即为前端单独打包配浏览器内模拟数据)
  • SQLite:嵌入式数据库,存储任务、变量、日志等面板数据,无需外部数据库
  • Nginx:容器内监听 5700 端口的 Web 入口(compose 注释「宿主机端口:容器内 Nginx 端口」)
  • Docker / Docker Compose:容器化部署方式,实现一键启动与数据目录挂载
  • Watchtower (nickfedor/watchtower):通过 Docker Socket 与 HTTP API 自动更新面板镜像,需 v1.20.0+ 才支持面板内「检查系统更新」
  • pip / npm / 系统包管理器:依赖管理功能调用的底层工具,自动识别 apk / apt / dnf / yum / microdnf / zypper

前置要求

  • 已安装 Docker 与 Docker Compose 的宿主机
  • 端口 5700 可用(浏览器访问 http://宿主机IP:5700
  • 若需自动更新功能,Watchtower 镜像必须为 nickfedor/watchtower 的 v1.20.0 或更新版本

创建目录并准备 docker-compose.yml(内容见实施步骤),然后启动:

bash
docker compose up -d

实施步骤

1. 编写 docker-compose.yml

官方推荐的上线版 compose 包含面板与 Watchtower 两个服务:

yaml

docker-compose.yml

name: daidai-panel

services:
daidai-panel:
image: ${DAIDAI_PANEL_IMAGE:-linzixuanzz/daidai-panel:latest}
container_name: daidai-panel
restart: unless-stopped
ports:

  • "5700:5700" # 宿主机端口:容器内 Nginx 端口

volumes:

  • ./Dumb-Panel:/app/Dumb-Panel # 面板数据目录,升级保留

environment:

  • TZ=Asia/Shanghai
  • CONTAINER_NAME=daidai-panel
  • IMAGE_NAME=${DAIDAI_PANEL_IMAGE:-linzixuanzz/daidai-panel:latest}
  • PANEL_UPDATE_MANAGER=watchtower
  • WATCHTOWER_HTTP_API_URL=${WATCHTOWER_HTTP_API_URL:-http://watchtower:8080}
  • WATCHTOWER_HTTP_API_TOKEN=${WATCHTOWER_HTTP_API_TOKEN:-daidai-panel-watchtower-token}
  • WATCHTOWER_HTTP_API_PERIODIC_POLLS=true

labels:

  • com.centurylinklabs.watchtower.enable=true

watchtower:
image: nickfedor/watchtower:latest # 必须是 v1.20.0 或更新的版本,原因见下方提示
container_name: daidai-watchtower
restart: unless-stopped
volumes:

  • /var/run/docker.sock:/var/run/docker.sock

labels:

  • com.centurylinklabs.watchtower.enable=false

environment:

  • WATCHTOWER_HTTP_API_TOKEN=${WATCHTOWER_HTTP_API_TOKEN:-daidai-panel-watchtower-token}
  • WATCHTOWER_HTTP_API_PERIODIC_POLLS=true
  • WATCHTOWER_HTTP_API_ENDPOINTS=update

command:

  • --label-enable
  • --cleanup
  • --interval
  • "3600"

2. 启动服务

bash
docker compose up -d

3. 初始化管理员

首次访问 http://localhost:5700 会进入管理员初始化。

4. (旧版用户)升级 Watchtower

凡是在 v1.20.0 之前就部署过 Watchtower 的用户,升级面板后请先手动拉一次新镜像再重建它:

bash
docker compose pull watchtower
docker compose up -d watchtower

确认版本:Watchtower 启动时会把自己的版本号打进日志

docker logs daidai-watchtower 2>&1 | head -n 5

使用与配置要点

  • 通过面板可创建 Cron 定时任务、在线编辑多语言脚本、查看 SSE 实时日志
  • 环境变量分组管理、批量导入导出(兼容青龙格式),任务执行时自动注入
  • 订阅管理可从 Git 仓库自动拉取脚本,白名单筛选并建成任务,依赖规则拉取辅助库但不建任务
  • 不想自动更新时可删除 watchtower 服务、labelsPANEL_UPDATE_MANAGER=watchtowerWATCHTOWER_HTTP_API_*,改为宿主机手动执行:

bash
docker compose pull
docker compose up -d

  • 想先用后决定装不装,可打开在线演示 https://linzixuanzz.github.io/daidai-panel/,演示站没有后端、数据只存浏览器,刷新即恢复初始状态,切勿填写真实 Cookie、密码或推送密钥

注意事项与常见问题

  • Watchtower 版本坑WATCHTOWER_HTTP_API_ENDPOINTS=updatev1.20.0 才引入的环境变量,更早版本会静默忽略——容器照常启动、日志不报错,但 HTTP API 的 8080 端口没打开,面板检查更新会拿到 connection refused
  • Watchtower 不自我更新:它自己打了 enable=false 标签避免管自己,本地镜像会停在最后一次手动 pull 的版本,需定期手动:

bash
docker compose pull watchtower
docker compose up -d watchtower

  • 镜像加速站缓存:国内加速站的 latest 可能是很旧的缓存,pull 完版本仍偏低时可临时改拉具体版本(例如 nickfedor/watchtower:1.21.2),或直连 Docker Hub 拉一次
  • 安全设计docker.sock 只暴露给 Watchtower,不暴露给面板容器;Watchtower 的更新 API 只在 Compose 内部网络使用,未向宿主机开放端口
  • 演示站:不是真实运行的面板,没有后端也不会真的执行任何脚本

优缺点

  • ✓ Docker 一键部署,开箱即用
  • ✓ 内置 22 种消息推送渠道
  • ✕ Watchtower 不会自我更新,需手
  • ✕ 国内镜像加速站 latest 可能是陈旧

出处

本方案挖掘自开源项目 linzixuanzz/daidai-panel,方案内容与实施命令均来自其 README 原文。

方案出处
linzixuanzz/daidai-panel:Lightweight scheduled task management panel, similar to Qinglong Panel. 轻量级定时任务管
505 star Lightweight scheduled task management panel, similar to Qinglong Panel. 轻量级定时任务管理面板

本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。