- 逆向行駛 - https://520.be/ -

[CentOS]在VPS上安裝BT軟體qBittorrent

/* ================================================================ ✨ 本篇專屬特殊功能樣式 注意:全域版面(.my-article、h1~h4、表格、blockquote、按鈕等)已載入外部 CSS 此區塊僅保留本篇文章專屬之「程式碼區塊」擴充樣式 ================================================================ */

.my-article pre { background-color: #111; border-left: 4px solid var(--color-code); padding: 16px; border-radius: 8px; overflow-x: auto; color: #d0d0d8; font-family: var(--font-mono); font-size: 14.5px; margin: 16px 0; } .my-article code { background-color: #1a1a1c; color: var(--color-code); padding: 2px 6px; border-radius: 4px; font-family: var(--font-mono); }

🚀 【CentOS 教學】VPS 變身 24 小時 BT 下載神器:qBittorrent 手把手編譯安裝全攻略

🔥 一句話總結: 以前大家都愛用 Transmission 來抓檔,但隨著它爆出安全漏洞,我們需要更強大的替代品!這篇文章將帶你從零開始,在 CentOS 上把風靡全球的 qBittorrent 架設起來,讓你的伺服器化身為效能破表的雲端下載機!📥

以前我曾經向大家介紹過功能強大的 BT 軟體 Transmission [8],甚至還教過怎麼搭配 FlexGet 變身成全自動追劇下載機 [9] 🤖🤓🤖。

可是瑞凡,科技的進步是不等人的啊!🤓 ⚠️ 自從 Transmission 2.92 版本爆出重大漏洞後,官方的更新速度就變得非常緩慢。身為熱愛榨乾 VPS(虛擬專屬主機)效能的玩家,怎麼能容忍這種事?所以我決定換一套全新的武器來玩耍!🗡

💡 白話文教室:為什麼要用 VPS 掛 BT 呢?
你可以把租來的 VPS 想像成一間 💙 24 小時不斷水不斷電的雲端小套房。
如果你只拿來放一個沒什麼人看的網頁,那真的太浪費月租費了。把 BT 軟體裝上去,它就成了一個「專屬數位管家」,無論你在吃飯還是睡覺,它都在雲端默默幫你把大檔案搬回家,完全不佔用你自己電腦的網路頻寬跟硬碟空間!🛜

尋尋覓覓後,我看上了採用 libtorrent-rasterbar [10] 作為底層核心引擎的 qBittorrent [11]。它同樣內建了超好用的網頁管理介面,而且各版本的支援性非常高。經過實測,在 CentOS 📊 6.10 (Final)📊 7.6.1810 上都能順利成功運行,這邊就把完整的編譯與安裝過程紀錄下來,跟著做保證不踩雷!💣


🟩 🟩 🟩

🛠️ 準備動手!手把手編譯安裝教學

為什麼我們不直接用指令安裝,而是要大費周章地「編譯」呢?

✅ 白話文神級比喻:直接從 CentOS 內建軟體庫下載,就像是去大賣場買「組裝好的舊款廉價衣櫃」,雖然快,但效能跟功能都很過時。而「編譯安裝」,就像是我們自己去特力屋買頂級木材(原始碼)跟工具箱,親手打造一個量身訂做、最新款的無敵系統櫃!🗄️

  1. ❶ 買齊工具箱:安裝依賴套件
    第一步,我們要先幫 CentOS 準備好各種編譯用的工具與函式庫。

    yum groupinstall -y "Development Tools"
    yum install -y qt-devel boost-devel openssl-devel qt5-qtbase-devel qt5-linguist GeoIP-update
  2. ❷ 打造 V8 引擎:手動編譯安裝 libtorrent-rasterbar
    qBittorrent 只是漂亮的車殼,它真正強大的抓檔效能來自於底層的 🚨 libtorrent-rasterbar 引擎。我們先來組裝這顆引擎(此處使用 ⚙️ 1.1.12 版本)。🏎️

    cd /usr/src
    wget https://github.com/arvidn/libtorrent/releases/download/libtorrent_1_1_12/libtorrent-rasterbar-1.1.12.tar.gz
    tar -zxf libtorrent-rasterbar-*.tar.gz
    cd libtorrent-rasterbar-*
    ./configure --prefix=/usr CXXFLAGS=-std=c++11
    make && make install
    ln -s /usr/lib/pkgconfig/libtorrent-rasterbar.pc /usr/lib64/pkgconfig/libtorrent-rasterbar.pc
    ln -s /usr/lib/libtorrent-rasterbar.so.9 /usr/lib64/libtorrent-rasterbar.so.9

    💡 隱藏細節: 最後兩行 ln -s 是在建立「捷徑」,確保 64 位元系統能正確找到我們剛裝好的引擎。

  3. ❸ 安裝漂亮車殼:手動編譯安裝 qBittorrent
    引擎搞定了,接著就是安裝主程式(此處使用 ⚙️ 3.3.16 版本)。因為我們裝在沒有螢幕的伺服器上,所以記得加上 –disable-gui 參數,告訴它「不需要安裝桌面視窗,只要網頁後台就好」。👻

    cd /usr/src
    wget -O qBittorrent-release-3.3.16.tar.gz https://github.com/qbittorrent/qBittorrent/archive/release-3.3.16.tar.gz
    tar -zxf qBittorrent-release-*.tar.gz
    cd qBittorrent-release-*
    ./configure --prefix=/usr --disable-gui CPPFLAGS=-I/usr/include/qt5
    make && make install
  4. ❹ 規定機器人的守則:建立設定檔
    我們需要寫一張小紙條,告訴 qBittorrent 要把「網頁管理介面」打開。

    mkdir -p ~/.config/qBittorrent
    cat > ~/.config/qBittorrent/qBittorrent.conf <<- EOF
    [Preferences]
    WebUI\Enabled=true
    EOF
  5. ❺ 招募專屬保全:新增服務使用者
    基於資安考量,我們絕對不能用最高權限 (root) 來跑下載軟體。我們幫它建一個專屬員工帳號。🔒

    🚨 注意:密碼部分要輸入兩次,請務必牢記!

    useradd qBittorrent
    passwd qBittorrent
  6. ❻ 設定自動打卡機:建立啟動腳本 (Systemd)
    讓軟體在 VPS 重新開機時可以自動啟動。這裡我把網頁介面的 Port 改成了 ⚙️ 8998 (預設原本是 8080,容易跟別人衝突)。

    cat > /etc/systemd/system/qbittorrent.service <<- EOF
    [Unit]
    Description=qBittorrent torrent server
    [Service]
    User=qBittorrent
    ExecStart=/usr/bin/qbittorrent-nox --webui-port=8998
    Restart=on-abort
    [Install]
    WantedBy=multi-user.target
    EOF

🟦 🟦 🟦

🛡️ 打通任督二脈:防火牆與啟動服務

💡 白話文教室:什麼是防火牆打洞?
Linux 的防火牆 (iptables/firewalld) 就像是超嚴格的大樓保全。
即使你的數位管家 (qBittorrent) 已經在裡面準備好收發包裹了,如果保全不放行,你還是無法從外面連線進來。我們現在要跟保全說:「只要是走 🚪 8998 號門 的網頁控制,以及走 🚪 8999 號門 傳輸檔案的,通通放行!」🔑

  1. ❼ 設定防火牆白名單
    將自訂的 8998 (WebUI) 與 8999 (P2P通訊埠) 加入放行清單。🛡️

    service iptables stop
    iptables -A INPUT -p tcp --dport 8998 -j ACCEPT
    iptables -A INPUT -p udp --dport 8999 -j ACCEPT
    service iptables save
    systemctl restart iptables
    
    ### 如果你的系統是用 firewalld,請改成下列指令:
    firewall-cmd --permanent --add-port=8998/tcp
    firewall-cmd --permanent --add-port=8999/udp
    firewall-cmd --reload
  2. ❽ 正式啟動 qBittorrent 服務
    賦予腳本執行權限,並讓它開機自動啟動。

    chmod +x /etc/systemd/system/qbittorrent.service
    systemctl enable qbittorrent
    systemctl daemon-reload
    systemctl start qbittorrent
  3. ❾ 進入專屬網頁後台 🌐
    打開瀏覽器,網址輸入 🔗 http://你的IP:8998 即可進入畫面!

    ⚙️ 設定項目 📝 詳細內容
    預設帳號 admin
    預設密碼 adminadmin
    修改繁體中文 點選上方選單:Tools >> Options >> Web UI >> User Interface Language 選擇正體中文
    ⚠️ 絕對要做的第一件事 🚨 Authentication >> 立刻修改預設密碼! 否則全世界都能進你的伺服器亂搞!🐛
  4. ❿ 打完收工,清潔溜溜 🧹
    回到 SSH 畫面,把剛剛編譯時下載的一大堆安裝包與垃圾檔清乾淨,釋放空間 🤓。

    cd /usr/src
    rm -fr libtorrent-rasterbar-* qBittorrent-release-*

🟪 🟪 🟪

🩺 額外加碼:疑難排解與終極最佳化指南

架設好之後,如果你想要監控它的運作狀態,或是進一步解開 VPS 系統的枷鎖(讓水管變得更粗,吞吐量更大),可以使用以下的高階指令!

🔎 檢查 qBittorrent 啟動狀態

這三個指令就像是幫系統照 X 光,可以確認服務有沒有乖乖在背景執行:

systemctl status qbittorrent -l
ps ax | grep qbittorrent-*
netstat -atunp | grep qbittorrent-*

🚀 (可選) 系統吞吐量極限最佳化 (Kernel Tuning)

🚨 老司機警告:
以下是針對 Linux 核心 sysctl 參數的魔改指令。它的原理是強制拓寬系統的網路連線數量與記憶體緩衝區(就像把一般公路升級成八線道高速公路)。如果你的 VPS 規格太差(例如記憶體不到 1GB),請斟酌使用,以免系統負載過重當機喔!😈

ulimit -n 51200
sysctl -w net.core.default_qdisc=fq
sysctl -w net.core.rmem_default=65536
sysctl -w net.core.wmem_default=65536
sysctl -w net.core.rmem_max=67108864
sysctl -w net.core.wmem_max=67108864
sysctl -w net.core.netdev_max_backlog=4096
sysctl -w net.ipv4.tcp_congestion_control=htcp
sysctl -w net.ipv4.tcp_mtu_probing=1
sysctl -w net.ipv4.tcp_rmem='4096 87380 33554432'
sysctl -w net.ipv4.tcp_wmem='4096 65536 33554432'
### 個人常用的最佳化指令開始
sysctl -w net.core.optmem_max=25165824
sysctl -w net.core.somaxconn=4096
sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv4.route.flush=1
sysctl -w net.ipv4.tcp_fastopen=3
sysctl -w net.ipv4.tcp_fin_timeout=30
sysctl -w net.ipv4.tcp_keepalive_time=1200
sysctl -w net.ipv4.tcp_max_syn_backlog=4096
sysctl -w net.ipv4.tcp_max_tw_buckets=1440000
sysctl -w net.ipv4.tcp_mtu_probing=1
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_tw_recycle=0
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w fs.file-max=2097152
### 個人常用的最佳化指令結束
sysctl --system

執行完畢後,你的 CentOS 網路體質就徹底脫胎換骨啦 🏎️


🟫 🟫 🟫

📚 延伸閱讀與參考資料

列印本文 [15] 👨‍👩‍👧‍👦 8 次瀏覽