又一款適用于PT的docker版qBittorrent: 自動分類, tracker錯誤自動標記, 宕機通知, 下載完成通知, 日志顯示, 鏡像多平臺, 鏡像多標簽

  • 20,925

又一款適用于PT的docker版qBittorrent: 自動分類, tracker錯誤自動標記, 宕機通知, 下載完成通知, 日志顯示, 鏡像多平臺, 鏡像多標簽

項目地址

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)建

  1. 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?來解決。

  1. 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站注冊地址! weinxin

Evine
  • 本文由 發(fā)表于 2021年6月4日 10:58:38
評論  5  訪客  5
    • fefase
      fefase 1

      我用官方docker鏡像,它對觸屏的支持不完美。手機瀏覽器訪問效果跟PC瀏覽器是一樣的,但太大了不好操作。這個新docker鏡像改善過這個問題嗎?

        • Evine
          Evine

          @ fefase 官方沒有docker鏡像.

          如果想要改善UI交互,需要使用其他非官方webui,我在項目地址中有提及其他的webui清單.

          • Evine
            Evine

            @ fefase 另外,手機上安卓有transdroid這個軟件可以用來當作qb的客戶端.

              • Evine
                Evine

                @ Evine 我之前在qb的webui還沒有rss功能時,寫過一篇使用非官方webui來實現(xiàn)rss的教程:https://www.jianshu.com/p/54a6bf9e5ebe ,可以參考.

            • landcruser99
              landcruser99 0

              來學習一下

            匿名

            發(fā)表評論

            匿名網友 填寫信息

            :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

            確定