前言
青龙面板(QingLong)是一个支持Python3、JavaScript、Shell、TypeScript等多种脚本语言的定时任务管理面板。它提供了可视化的Web界面来管理Cron定时任务,支持脚本管理、环境变量管理、日志查看、通知推送等功能,是目前最流行的自托管定时任务管理工具之一。本文教你用Docker在VPS上快速搭建青龙面板。
一、青龙面板功能简介
- 可视化Web管理界面
- 支持Python3、JavaScript/TypeScript、Shell脚本
- 支持Cron表达式定时执行
- 环境变量管理(支持分组和备注)
- 依赖管理(自动安装Python/Node.js依赖)
- 任务日志查看和搜索
- 多种通知渠道(Telegram、邮件、钉钉、Bark、PushPlus等)
- 支持多用户和权限管理
- 支持脚本仓库订阅和自动更新
- 内置任务市场
二、安装青龙面板
Docker Compose安装(推荐)
mkdir -p /opt/qinglong
cd /opt/qinglong
创建 docker-compose.yml:
cat > docker-compose.yml << 'EOF'
version: "3.8"
services:
qinglong:
image: whyour/qinglong:latest
container_name: qinglong
restart: always
ports:
- "5700:5700"
volumes:
- ./data:/ql/data
environment:
- TZ=Asia/Shanghai
EOF
启动:
docker compose up -d
Docker命令安装
docker run -d \
--restart=always \
-p 5700:5700 \
-v /opt/qinglong/data:/ql/data \
-e TZ=Asia/Shanghai \
--name qinglong \
whyour/qinglong:latest
首次访问
等待1-2分钟,访问 http://你的VPS_IP:5700:
- 首次访问会进入初始化向导
- 设置通知方式(可跳过)
- 创建管理员账号和密码
- 登录面板
三、基本使用
添加定时任务
- 进入 定时任务 页面
- 点击 新建任务
- 填写配置:
| 配置项 | 说明 | 示例 |
|---|---|---|
| 名称 | 任务名称 | 每日签到 |
| 命令 | 要执行的脚本命令 | task test.js |
| 定时规则 | Cron表达式 | 0 9 * * *(每天9点) |
| 命令目录 | 脚本所在目录 | /ql/scripts |
Cron表达式常用示例
| Cron表达式 | 含义 |
|---|---|
0 9 * * * | 每天9:00执行 |
0 9,21 * * * | 每天9:00和21:00执行 |
*/30 * * * * | 每30分钟执行一次 |
0 0 * * 1 | 每周一0:00执行 |
30 8 * * 1-5 | 工作日8:30执行 |
0 0 1 * * | 每月1号0:00执行 |
环境变量管理
环境变量用于存储脚本运行时需要的配置信息(如Cookie、Token等):
- 进入 环境变量 页面
- 点击 新建变量
- 填写变量名、变量值和备注
- 支持分组管理,方便多账号管理
环境变量在脚本中通过 process.env.变量名(Node.js)或 os.environ['变量名'](Python)读取。
依赖管理
如果脚本需要第三方库,需要先安装依赖:
- 进入 依赖管理 页面
- 选择类型(Python3/Node.js/Linux)
- 添加依赖名称,如:
- Python3:
requests、pycryptodome - Node.js:
axios、crypto-js
- Python3:
也可以在任务命令中直接安装:
pip3 install requests && task my_script.py
四、订阅脚本仓库
青龙面板支持订阅Git脚本仓库,自动拉取和更新脚本。
添加订阅
- 进入 订阅管理 页面
- 点击 新建订阅
- 填写配置:
| 配置项 | 说明 | 示例 |
|---|---|---|
| 名称 | 订阅名称 | 常用脚本合集 |
| 类型 | 选择定时订阅 | 定时订阅 |
| 链接 | Git仓库地址 | https://github.com/user/repo.git |
| 定时规则 | 自动拉取间隔 | 0 0 * * *(每天0点更新) |
| 目标目录 | 脚本存放目录 | repo_name |
| 白名单 | 只拉取匹配的文件(正则) | .*\.js、.*\.py |
订阅后脚本会自动拉取到指定目录,可以在定时任务中通过 task scripts/xxx.js 来执行。
五、配置通知推送
任务执行结果可以通过通知推送到手机或即时通讯工具。
进入通知配置
管理 > 系统设置 > 通知
常用通知渠道
Telegram Bot通知
- 在Telegram搜索 @BotFather,创建Bot获取Token
- 搜索 @userinfobot 获取你的Chat ID
- 在青龙面板中选择Telegram通知
- 填入Bot Token和Chat ID
Bark通知(iOS推送)
- 在App Store下载Bark应用
- 打开Bark获取推送地址
- 在青龙面板中选择Bark通知
- 填入Bark推送地址
PushPlus通知(微信推送)
- 访问 https://www.pushplus.plus 注册
- 获取Token
- 在青龙面板中选择PushPlus通知
- 填入Token
钉钉/企业微信
按照面板提示填入对应的Webhook地址即可。
配置完成后点击 测试 验证通知是否正常。
六、配置Nginx反向代理
server {
listen 80;
server_name ql.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:5700;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket支持(青龙面板需要)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
申请SSL证书:
sudo certbot --nginx -d ql.yourdomain.com
建议为面板设置访问密码保护,或使用Cloudflare Tunnel配合Access策略保护。
七、常用脚本示例
测试脚本
在 脚本管理 中新建一个 test.js:
const notify = require('./sendNotify');
console.log('当前时间:', new Date().toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' }));
console.log('青龙面板运行正常!');
// 发送通知
notify.sendNotify('测试通知', '青龙面板运行正常,时间: ' + new Date().toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' }));
Python测试脚本
新建 test.py:
import os
import datetime
print(f"当前时间: {datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
print("青龙面板Python脚本运行正常!")
八、更新与备份
更新青龙面板
cd /opt/qinglong
docker compose pull
docker compose up -d
备份数据
# 停止服务后备份
cd /opt/qinglong
docker compose stop
tar -czf qinglong-backup-$(date +%Y%m%d).tar.gz data/
docker compose start
九、常见问题
任务不执行怎么办?
- 检查Cron表达式是否正确(青龙面板使用6位Cron,包含秒)
- 检查脚本依赖是否已安装
- 查看任务日志排查错误
- 确认面板时间是否正确(应为北京时间)
脚本依赖安装失败?
# 进入容器手动安装
docker exec -it qinglong bash
# Python依赖
pip3 install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
# Node.js依赖
cd /ql/scripts && npm install axios
如何限制面板访问?
- 修改默认端口(5700)为其他端口
- 配置Nginx反代+Basic Auth密码保护
- 使用Cloudflare Tunnel + Access策略
- 配置防火墙只允许特定IP访问
面板运行占用资源大吗?
青龙面板本身很轻量,空闲时占用约100MB内存。执行脚本时会根据脚本复杂度增加。1核1G的VPS完全够用。
总结
青龙面板是VPS上管理定时任务的最佳工具,可视化界面让Cron任务管理变得简单直观。配合通知推送功能,可以实现各种自动化操作。搭配一台便宜VPS,就能拥有一个功能强大的自动化任务管理平台。