前言

在服务器上部署青龙面板有非常多弊端:

数据中心 IP 相较于家宽 IP 更容易黑号,而且服务器所在地往往不和自己在同一个城市,异地登录可能会被风控服务器 IP 固定,一但被拉黑 IP 无法或者很难更换想要使用 Spy 往往还需要服务器设置代理,配置麻烦,还有可能被云服务商警告甚至封号(比如腾讯云)端口暴露在公网上,容易被人集中扫描爆破泄露 CK(看看登录日志密密麻麻的失败记录就知道)

而把青龙面板部署在软路由上,能够避免以上的所有缺点。动态家宽 IP,与常用登录地一致;青龙面板可以直接通过软路由上的插件(比如小猫咪)科学,不需要额外设置;大内网,不用担心被扫端口。

而要说最入门的软路由,当然非 R2S 莫数(N1 单网口还是差点意思),咸鱼上价格 200 出头,买全新的也贵不到哪里去。

有人担心 R2S 的性能会不会过于羸弱,但青龙面板占用资源不多,1G 内存运行 小猫咪 + ADGuardHome + 青龙面板 + Spy 只占用到 500M 左右,绰绰有余。实测已经稳定运行两个月,作为主路由几乎感受不到性能损失。

只要你的电源(5V2A,建议 5V3A)和 TF 卡(A1 以上,推荐三星)合格,作为主路由顺便跑个青龙面板是完全没问题的。

如果还是不放心,又恰好财力雄厚,完全可以加钱买性能更好的。本教程适用包括但不限于 N1、R2S、X86 等所有能够运行 OpenWRT 系统的软路由。

准备:运行 OpenWRT 的软路由(本文以 R2S 为例)、SD 卡、读卡器、网线、一颗折腾的心

Let’s start!

刷写系统

注:如果你用的是其他型号的软路由,请自行搜索相应固件和刷写教程

推荐骷髅头大佬的 Docker 版本固件,其他固件自测

https://github.com/DHDAXCW/NanoPi-R2S-rk3328/releases

选择 Docker容器版_全插件 版本,下载 xxxx.squashfs-sysupgrade.img.gz 的文件

附:未集成 Docker 的固件可以手动安装 DockerMan 插件: 在 OpenWRT 后台 系统-软件包 手动安装 luci-lib-jsonc、luci-lib-docker、luci-app-dockerman,重启软路由

然后插入读卡器,下载 balenaEtcher https://www.balena.io/etcher/ 刷写固件

安装后打开,点击 Flash form file,选择刚刚下载的固件,Select taget 选择读卡器,然后点击 Flash 刷写完成后把 SD 卡插入 R2S,擦腚揩鸡!

系统设置

电脑网线连接 R2S LAN 口(靠近电源口的那个网口)

由于 OpenWRT 默认设置不和主路由在同一网段无法直接访问后台,因此要先修改电脑网络配置: 网络和 Internet - 网络属性 - IP 分配 改成手动,IP 地址填写 192.168.11.x(x>1) 、网关和 DNS 都填写 192.168.11.1 ,子网掩码 255.255.255.0 ,保存

然后浏览器访问 192.168.11.1,用户名:root 密码:password,顺利进入后台

系统 - 管理权 先修改后台密码,下方 SSH 访问按图勾选,保存并应用

因为后面有需要用到 SSH 的地方,懒得特意去下软件的朋友可以用 OpenWRT 后台里的系统 -TTYD终端,功能一样。

建议先配置好网络,能用到软路由的朋友应该不用我教吧~

作为主路由 PPPoE 拨号还是旁路由自由选择,只要能够确保连接到网络就行

安装青龙面板

OpenWRT 后台左侧栏,Docker - 容器,点击添加: 选择命令行: 复制以下命令(直接在 SSH 终端执行也可以):

docker run -d --name qinglong \

-p 5700:5700 \

-v /root/ql:/ql/data \

--restart=always \

whyour/qinglong:2.11.3

注:之所以指定拉取 2.11.3 版本是因为 Spy 与这个版本的青龙兼容性最好,再高会有奇怪的 bug 甚至无法连接

点击提交,等待执行完成,过程非常慢,Be patient

如果报错 /overlay 分区空间不足,你可能需要扩容分区,参考:https://mlapp.cn/1011.html

具体教程:

