在OpenWrt搭建追番系统


本文总结一下自己折腾在OpenWrt搭建AutoBangumi+qBittorrent+Alist+Rclone实现自动下载订阅新番并上传网盘功能的过程

安装docker

1
2
3
4
opkg update
opkg install docker docker-compose dockerd luci-lib-docker luci-app-dockerman
/etc/init.d/dockerd start #启动
/etc/init.d/dockerd enable #开机启动

然后去网络-防火墙-常规设置入站数据出站数据转发都改为接受,否则无法访问docker应用!

使用docker-compose方式安装AutoBangumi

AutoBangumi是基于 Mikan Project、qBittorrent 的全自动追番整理下载工具。只需要在 Mikan Project 上订阅番剧,就可以全自动追番。并且整理完成的名称和目录可以直接被 Plex、Jellyfin 等媒体库软件识别,无需二次刮削。

新建一个docker-compose.yml文件,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
version: '3.2'
services:
auto_bangumi:
container_name: AutoBangumi
environment:
- TZ=Asia/Shanghai
- PGID=1000
- PUID=1000
networks:
- auto_bangumi
ports:
- '自定义端口:7892'
volumes:
- ./config:/app/config
- ./data:/app/data
dns:
- 8.8.8.8
- 223.5.5.5
restart: unless-stopped
image: estrellaxd/auto_bangumi:latest

networks:
auto_bangumi:
volumes:
auto_bangumi:
external: false

启动

1
docker compose up -d

这个时候在管理界面Doccker-容器里面能看到AutoBangumi已经启动,这个时候浏览器输入http://ip:端口/即可打开管理界面,然后根据官方文档进行设置

安装qBittorrent

docker(推荐)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
version: "3.2"
services:
qbittorrentee:
image: superng6/qbittorrentee
container_name: qbittorrentee
environment:
- PUID=0
- PGID=0
- UMASK=022
- TZ=Asia/Shanghai
volumes:
- ./config:/config
- '/mnt/usbdisk/downloads:/downloads' #自行更改
- '/mnt:/mnt'
ports:
- 6881:6881
- 6881:6881/udp
- 7896:8080
restart: unless-stopped

luci

安装qBittorrent需要安装很多依赖,如下

1
2
3
4
5
6
7
8
9
libdouble-conversion_3.2.1-2_x86_64.ipk
libQt6Core_6.4.2-3_x86_64.ipk
libQt6Network_6.4.2-3_x86_64.ipk
libQt6Sql_6.4.2-3_x86_64.ipk
libQt6Xml_6.4.2-3_x86_64.ipk
qt6-plugin-libqopensslbackend_6.4.2-3_x86_64.ipk
qt6-plugin-libqsqlite_6.4.2-3_x86_64.ipk
qBittorrent-Enhanced-Edition_4.5.2.10-1_x86_64.ipk
luci-app-qbittorrent_git-24.061.45533-315c891_all.ipk

以上插件官方软件包可能没有,可前往这里下载,还有就是以上插件顺序可能不对,请根据提示安装就好,全部安装后网络存储会出现qBittorrent,这说明安装成功了,然后启动!

Alist

docker(推荐)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// docker-compose.yml
version: '3.3'
services:
alist:
restart: always
volumes:
- './alist:/opt/alist/data'
- '/mnt:/mnt'
ports:
- '5244:5244'
environment:
- PUID=0
- PGID=0
- UMASK=022
container_name: alist
image: 'xhofe/alist:latest'

luci

1
2
opkg update
opkg install alist luci-app-alist

安装完毕后网络存储会有Alist 文件列表菜单出现,然后启动打开界面挂载自己所需的网盘

Rclone

安装

1
2
opkg update
opkg install rclone

安装完毕后进行挂载设置

1
rclone config #根据提示操作,关键点是url要填路由器ip(如192.168.0.1)不要填127.0.0.0,挂载方式选择webDav,账号密码填alist的,具体可以看alist官网(https://alist.nn.ci/zh/guide/webdav.html)

设置完毕后开始挂载

1
2
3
4
mkdir /data/alist
mkdir /mnt/logs
mkdir /mnt/tmp
rclone -v mount alist:/ /data/alist --config /root/.config/rclone/rclone.conf --cache-dir /mnt/tmp --allow-other --vfs-cache-mode writes --allow-non-empty --umask 000 --daemon --log-file /mnt/logs/rclone.log

解释:1、alist:/为config设置的name(alist)和挂载目录(/)组合
2、/data/alist为挂载目录
3、/root/.config/rclone/rclone.conf为配置文件路径,正常来讲不用动
4、/mnt/tmp为缓存路径,请填写一个大容量目录
5、/mnt/logs/rclone.log为日志目录
命令输入完毕后,请自行前往对应目录看一下能否访问,如cd /data/alist && ll能看到自己设置的硬盘目录即为成功挂载!

设置开机自动挂载

1
2
3
4
5
6
opkg update
opkg install procps-ng-ps fuse-utils grep # 安装 procps-ng-ps 可得到与linux发行版一样功能的 ps
wget https://raw.githubusercontent.com/sola614/Sundries/master/course/AutoBangumi/rcloned && vim rcloned #脚本修改自己成目录
mv rcloned /etc/init.d/rcloned
chmod +x /etc/init.d/rcloned
bash /etc/init.d/rcloned start

