項目地址
https://hub.docker.com/r/nevinee/qbittorrent
特點
- 自動按
tracker
分類; - 下載完成發(fā)送通知,可選途徑:釘釘, Telegram, ServerChan, 愛語飛飛;
- 故障時發(fā)送通知,可選途徑同上;
- 日志輸出到docker控制臺,可從portainer查看;
- 集成了
python
; - 即使集成了
python
,體積仍然很?。?/li> - 每兩小時檢查一下tracker狀態(tài),如發(fā)現(xiàn)種子的tracker狀態(tài)有問題,將給該種子添加
TrackerError
的標簽,方便篩選; - 多標簽可用,其中
latest
?4
?4.x
?4.x.x
是多平臺標簽,可用平臺:amd64
?arm/v7
?arm64
,其他標簽均為單平臺標簽。
創(chuàng)建
- docker cli
docker run -dit \
-v $PWD/qbittorrent:/data \
-e TZ="Asia/Shanghai" \
-e WEBUI_PORT=8080 `# WEBUI控制端口,可自定義` \
-e BT_PORT=34567 `# BT監(jiān)聽端口,可自定義` \
-p 8080:8080 `# 冒號左右一致,要同WEBUI_PORT` \
-p 34567:34567/tcp `# 冒號左右一致,要同BT_PORT` \
-p 34567:34567/udp `# 冒號左右一致,要同BT_PORT` \
--restart always \
--name qbittorrent \
--hostname qbittorrent \
nevinee/qbittorrent
armv7設備如若無法使用網絡,可能是seccomp問題,詳見?https://wiki.alpinelinux.org/wiki/Release_Notes_for_Alpine_3.13.0#time64_requirements??梢栽黾?code>--security-opt seccomp=unconfined?來解決。
- docker-compose
version: "2.0"
services:
qbittorrent:
image: nevinee/qbittorrent
container_name: qbittorrent
restart: always
tty: true
network_mode: bridge
hostname: qbitorrent
volumes:
- ./data:/data
environment:
- WEBUI_PORT=8080 # WEBUI控制端口,可自定義
- BT_PORT=34567 # BT監(jiān)聽端口,可自定義
- TZ=Asia/Shanghai # 時區(qū)
ports:
- 8080:8080 # 冒號左右一致,必須同WEBUI_PORT
- 34567:34567 # 冒號左右一致,必須同BT_PORT
- 34567:34567/udp # 冒號左右一致,必須同BT_PORT
如若想將qbittorrent建立在已經創(chuàng)建好的macvlan網絡上,可以按如下方式創(chuàng)建:
version: "2.0"
services:
qbittorrent:
image: nevinee/qbittorrent
container_name: qbittorrent
restart: always
tty: true
networks:
<你的macvlan網絡名稱>:
ipv4_address: <你想設置的ip>
aliases:
- qbittorrent
hostname: qbitorrent
volumes:
- ./data:/data
environment:
- WEBUI_PORT=8080 # WEBUI控制端口,可自定義
- BT_PORT=34567 # BT監(jiān)聽端口,可自定義
- TZ=Asia/Shanghai # 時區(qū)
networks:
<你的macvlan網絡名稱>:
external: true
armv7設備如若無法使用網絡,可能是seccomp問題,詳見?https://wiki.alpinelinux.org/wiki/Release_Notes_for_Alpine_3.13.0#time64_requirements??梢栽赿ocker-compose.yml中增加以下內容來解決:
security_opt:
- seccomp=unconfined
環(huán)境變量清單
在創(chuàng)建命令中,包括已經提及的WEBUI_PORT
,?BT_PORT
,?TZ
在內,總共以下環(huán)境變量,請根據需要自行添加到創(chuàng)建命令中:
序號 | 變量名 | 默認值 | 說明 |
---|---|---|---|
1 | PUID | 1500 | 用戶的uid,以該用戶運行qbittorrent-nox |
2 | PGID | 1500 | 用戶的gid,以該用戶運行qbittorrent-nox |
3 | TZ | Asia/Shanghai | 時區(qū) |
4 | UMASK_SET | 000 | umask |
5 | TG_USER_ID | 通知渠道telegram,如需使用需要和 TG_BOT_TOKEN 同時賦值,私聊 @getuseridbot 獲取 | |
6 | TG_BOT_TOKEN | 通知渠道telegram,如需使用需要和 TG_USER_ID 同時賦值,私聊 @BotFather 獲取 | |
7 | DD_BOT_TOKEN | 通知渠道釘釘,如需使用需要和 DD_BOT_SECRET 同時賦值,機器人設置中webhook鏈接access_token= 后面的字符串 |
|
8 | DD_BOT_SECRET | 通知渠道釘釘,如需使用需要和 DD_BOT_TOKEN 同時賦值,機器人設置中啟用加簽 ,加簽的秘鑰,形如:SEC1234567890abcdefg |
|
9 | IYUU_TOKEN | 通知渠道愛語飛飛,通過?http://iyuu.cn/?獲取 | |
10 | SCKEY | 通知渠道ServerChan,通過?http://sc.ftqq.com/3.version?獲取 | |
11 | CRON_HEALTH_CHECK | 18 * * * * | 健康檢查的cron,在設定的cron運行時如發(fā)現(xiàn)qbittorrent宕機了,則向設置的通知渠道發(fā)送通知,在docker cli中請用一對雙引號引起來,在docker-compose中不要增加引號 |
12 | CRON_AUTO_CATEGORY | 38 * * * * | 自動分類的cron,在設定的cron將所有種子按tracker分類,在docker cli中請用一對雙引號引起來,在docker-compose中不要增加引號 |
目錄說明
只需要映射一個目錄給容器(當然你要映射其他目錄作為下載目錄也沒有問題),在映射的容器內的/data
文件夾下會有以下文件夾:
/data
├── cache # qbittorrent的緩存目錄
├── certs # 用來存放ssl證書,默認是空的,可另外使用acme.sh來申請ssl證書
├── config # 所有的配置文件保存目錄
│?? ├── qBittorrent.conf # **配置文件,很重要,如需恢復配置此文件必須保留**
│?? ├── qBittorrent-data.conf # **上傳下載數(shù)據統(tǒng)計文件,如需恢復配置此文件必須保留**
│?? └── rss # **rss的配置文件保存目錄,如需恢復配置此文件必須保留**
├── data # 所有的數(shù)據文件保存目錄
│?? ├── BT_backup # **torrent的快速恢復文件保存目錄,如需恢復做種數(shù)據此目錄必須保留**
│?? ├── GeoDB # IP數(shù)據保存目錄
│?? ├── logs # 日志文件保存目錄
│?? ├── nova3 # 啟用qBittorrent搜索功能后相關文件保存目錄
│?? └── rss # rss訂閱下載文件保存目錄
├── downloads # 默認下載目錄
├── logs -> data/logs # 只是個軟連接,連接到容器內的/data/data/logs
├── temp # 下載文件臨時存放目錄,默認在配置中未啟用
├── torrents # 保存種子文件目錄,默認在配置中未啟用
├── watch # 監(jiān)控目錄,監(jiān)控這個目錄下的.torrent文件并自動下載,默認在配置中未啟用
└── webui # 存放其他webui文件的目錄,需要自己存放,默認在配置中未啟用
有兩個星號標記的文件或目錄是重要目錄,恢復數(shù)據必須要有這幾個。
相關問題
如何從其他作者的鏡像轉移至本鏡像?
- 進入原來容器的映射目錄下,在config下分別找到
qBittorrent.conf
?qBittorrent-data.conf
?rss
,在data下找到BT_backup
,然后將其參考上面的目錄樹放在容器映射目錄下,然后在創(chuàng)建容器時,保證新容器中的下載文件的保存路徑和舊容器一致,并新建容器即可。 - 舉例說明如何保證新容器中的下載文件的保存路徑和舊容器一致,比如舊容器中下載了一個?
xxx.2020.BluRay.1080p.x264.DTS-XXX
,保存路徑為/movies
(宿主機上的真實路徑為/volume1/home/id/movies
),那么在新建新容器時,給新容器增加一個路徑映射:-v /volume1/home/id/movies:/movies
即可。 - 注意新容器和舊容器映射路徑的權限保持一致。
遺忘登陸密碼,如何重置
# 如果啟用了ssl
docker exec qbittorrent curl -k -X POST -d 'json={"web_ui_username":"新的用戶名","web_ui_password":"新的密碼"}' https://127.0.0.1:${WEBUI_PORT}/api/v2/app/setPreferences
# 如果未啟用ssl
docker exec qbittorrent curl -X POST -d 'json={"web_ui_username":"新的用戶名","web_ui_password":"新的密碼"}' http://127.0.0.1:${WEBUI_PORT}/api/v2/app/setPreferences
如何與emby, jellyfin, plex等等配合使用
將需要配合使用的容器的環(huán)境變量PUID/PGID設置為一樣的即可。
命令
# 發(fā)送通知
docker exec qbittorrent notify "測試消息標題" "測試消息通知內容"
# 將所有種子按tracker進行分類,cron會自動每小時運行一次
docker exec qbittorrent auto-cat -a
# 將指定種子按tracker進行分類,會自動在下載完成時運行一次
docker exec qbittorrent auto-cat -i <hash> # hash可以在種子詳情中的"普通"標簽頁上查看到
# 下載完成時將種子分類,并發(fā)送通知,已經在配置文件中填好了
docker exec qbittorrent dl-finish <hash> # hash可以在種子詳情中的"普通"標簽頁上查看到
# 檢查qbittorrent是否宕機,如宕機則發(fā)送通知,容器本身也會按設置的cron來運行此命令
docker exec qbittorrent health-check
# 檢查所有種子的tracker狀態(tài)是否有問題,如有問題,給該種子添加一個 TrackerError 的標簽,容器本身也會每兩小時跑一次
docker exec qbittorrent tracker-error
# 查看qbittorrent日志,也可以直接在portainer控制臺中看到
docker logs -f qbittorrent
說明
- https://github.com/nevinen/dockerfiles/blob/master/qbittorrent/Dockerfile
- 參考:
- crazymax/qbittorrent?, 參考了Dockerfile;
- 80x86/qbittorrent, 借鑒了標簽和分類的理念,正因為此鏡像源碼未公開,且長期不更新,并且集成acme會和acme本身的項目重復,這才催生我重寫代碼;
- arpaulnet/s6-overlay-stage, 學習了多平臺鏡像制作方法。
問題反饋
請在?https://github.com/nevinen/dockerfiles/issues?提交。
微信掃一掃關注此公眾號,
獲取PT站注冊地址!
1F
我用官方docker鏡像,它對觸屏的支持不完美。手機瀏覽器訪問效果跟PC瀏覽器是一樣的,但太大了不好操作。這個新docker鏡像改善過這個問題嗎?
B1
@ fefase 官方沒有docker鏡像.
如果想要改善UI交互,需要使用其他非官方webui,我在項目地址中有提及其他的webui清單.
B1
@ fefase 另外,手機上安卓有transdroid這個軟件可以用來當作qb的客戶端.
B2
@ Evine 我之前在qb的webui還沒有rss功能時,寫過一篇使用非官方webui來實現(xiàn)rss的教程:https://www.jianshu.com/p/54a6bf9e5ebe ,可以參考.
2F
來學習一下