Debian 部署 Halo 博客系统和青龙面板的一些尝试
一、更新系统
- 和更新源同步
1 | sudo apt update |
- 显示出哪些软件可以更新
1 | sudo apt list --upgradable |
- 进行更新
1 | sudo apt upgrade -y |
- 也可以直接用复合命令更新
1 | sudo apt update && sudo apt upgrade -y |
二、安装 Docker
按照 官方文档 安装 docker
。
2.1、卸载旧版本
运行以下命令以卸载所有冲突的软件包
1 | for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done |
2.2、使用 apt
存储库安装
在新主机上首次安装 Docker
引擎之前,您需要 需要设置 Docker
存储库。之后,您可以安装和更新存储库中的 Docker
。
- 更新软件包索引并安装软件包以允许使用 基于 HTTPS 的存储库
1 | sudo apt-get update |
1 | sudo apt-get install ca-certificates curl gnupg |
- 添加
Docker
的官方GPG
密钥
1 | sudo install -m 0755 -d /etc/apt/keyrings |
1 | curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg |
1 | sudo chmod a+r /etc/apt/keyrings/docker.gpg |
- 使用以下命令设置存储库
1 | echo \ |
- 更新包索引
1 | sudo apt-get update |
2.3、安装 Docker
引擎
安装 Docker Engine、containerd 和 Docker Compose,要安装最新版本,请运行:
1 | sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin |
三、安装 Nginx
3.1、将域名解析到服务器 IP
如果不需要使用 cloudflare
的 CDN
,只是使用 DNS
解析,可以关闭小云朵,把 SSL/TLS 加密模式
设置为关闭,这时会使用自己的证书来保证访问安全。
但是,建议开启 CDN
来隐藏服务器的真实IP
,打开小云朵,把 SSL/TLS 加密模式
设置为完全及以上
。
3.2、安装 nginx
Nginx
是一个免费的开源网络服务器,提供HTTP请求处理、反向代理、缓存和负载均衡等功能。它易于设置,是 Apache
的替代品。
这里我安装的是 Nginx
官方源提供的版本,而不是 Debian官方源
提供的版本。Nginx
官方的安装文档写的很是详细,我们照着来就好。官方文档
- 安装必备组件
1 | sudo apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring |
- 导入官方
nginx
签名密钥,以便apt
可以验证软件包真实性。
获取密钥
1 | curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ |
- 验证下载的文件是否包含正确的密钥
1 | gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg |
- 输出应包含完整指纹,如下所示:
573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
1 | pub rsa2048 2011-08-19 [SC] [expires: 2024-06-14] |
如果指纹不同,请删除该文件。
- 将
nginx
的稳定源加入系统
1 | echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \ |
- 设置
nginx 官方源
的优先级高于Debian
系统的官方仓库
1 | echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \ |
- 更新源,并安装
nginx
1 | sudo apt update |
1 | sudo apt install nginx |
- 查看状态,启动
nginx
安装好的 nginx
默认是 dead
状态,需要启动,并设置开机启动。
1、查看nginx服务的状态
1 | systemctl status nginx |
2、启动nginx服务
1 | sudo systemctl start nginx |
3、设置nginx开机启动
1 | sudo systemctl enable nginx |
4、确认nginx服务的启动状态
1 | systemctl status nginx |
5、相关命令
1 | sudo nginx -V <-- 查看nginx的编译参数 |
3.3、 新建证书文件夹 cert
1 | cd /etc/nginx |
1 | mkdir cert |
1 | cd |
- 将证书上传到
cert
文件夹
使用 Xftp
将下载好的证书上传到证书文件夹。
3.4、默认 nginx
配置文件
- 位于
/etc/nginx/conf.d/default.conf
的配置可以修改如下,开启gzip
,也可以按需开启缓存。
1 | server { |
- 验证并重载
nginx
配置
1 | nginx -t |
1 | nginx -s reload |
四、部署 Halo
,还是部署 halo1.6.1 版本
4.1、创建工作目录
1 | mkdir ~/.halo && cd ~/.halo |
4.2、下载示例配置文件到工作目录
1 | wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml |
4.3、编辑配置文件
,配置数据库
或者端口
等
1 | vim application.yaml |
4.4、拉取 Halo1.6.1
镜像
1 | docker pull halohub/halo:1.6.1 |
4.5、创建容器
1 | docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.6.1 |
4.6、nginx
配置
- 将证书上传到
cert
文件夹
使用 Xftp
将下载好的证书上传到证书文件夹。
- 将
nginx
配置上传到/etc/nginx/conf.d
文件夹
1 | upstream halo { |
4.7、验证并重载 nginx
配置
1 | nginx -t |
1 | nginx -s reload |
这时我们就可以使用域名登陆初始化
Halo
博客了。
如果是从备份恢复,需要在后台-系统-博客设置-博客地址-填写新的域名,不然浏览时主题样式会显示异常。
五、青龙面板
5.1、部署青龙面板
1、通过命令行模式进行部署
如果当前不在 root
根目录,先返回根目录。
1 | cd |
1 | docker pull whyour/qinglong:debian |
1 | docker run -dit \ |
2、nginx
配置
- 将证书上传到
cert
文件夹
使用 Xftp
将下载好的证书上传到证书文件夹。
- 将
nginx
配置上传到/etc/nginx/conf.d
文件夹
1 | upstream qinglong { |
3、验证并重载 nginx
配置
1 | nginx -t |
1 | nginx -s reload |
5.2、参数配置
1、修改配置文件
增加脚本种类及设置 Github
代理
1 | RepoFileExtensions="js py sh ts" |
2、安装依赖
安装方法:点击依赖管理 —— 点击新建依赖 —— 依赖类型选择
NodeJs
—— 自动拆分选择是
—— 名称把对应的依赖全部复制,然后粘贴过来 —— 点击确定即可(另外两个Python3
、Linux
同理)依赖如有安装失败,可以等全部安装完成再单独点击重新安装即可。
NodeJs
依赖如下
1 | ts-md5 |
Python3
依赖如下
1 | ping3 |
Linux
依赖如下
1 | gcc |
3、通知设置
系统设置 —— 通知设置 —— 添加企业微信机器人
weWorkBotKey
配置文件中添加企业微信机器人
weWorkBotKey
也可以使用钉钉机器人通知,自行选择
5.3、签到任务
5.3.1、京东签到(获取京豆、红包、优惠券等)
1、拉取脚本
订阅管理 —— 新建订阅 —— 复制下面 url
,然后粘贴到名称栏,将自动填写
国内机用下面指令(带代理):
1 | ql repo https://js.nbplay.site/https://github.com/6dylan6/jdpro.git "jd_|jx_|jddj_" "backUp" "^jd[^_]|USER|JD|function|sendNotify" |
2023年11月11日更新,上面代理到期,更换下面代理地址:
1 | ql repo https://js.jdpro.site/https://github.com/6dylan6/jdpro.git "jd_|jx_|jddj_" "backUp" "^jd[^_]|USER|JD|function|sendNotify" |
然后填写名称,京东签到
定时任务可以设置
3 2,12,22 * * *
,酌情设置,太过频繁请求可能会风控关闭自动添加任务及自动删除任务
2、脚本管理
添加完毕后,手动点击执行按钮拉取仓库
执行完毕后,脚本全部下载到本地,可在脚本管理中查看
3、设置环境变量
点击环境变量 —— 点击新建环境变量 —— 名称设为:
JD_COOKIE
(这里名称是不能自定义的,一定要用JD_COOKIE
)—— 输入获取到Cookies
的相关参数(获取方法:【点击进入】—— 然后用手机登录—— 登录后按F12
—— 点击应用程序(Application
)—— 点开Cookies
—— 找到pt_key=?;pt_pin=?;
—— 把对应的值替换到问号中即可,分号要保留。)注意事项:登录后不要退出账号,否则
Cookies
会失效
4、添加任务
该仓库中的脚本比较多,建议逐个脚本测试后,再添加任务,免得被锁小黑屋
添加任务:“定时任务”->“新建任务”
名称根据任务填写
命令选择脚本路径,可在脚本管理中查看脚本路径,例如
6dylan6_jdpro/jd_bean_change.js
添加任务命令为
task 6dylan6_jdpro/jd_bean_change.js
定时规则,签到任务一般每天执行一次,安全期间可执行两次
比如:
30 3,6 * * *
意思就是每天3:30 6:30各执行一次脚本
名称 | 命令/脚本 | 定时规则 |
---|---|---|
京东资产统计 | task 6dylan6_jdpro/jd_bean_change.js | 28 8,21 * * * |
京豆详情统计 | task 6dylan6_jdpro/jd_bean_info.js | 2 20 14 12 * |
领京豆签到 | task 6dylan6_jdpro/jd_signbeanact.js | 21 3,13 * * * |
金融签到 | task 6dylan6_jdpro/jd_jrsign.js | 12 15,19 * * * |
领京豆-升级赚豆 | task 6dylan6_jdpro/jd_bean_home.js | 15 2,15 * * * |
每日抽豆 | task 6dylan6_jdpro/jd_dygetbeans.js | 23 2 * * * |
种豆得豆 | task 6dylan6_jdpro/jd_plantBean.js | 22 7-21/2 * * * |
东东农场-任务 | task 6dylan6_jdpro/jd_fruit.js | 3 3,13,18 * * * |
东东健康社区收集能量收集 | task 6dylan6_jdpro/jd_health_collect.js | 5-45/20 0-4 * * * |
微信签到领红包 | task 6dylan6_jdpro/jd_wxSignRed.js | 5 1 * * * |
京东快递签到 | task 6dylan6_jdpro/jd_kd.js | 33 6 * * * |
京东美妆签到 | task 6dylan6_jdpro/jd_sign_graphics1.js | 8 8,16 * * * |
特价版签到提现 | task 6dylan6_jdpro/jd_tj_signcash.js | 11 1 * * * |
京洞察问卷通知 | task 6dylan6_jdpro/jd_insight.js | 35 9 * * * |
汪汪庄园任务 | task 6dylan6_jdpro/jd_joypark_task.js | 8 8 * * * |
京东保价 | task 6dylan6_jdpro/jd_price.js | 1 0,13,23 * * * |
领现金签到 | task 6dylan6_jdpro/jd_cashsign.js | 3 4 * * * |
摇京豆 | task 6dylan6_jdpro/jd_club_lottery.js | 5 5,10 * * * |
积分换话费 | task 6dylan6_jdpro/jd_dwapp.js | 20 2,15 * * * |
首次使用务必运行依赖安装脚本(运行一次即可):
task 6dylan6_jdpro/jd_indeps.sh
5.3.2、阿里云盘每日签到
脚本地址,作者已停止维护此项目。
1、拉取脚本
订阅管理 —— 新建订阅 —— 复制下面 url
,然后粘贴到名称栏,将自动填写
1 | ql repo https://ghproxy.com/https://github.com/mrabit/aliyundriveDailyCheck.git "autoSignin" "" "qlApi" |
- 名称随便填,定时可以写
3 1,13,18 * * *
2、设置环境变量
CLIENT_ID
需添加 环境变量 权限
参数 | 说明 |
---|---|
refreshToken | 阿里云盘 refresh_token, 添加多个可支持多账户签到 |
CLIENT_ID | 可选项, 用于青龙面板 API 更新 refreshToken 字段 |
CLIENT_SECRET | 可选项, 用于青龙面板 API 更新 refreshToken 字段 |
QL_PATH | 可选项, 青龙面板path |
CLIENT_ID
和 CLIENT_SECRET
可在 青龙面板 -> 系统设置 -> 应用设置 -> 新建应用 新增, 用于自动更新环境变量内 refreshToken
配置
3、添加任务
“定时任务”->“新建任务”
名称根据任务填写
命令:
task mrabit_aliyundriveDailyCheck/autoSignin.js
定时:
15 9,15 * * *
5.4、安全配置
不想让其他人进入青龙面板登录界面,可以用 CloudFlare
的 Zero Trust
实现。
进入
Zero Trust
管理界面 —Access
—Applications
—Add an application
选择
Self-Hosted
—select
Application name
自定义 —Session Duration
按需选择 —Subdomain
按实际保护的子域填写 —path
按实际填写,非必须Application Appearance
—Use custom domain
—Select URL
选择域名 — 其他选项保持默认,点击Next
Policy name
自定义 —Action
默认Allow
— 默认Same as application session timeout
Configure rules
—Selector
选择Email
—Value
填入Email
地址 — 其他选项保持默认,点击Next
Setup
界面项保持默认,点击Next
即可创建成功再访问
https://qinglong.ysbzcn.com/
就需要通过验证才能进入 —Email
填入上面设定好的邮箱,输入错误会收不到验证码