然后去系统-启动项-本地启动脚本添加bash /etc/init.d/rcloned start,最后重启测试下效果,没有意外的话开机启动即可自动挂载,如果不行,请查看日志或检查配置是否正确

自动上传

需要用到一个脚本,原理是定时检查qBittorrent下载完成的任务,然后打标签最后使用rclone copy到挂载目录即可上传到网盘,下载后根据实际修改里面的参数,然后在系统-计划任务里添加*/1 * * * * bash /root/AutoBangumi/qb_auto_rclone_openwrt.sh>/root/logs/crontab_qb.log最后保存即可,注意修改脚本保存和日志路径
PS:开启定时任务前先运行测试看看有没有报错,然后根据提示安装需要的依赖

公网通过IPV6地址访问

设置ipv6

以下是主路由设置,旁路由请参考资料里的旁路由设置教程

WAN

协议选择 PPPoE,填写你的宽带账号和密码即可,高级设置 中的 获取 IPv6 地址 选择自动,勾选 使用默认网关 和 委托 IPv6 前缀; IPV6 分配长度 选择 已禁用

LAN

  1. 设备中,配置设备br-lan,网桥端口选择希望作为 LAN 口的网口,如eht1、eth2、eth3,保存即可
  2. 接口编辑lan,在高级设置中,勾选委托 IPv6 前缀IPV6 分配长度选择64,然后DHCP 服务器-IPv6设置中,RA服务选择服务器模式,禁用DHCPv6 服务NDP 代理本地 IPV6 DNS 服务器 (IPV4 的 DNS 服务器地址可以提供 AAAA 解析,而且运营商给的 IPV6 前缀变化时,会有一小部分时间路由器的 IPV6 地址变化,而客户端没有及时更新,所以这里干脆禁用 IPV6 DNS 服务器地址,A 解析和 AAAA 解析都通过 IPV4 DNS 服务器地址解析),然后切换到IPV6 RA设置默认路由器选择在可用的前缀上,勾选启用 SLAAC,取消勾选RA标记中的所有选项
  3. 最后保存并应用,然后打开https://www.test-ipv6.com/即可测试

    参考资料

    主路由
    旁路由

安装动态dns

由于运营商下发的ip地址是会变的,所以需要使用动态dns获取最新的ip地址

1
2
opkg update
opkg install luci-app-ddns ddns-scripts-cloudflare

然后设置解析,请参考这里
PS:如果是跟我一样是单网口旁路由的话,可能需要进行以下设置:

1
2
3
4
编辑-高级设置
IP 地址来源选择 URL
用于检测的 URL 填写 http://ipv6.ip.sb
事件网络选择 @LAN6

保存并应用后点重新加载应该就可以正常运行了

防火墙设置

主路由设置

防火墙-端口转发或通信规则添加对应规则,推荐端口转发

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
端口转发:
名称:随意
地址族限制:加宽一般情况都只有ipv6,选仅ipv6,其他根据情况选ipv4和ipv6
协议:TCP+UDP
源区域:选拨号上网的WAN
外部端口:自定义,后续通过这个端口访问
目标区域:选lan
内部IP地址:任意
内部端口:emby映射端口

通信规则:
名称:随意
协议:TCP+UDP
源区域:选拨号上网的WAN
源地址:不用管
源端口:不用管
目标区域:设备(输入)
目标地址:不用管
目标端口:emby映射端口,后续通过这个端口访问
操作:接受

旁路由设置

因为我是旁路由搭建的,经测试发现只要主路由防火墙放开端口即可访问,所以下面都是在主路由设置的

主路由Padavan设置

打开高级设置-自定义设置-在防火墙规则启动后执行:logger -t "【防火墙规则】" "脚本完成"前填入以下参数

1
2
3
ip6tables -A FORWARD -p tcp --dport 自定义端口 -j ACCEPT # Autobangumi
ip6tables -A FORWARD -p tcp --dport 自定义端口 -j ACCEPT # alist
ip6tables -A FORWARD -p tcp --dport 自定义端口 -j ACCEPT # qbit

然后点击应用本页面设置,这时候没有意外的话在浏览器输入http://[路由器的ipv6地址]:端口即可访问对应页面,最好是用手机流量访问测试能不能访问
PS:简单粗暴的把防火墙直接关了也不是不行但是不建议

总结

完成以上安装设置后,你的openwrt系统就具有自动下载订阅新番并上传网盘功能,并且可以通过公网ipv6地址在外面也能访问了!

注意事项

1、本教程为事后总结,可能有一些细节没写清楚,导致各种问题,请发挥自己的搜索能力和动手能力自己测试修改!
2、如果安装了openclash并使用了fakeip模式,请在覆写设置-DNS设置-Fake-IP-Filter里面填入ip.sb过滤掉,否则动态dns有可能获取的是代理ip,不建议使用meta内核,开了之后会导致有些页面无法访问,当然最好就是用REDIR-HOST没那么多坑
3、建议能用了之后备份,出问题也能直接恢复