草庐IT

OpenWRT 软路由部署青龙面板教程

Kannnro 2023-06-12 原文

前言

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

  1. 数据中心 IP 相较于家宽 IP 更容易黑号,而且服务器所在地往往不和自己在同一个城市,异地登录可能会被风控
  2. 服务器 IP 固定,一但被拉黑 IP 无法或者很难更换
  3. 想要使用 Spy 往往还需要服务器设置代理,配置麻烦,还有可能被云服务商警告甚至封号(比如腾讯云)
  4. 端口暴露在公网上,容易被人集中扫描爆破泄露 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 `<module>` 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!

有关OpenWRT 软路由部署青龙面板教程的更多相关文章

  1. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  2. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

    我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

  3. ruby - rails 3 redirect_to 将参数传递给命名路由 - 2

    我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use

  4. ruby-on-rails - Rails 3,嵌套资源,没有路由匹配 [PUT] - 2

    我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle

  5. ruby-on-rails - Ruby on Rails 可以部署在 Azure 网站上吗? - 2

    我可以在Azure网站上部署RubyonRails吗? 最佳答案 还没有。目前仅支持.NET和PHP。 关于ruby-on-rails-RubyonRails可以部署在Azure网站上吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12964010/

  6. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  7. jenkins部署1--jenkins+gitee持续集成 - 2

    前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon

  8. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  9. 在VMware16虚拟机安装Ubuntu详细教程 - 2

    在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主

  10. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

随机推荐