一个计算机技术爱好者与学习者

0%

好好学Docker:使用Docker安装配置青龙面板

1. 青龙面板简介

青龙面板是一个支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台

Linux自带的crontab可以配置定时任务,但是并不方便。而使用青龙面板,能够可视化配置定时任务,简单快捷。
本文中,我们学习一下青龙面板的安装配置,试一试签到薅羊毛。

参考文档:

2. 安装青龙版面

1、下载青龙面板Docker镜像

1
docker pull whyour/qinglong:debian

2、启动青龙面板

1
2
3
4
5
6
7
8
docker run --name qinglong -d \
-p 5700:5700 \
-v /opt/ql/data:/ql/data \
-e QlBaseUrl="/" \
-e QlPort="5700" \
--hostname qinglong \
--restart unless-stopped \
whyour/qinglong:debian

以上命令:

  • 命名容器为qinglong,后台运行
  • 映射宿主机5700端口到容器的5700
  • 挂载宿主机文件 /opt/ql/data 到容器目录 /ql/data
  • 设置环境变量 QlBaseUrl 和 QlPort,青龙面板服务启动时使用
  • 设置容器主机名为 qinglong
  • 设置容器随docker启动自动启动

3、验证安装

1
2
docker ps
docker logs qinglong

4、登录进容器

1
docker exec -it qinglong /bin/bash

5、web访问青龙面板
浏览器访问 http:<ip>:5700
初次访问时,会提示进行初始化配置。

3. 内置命令

3.1. task

1
2
3
4
5
6
7
8
9
10
11
12
# 依次执行,如果设置了随机延迟,将随机延迟一定秒数
task <file_path>
# 依次执行,无论是否设置了随机延迟,均立即运行,前台会输出日,同时记录在日志文件中
task <file_path> now
# 并发执行,无论是否设置了随机延迟,均立即运行,前台不产生日,直接记录在日志文件中,且可指定账号执行
task <file_path> conc <env_name> <account_number>(可选的)
# 指定账号执行,无论是否设置了随机延迟,均立即运行
task <file_path> desi <env_name> <account_number>
# 设置任务超时时间
task -m <max_time> <file_path>
# 使用 -- 分割,-- 后面的参数会传给脚本,下面的例子,脚本就可接收到参数 -u whyour -p password
task <file_path> -- -u whyour -p password

3.2. ql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 更新并重启青龙
ql update
# 运行自定义脚本extra.sh
ql extra
# 添加单个脚本文件
ql raw <file_url>
# 添加单个仓库的指定脚本
ql repo <repo_url> <whitelist> <blacklist> <dependence> <branch> <extensions>
# 删除旧日志
ql rmlog <days>
# 启动tg-bot
ql bot
# 检测青龙环境并修复
ql check
# 重置登录错误次数
ql resetlet
# 禁用两步登录
ql resettfa

参数说明:

  • file_url: 脚本地址
  • repo_url: 仓库地址
  • whitelist: 拉取仓库时的白名单,即就是需要拉取的脚本的路径包含的字符串,多个竖线分割
  • blacklist: 拉取仓库时的黑名单,即就是需要拉取的脚本的路径不包含的字符串,多个竖线分割
  • dependence: 拉取仓库需要的依赖文件,会直接从仓库拷贝到scripts下的仓库目录,不受黑名单影响,多个竖线分割
  • extensions: 拉取仓库的文件后缀,多个竖线分割
  • branch: 拉取仓库的分支
  • days: 需要保留的日志的天数
  • file_path: 任务执行时的文件路径
  • env_name: 任务执行时需要并发或者指定时的环境变量名称
  • account_number: 任务执行时指定某个环境变量需要执行的账号序号
  • max_time: 超时时间,后缀”s”代表秒(默认值), “m”代表分, “h”代表小时, “d”代表天

4. 配置青龙面板

4.1. 配置支持更多脚本类型

点击左侧配置文件,找到 RepoFileExtensions="js py" ,修改为 RepoFileExtensions="js py sh ts",右上角保存。

点击左侧对比工具,对比修改前后的变化。

4.2. 安装脚本需要的依赖

点击左侧依赖管理,创建依赖,名称一栏中输入脚本可能需要的依赖,多个依赖换行输入,点击确定即可下载安装依赖。

4.3. 配置面板通知

点击左侧通知设置,选择一个通知方式,根据提示填入必要的信息,保存。
建议使用飞书机器人,配置最简单:飞书群里新建一个自定义机器人,把webhook地址的最后一段粘贴到larkKey即可。

4.4. 配置脚本通知

青龙面板设置里的那个只是用来面板级别的通知,比如订阅更新。而脚本里的通知,需要在配置文件里去配置的。详情参考文档如何设置任务执行完毕后发送通知

1、微信登录 Server酱,获取一个SendKey,测试通知

2、点击左侧配置文件,找到 PUSH_KEY ,填入上一步获取到的 SendKey,保存

4.5. 配置代理

点击左侧环境变量,添加两个关于代理的环境变量。

1
2
http_proxy=http://192.168.5.233:20171
https_proxy=http://192.168.5.233:20171

之所以要配置代理,是因为很多订阅是从github拉取的,而github从国内访问是需要科学上网的,因此最好配置一下代理。
这两个代理变量,平时禁用,拉取订阅时启用。

5. 配置签到任务

5.1. 阿里云盘签到

参考文档:github - mrabit/aliyundriveDailyCheck

1、获取阿里云盘 refresh_token
web登录阿里云盘后,控制台粘贴

1
copy(JSON.parse(localStorage.token).refresh_token); console.log(JSON.parse(localStorage.token).refresh_token);

2、青龙面板添加环境变量 refreshToken
如果有多个账号要签到,那就添加多个refreshToken。

3、安装js依赖

1
axios

4、添加订阅

1
ql repo https://github.com/mrabit/aliyundriveDailyCheck.git "autoSignin" "" "qlApi"

添加订阅后,点击运行,即可从github拉取定时任务。拉取成功之后,建议禁用订阅。

5、配置定时任务
点击定时任务页面,找到 autoSignin.js 任务,点击运行,测试运行。
测试没有问题,编辑定时任务,设置一个合适的运行时间。

6、配置自动更新 refreshToken
系统设置,应用设置,创建一个应用 autoSignin(名称随意)。
autoSignin 应用的 CLIENT_ID 和 CLIENT_SECRET 配置到环境变量中。

  • 本文作者: 好好学习的郝
  • 原文链接: https://www.voidking.com/dev-docker-qinglong/
  • 版权声明: 本文采用 BY-NC-SA 许可协议,转载请注明出处!源站会即时更新知识点并修正错误,欢迎访问~
  • 微信公众号同步更新,欢迎关注~