在 OpenWRT 后台 系统 - 磁盘管理(即 DiskMan 的 luci 界面)可以看到磁盘标签下空余了大量空间未利用,点击修改,在分区信息标签下找到空闲空间最大且标注了 Free Space 的那一栏:

点击新建,再点击格式化,弹出的对话框选择 ext4 文件系统,等待格式化完成。SSH 连接,先使用 lsblk 查看分区信息: 挂载刚刚创建的分区:mount /dev/mmcblk0p3 /mnt 再使用 lsblk 查看分区信息,可以看到 mmcblk0p3 的挂载点变成了 /mnt将 /overlay 分区下的所有文件拷贝至刚刚建立好的分区内:cp -f -a /overlay/. /mnt使用 ls -a /overlay ls -a /mnt 比对文件是否拷贝成功(少一个 lost+found 应该问题不大),sync 同步文件然后 umount /mnt 卸载分区在 OpenWRT 后台 系统 - 挂载点 点击生成配置,勾选 自动挂载未配置的磁盘 / Swap / 磁盘 三项(除了第一项都已经默认勾选了)往下翻到挂载点标签,找到刚刚创建好的 ext4 分区 /dev/mmcblk0p3,点击修改,勾选启用此挂载点,挂载点选择 作为外部 overlay 使用,保存应用 自动返回到上级页面,往下翻到同一个位置,确认挂载点已勾选,且挂载点为 /overlay,保存应用并重启 OpenWrt扩容完成,可以看到 /overlay 变成 28G 了,美滋滋~

容器成功启动之后,访问 R2S IP 地址:5700,就可以看到熟悉的界面辣~

如果一开始网页界面报错是因为青龙面板还没有完全启动,耐心等待

之后的设置不再赘述,请参考其他教程

青龙教程合集

这里补充一下依赖安装的方法,适用于脚本报错 can't find module xxx 的情况

手动安装 在青龙的依赖管理标签页,根据缺失依赖的类型 NodeJS(.js 脚本) / Python3(.py 脚本) / Linux 来添加

举例: 比如说一个脚本的日志有如下报错: Traceback (most recent call last):

File "/ql/data/scripts/shufflewzc_faker2_main/jd_check_dependent.py", line 20, in `` import requests, os, platform

ModuleNotFoundError: No module named 'requests'

可以看到这是一个 .py 脚本,缺失了一个叫 requests 的依赖 我们在依赖管理中切换到 Python,新建依赖,名称填入 requests,点击确定就会自动安装依赖 或者可以 docker exec -it qinglong bash,在容器内使用命令行安装,比如 pip install requests 注意:脚本里报错缺失 execjs 的依赖,直接安装会报错找不到对应的包,需要安装 PyExecJS 使用依赖修复脚本 Faker 库中提供了依赖修复脚本,直接在定时任务中搜索 依赖,手动执行即可 需要特殊设置的脚本:

单容器 二叉树修复脚本依赖文件: 需要在配置文件 config.sh 中添加一行 export ec_fix_dep="true" 再运行才会自动修复依赖 青龙日志分析 && 自动补全依赖: 同样是在 config.sh 中添加 export QL_LOG_AUTO_INSTALL_DEPEND="true" 然后手动运行一次,看看自动修复是否会报错,如果有报错则使用青龙的依赖管理手动安装,查看安装日志,看看安装命令是不是 pnpm 如果是的话,需要额外为脚本指定 npm 包管理器,在 config.sh 中添加 export QL_LOG_NPM="pnpm"

部署 Spy

想使用 Spy,请确保软路由已经全局科学,方法自行研究

参考:

青龙面板Spy自动监控执行脚本教程

SSH 连接到 R2S,依次执行以下命令(务必等待上一条命令执行完毕再执行下一条)

wget -O autospy https://raw.githubusercontent.com/xieshang/AutoSpy/master/docker.sh && chmod +x autospy && ./autospy

docker exec -it auto_spy bash

bash <(curl -s -L https://raw.githubusercontent.com/xieshang/AutoSpy/master/spy_update.sh)

mv auto_spy_bot.py auto_spy_bot2.py

exit

docker restart auto_spy

docker exec -it auto_spy bash

pip uninstall telethon -y

pip install telethon==1.24.0

安装完成,然后是 Spy 的具体配置,请参考上面的教程吧~

Enjoy!

查看原文