QD:轻量级 HTTP 定时任务 Web 框架安装与使用全教程

一、QD 框架简介

QD 是一款基于 Node.js 开发的 HTTP 定时任务自动执行框架,支持通过 Web 界面管理定时任务、设置 Cron 表达式、监控任务执行状态,适合快速部署自动化脚本(如网页签到、数据抓取、API 调用等)。其核心特点:


  • 轻量级:基于 Docker 部署,资源占用低;

  • 可视化管理:Web 界面操作,无需命令行编写任务;

  • 灵活扩展:支持自定义 HTTP 请求参数、Headers、认证方式。

二、环境准备

  1. 系统要求

    • 服务器:Linux(推荐 Ubuntu 20.04/Debian 11)、Windows 10+(需 Docker Desktop)

    • 配置:1 核 CPU、512MB 内存以上

    • 依赖:Docker、Docker Compose(用于容器化部署)

  2. 安装 Docker(以 Ubuntu 为例)

    bash

    # 更新包列表
    sudo apt-get update
    # 安装Docker
    sudo apt-get install -y docker.io
    # 启动Docker服务
    sudo systemctl start docker
    sudo systemctl enable docker
    # 验证安装
    docker --version
    

  3. 安装 Docker Compose

    bash

    sudo apt-get install -y docker-compose
    docker compose version
    

三、一键部署 QD 框架

1. 创建工作目录并启动容器

bash

# 创建目录
mkdir -p qd/config
cd qd
# 启动QD容器(后台运行,端口映射8923:80,挂载配置目录)
docker run -d --name qd -p 8923:80 -v $(pwd)/qd/config:/usr/src/app/config qdtoday/qd
2. 命令参数解析

参数说明

-d 后台运行容器

--name qd 容器名称设为qd

-p 8923:80 主机 8923 端口映射到容器 80 端口(可自定义端口,需确保未被占用)

-v $(pwd)/qd/config:/usr/src/app/config 挂载配置目录到容器内,确保数据持久化

qdtoday/qd 拉取 QD 官方 Docker 镜像

3. 检查容器状态

bash

# 查看运行中的容器
docker ps -a | grep qd
# 查看启动日志(获取初始密码)
docker logs qd


日志中会显示类似 Password: xxxxxxxx 的初始密码,用于首次登录。

四、首次访问与初始化设置

  1. 访问 Web 界面
    浏览器输入 http://服务器IP:8923(若为本地部署,输入http://localhost:8923)。

    • 若提示安全警告,选择 “继续访问”(首次加载可能需要等待 10-20 秒容器初始化)。

  2. 设置登录信息

    • 输入日志中的初始密码,进入初始化页面;

    • 自定义用户名和密码(建议强密码,包含字母、数字、符号);

    • 点击 “设置” 完成初始化,使用新账号登录。

  3. 界面功能概览

    • 任务管理:添加、编辑、删除定时任务;

    • 执行日志:查看任务运行结果、错误信息;

    • 环境变量:配置任务所需的公共参数(如 Cookie、Token);

    • 系统设置:修改端口、密码、定时清理日志等。

五、添加定时任务示例(以网页签到为例)

  1. 进入任务管理
    登录后点击左侧菜单 “任务管理”→“添加任务”。

  2. 配置任务参数

    • 任务名称:自定义(如 “某论坛每日签到”);

    • 执行周期:使用 Cron 表达式(如0 8 * * *表示每天 8 点执行);

    • 请求类型:选择GETPOST(根据签到接口类型);

    • URL 地址:输入签到接口 URL(如https://example.com/checkin);

    • 请求头:添加 Cookie、User-Agent 等(示例):

      json

      {
        "Cookie": "session_id=xxx; user_id=123",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36"
      }
      

    • 请求参数(POST 请求需填写):

      json

      {
        "username": "your_name",
        "password": "your_password"
      }
      

  3. 保存并测试
    点击 “保存” 后,可手动点击 “执行一次” 测试任务是否正常。

六、进阶功能:环境变量与批量管理

  1. 配置环境变量

    • 进入 “环境变量” 页面,点击 “添加变量”;

    • 例如将 Cookie 存储为变量CHECKIN_COOKIE,在任务中通过{{env.CHECKIN_COOKIE}}引用,避免重复填写。

  2. 批量导入任务

    • 支持从 JSON 文件导入多个任务,适合批量部署同类脚本;

    • 格式示例:

      json

      [
        {
          "name": "任务1",
          "cron": "0 8 * * *",
          "url": "https://task1.com",
          "method": "GET"
        },
        {
          "name": "任务2",
          "cron": "0 9 * * *",
          "url": "https://task2.com",
          "method": "POST"
        }
      ]
      

七、数据备份与迁移

  1. 备份配置

    bash

    # 进入QD目录
    cd qd
    # 打包配置文件(含任务、环境变量等)
    tar -czvf qd_backup_$(date +%Y%m%d).tar.gz config
    

  2. 迁移到新服务器

    • 在新服务器创建相同目录结构,上传备份文件并解压;

    • 运行相同的 Docker 命令启动容器,配置将自动恢复。

八、常见问题与解决方案

  1. 无法访问面板

    • 原因:端口未开放或防火墙拦截

    • 解决

      bash

      # Ubuntu/Debian开放端口
      sudo ufw allow 8923/tcp
      # CentOS开放端口
      sudo firewall-cmd --add-port=8923/tcp --permanent
      sudo firewall-cmd --reload
      

  2. 任务执行失败

    • 原因:网络错误、参数错误、接口变更

    • 解决

      • 查看 “执行日志” 获取具体错误(如 403 禁止访问、500 服务器错误);

      • 检查 URL、请求头、参数是否正确,更新接口信息。

  3. 容器启动报错

    • 原因:目录权限不足或镜像拉取失败

    • 解决

      bash

      # 赋予目录读写权限
      chmod -R 777 qd/config
      # 手动拉取镜像
      docker pull qdtoday/qd
      

九、安全优化建议

  1. 修改默认端口

    • 编辑 Docker 命令,将-p 8923:80改为其他端口(如-p 6666:80),降低被扫描风险。

  2. 启用 HTTPS

    • 使用 Nginx 反向代理并配置 SSL 证书(示例 Nginx 配置):

      nginx

      server {
        listen 443 ssl;
        server_name your-domain.com;
        ssl_certificate /path/to/cert.pem;
        ssl_certificate_key /path/to/key.pem;
        location / {
          proxy_pass http://localhost:8923;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
        }
      }
      

  3. 限制登录 IP

    • 在 “系统设置” 中添加 “允许登录 IP”(如192.168.1.100),拒绝其他 IP 访问。

十、总结

QD 框架通过 Docker 实现了极简部署,无需复杂环境配置即可快速搭建定时任务系统。无论是个人自动化签到、企业 API 定时调用,还是数据采集场景,都能通过直观的 Web 界面轻松管理。建议定期备份配置,并根据实际需求扩展任务参数与执行逻辑,充分发挥其自动化能力。