最近買了個Raspberry pi 4B(剛買5就出來了),想用來充當BT下載機,因為不知道為何BT軟體在桌機運作時,會讓桌機的網路變得特別慢,即使沒有在抓東西,也會變得超慢,之前並不會這樣。總之,就動了想買一台專門處理BT當多媒體機的念頭,本來是想買一台M2 Mini的(約18000左右),但後來朋友推薦可以考慮Raspberry pi,評估了一下8GB版大概4000多(加記憶卡、電源、外殼之類的),好像能省不少~


等了幾天到手了Raspberry pi ,由於為了讓性能更好,就裝了沒有GUI介面的Ubuntu (Ubuntu Server),但即使沒有GUI介面也是能跑BT軟體的(qbittorrent)

安裝流程麻煩了一點,但也有幾分樂趣(創魂 On~),讓我們開始吧!


Ubuntu無頭BT簡單介紹

這邊使用的是qbittorrent,又叫qbittorrent-nox。無頭由於沒有畫面,所以這個qbittorrent-nox本身安裝好以後,會有一個微型的Web Server,我們可以用別台電腦,透過瀏覽器訪問內網來操作。


安裝流程

一.添加來源 & 更新包

#加來源

sudo add-apt-repository ppa:qbittorrent-team/qbittorrent-stable

#更新包

sudo apt-get update

二.安裝qbittorrent-nox

sudo apt-get install qbittorrent-nox

三.啟動軟體

qbittorrent-nox


就這麼簡單? 嗯.... 當然不是


首先,你在啟動軟體時,可能會遇到像這樣的錯誤

qbittorrent-nox: error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory

以下是解決辦法

sudo apt update 

sudo apt install binutils -y 

sudo strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5

然後再次啟動,就可以啟動了,預設端口是8080,例如:192.168.1.56:8080 (實際內網IP根據你電腦分配的為準)

默認帳號是是admin,密碼是adminadmin


正常來說到這邊就能使用了,但目前來說有個問題,就是這個軟體你得在終端機一直開著,一旦中斷軟體就關掉了,本身是沒有進程守護的,所以我們得給它加上一個,讓它可以像nginx這樣的軟體一樣,是可以用systemctl start 這樣的指令。操作流程如下

四.添加進程守護

1.添加Linux 使用者

首先,我們需要添加一個Linux使用者,這邊就建立一個叫 qbtuser 的使用者

sudo adduser qbtuser

會出現要你設定密碼、確認密碼、用戶名子、電話..之類的(只有密碼跟確認密碼必填,其他的可以留空白就好)

螢幕擷取畫面 2023-09-30 064024.png


2.建立Service

建立一個進程守護的Service,在 /etc/systemd/system/ 資料夾,建立一個名為 qbittorrent.service 的檔案

[Unit]
Description=qBittorrent Daemon Service 
serviceDocumentation=man:qbittorrent-nox(1)
Wants=network-online.target
After=network-online.target nss-lookup.target
 
[Service]
#
Type=simple
User=qbtuser
ExecStart=/usr/bin/qbittorrent-nox
TimeoutStopSec=infinity
 
[Install]
WantedBy=multi-user.target

文章參考:https://github.com/qbittorrent/qBittorrent/wiki/Running-qBittorrent-without-X-server-(WebUI-only,-systemd-service-set-up,-Ubuntu-15.04-or-newer)


註:由於是要建立在/etc 資料夾,需要的權限比較高,以下兩種做法

(1). 用sudo nano /etc/systemd/system/qbittorrent.service 產生檔案

(2). 本地建立qbittorrent.service,編輯好以後上傳到 /home/你登入的user帳號(例如:liuser) 目錄,再用移動檔案的方式

sudo mv /home/liuser/qbittorrent.service /etc/systemd/system/

3.重啟daemon進程守護

檔案添加到/etc/systemd/system/ 以後,輸入以下指令,重啟進程守護服務

sudo systemctl daemon-reload

4.使用qbtuser測試

這邊我們先切換到qbtuser使用者,來測試看看是否有足夠的權限運行qbittorrent-nox

#將目前使用者暫時切換到另一個使用者
sudo su qbtuser 

#運行 

qbittorrent-nox

假如可以運行的話,就可以退回我們原本的帳號

ctrl+c 退出qbittorrent 

再輸入 exit 

我們將從qbtuser 退回我們的liuser帳號

5.啟動進程守護

#啟動qbittorrent進程守護

sudo systemctl start qbittorrent 

#檢視狀態 

sudo systemctl status qbittorrent 

#跟隨開機自動啟動 

sudo systemctl enable qbittorrent 

#停止 

sudo systemctl stop qbittorrent

6.安全設定

#禁止qbtuser透過ssh登入 

qbtuser sudo usermod -s /usr/sbin/nologin qbtuser

#之後想反轉,可以讓qbtuser可以用ssh 

sudo usermod -s /bin/bash qbtuser

7.其他設定

#刪除啟動腳本: 

sudo rm /etc/systemd/system/qbittorrent.service 

#刪除 qBittorrent 套件: 

sudo apt-get remove --purge "qbittorrent*" 

#刪除日誌檔: 

sudo rm /var/log/qbittorrent.log 

#刪除 qbtuser 的主資料夾和設定檔。如果您想重新安裝 qbittorrent 或其他東西,您可能需要保留或備份它: 

sudo rm -R /home/qbtuser 

#刪除 qbtuser: 

sudo userdel qbtuser


大致到這邊就完成了,下面這邊看你有沒有這個需求。

因為我是使用Raspberry pi 硬碟空間就只有tf卡 64GB而已,因此我有外接一個WD Book的硬碟(硬碟格式還是exFat),整個就麻煩了許多,記錄一下,僅供參考。


一. 下載的目錄相關

假設您將 qbittorrent-nox 設定為將檔案下載到另一個磁碟機中的目錄, 例如安裝在「/media/volume」上。需要防止 qbittorrent 在不應寫入的目錄中寫入文件,防止驅動器無法掛載或意外卸載。 

將掛載點加到/etc/fstab,它應該具有如下行: 

 UUID=c687355d-0ddf-4dc7-bbbc-bab1589d0690 /media/volume  ext4     defaults,nofail 0 

 “nofail”選項可防止系統在驅動器無法在啟動時安裝的情況下停止啟動程序。

這個部分可以先略過,先大致了解就好,下面會有實際配置例子。


二.編輯qbittorrent.service

使用掛載硬碟的話,qbittorrent.service 配置會有些不同

[Unit]
Description=qBittorrent Daemon Service
Wants=network-online.target
After=network-online.target nss-lookup.target local-fs.target
BindsTo=mywd12T
 
[Service]
User=qbtuser
Group=qbtuser
ExecStart=/usr/bin/qbittorrent-nox
TimeoutStopSec=infinity
 
[Install]
WantedBy=multi-user.target

Wants=network-online.target,表示希望服務在網路連線建立後啟動。(已經連網後再啟用)

After=network-online.target nss-lookup.target local-fs.target,表示確保是在網路連網後、域名解析、硬碟掛載之後啟用

BindsTo=mywd12T,這個對應掛載的硬碟的自定義名稱,我的掛載硬碟取名為mywd12T

大致是這樣,實際的還請自行查個文件,這塊不太熟。


三.給予寫入讀取權限

由於我掛載的硬碟是exFat格式,沒法直接用Linux的檔案權限,也就是設0777、0755...那種沒用

不給權限的話,雖然能添加BT任務成功,但下載會出現錯誤,進度會始終都是0

嘗試了多種方法以後,總算是動了起來....


假如你還沒掛載外接硬碟的,可以參考這篇

Ubuntu外接掛載硬碟

設定掛載硬碟允許的權限

(沒效的)爬了許多文章,都採用下面的指令,但這個對我沒效果

# uid=授權的使用者 gid=授權的群組 

sudo mount -t exfat -o uid=qbtuser,gid=qbtuser /dev/sda1 /mnt/mywd12T

(有效的)後來嘗試了下面的指令,就有效了

sudo mount -o rw,exec,gid=qbtuser,umask=007 /dev/sda1 /mnt/mywd12T

假如已經掛載中,要先解除掛載

sudo umount /mnt/mywd12T

假如寫target is busy,則使用lsof查看目前正在使用它的

sudo lsof /mnt/mywd12T

刪除正在使用的進程 sudo kill -9 <PID>

#刪除使用它的進程

sudo kill -9 12345678

#重新umount

sudo umount /mnt/mywd12T

由於只能授權一個群組(使用多個授權不會報錯,但似乎沒效果),所以這邊可以將其他用戶加到這個群組

sudo usermod -aG qbtuser liuser

讓硬碟隨系統自動掛載

#編輯/etc/fstab

sudo nano /etc/fstab

#添加(第一段範例是用UUID,我們這邊改用/dev/sda1)

/dev/sda1   /mnt/mywd12T   exfat   rw,exec,auto,gid=qbtuser,umask=007r   defaults,nofail   0

(2023.10.24更正版)

/dev/sda1   /mnt/mywd12T   exfat   rw,exec,auto,gid=qbtuser,umask=007   defaults,nofail   0 0

#保存fstab後,可用以下指令測試fstab是否配置正確

mount -a


#保存退出後,重新load 

sudo systemctl daemon-reload

不過這個不知道是否有bug,本身使用raspberry pi 時,重開機確實能自動掛載,但假如我拔掉外接硬碟,再重開機,它仍然會嘗試找尋硬碟,開機會變超級久,多了好幾分鐘,甚至重複多次開機後,居然系統壞了,只能重刷系統。(不知道是這個掛載的問題,還是曾經有沒正常關機直接拔電源,產生的bug)

2023.10.24(補充說明):

再次嘗試後,確認是fstab配置錯誤導致的,以更正版的方式,重開機也能正常運行。(建議/dev/sda1 那個改成硬碟的UUID會更好)


(2023.10.24說明:後來再次實測,這個確定不需要)

補充. 在嘗試的過程中,有裝了一個exfatprogs套件,但後來不確定這個套件是否有用到

sudo apt install exfatprogs

假如是新的外接硬碟最好不要用exFat格式,在Linux系統下挺麻煩的....


使用自簽SSL

#安裝OpenSSL 

sudo apt-get update sudo apt-get install openssl 

#生成私鑰: 

#使用OpenSSL生成一個新的RSA私鑰。

openssl genrsa -out private.key 2048 

#創建證書簽名請求(CSR): 

#使用私鑰生成一個證書簽名請求(CSR)。在創建CSR時,系統會提示你輸入證書的詳細信息,例如國家、省份、組織名稱等。 

openssl req -new -key private.key -out certificate.csr 

#生成自簽名憑證: 

openssl x509 -req -days 365 -in certificate.csr -signkey private.key -out certificate.crt



#產生的憑證移動到qbtuser目錄

sudo mv /home/[你的使用者名稱]/certificate.crt /home/qbtuser/

sudo mv /home/[你的使用者名稱]/private.key /home/qbtuser/

再把這個憑證輸入進去,之後就能用https了,雖然一樣會寫不安全,但起碼能用

有了https之後,就能用[註冊以處理磁力連結],這樣之後在其他地方點磁力連結就會自動開啟WebUI

記得下面的驗證那邊可以勾選,在指定IP段略過驗證,不然點磁力連結也只能到WebUI登入頁而已

螢幕擷取畫面 2023-11-03 124417.png


假如使用chrome 點磁力連結沒有自動關聯開啟WebUI,可以在網址頁

chrome://settings/handlers

確認是否有你的qBittorrent的IP,把它設為預設就可以了

image.png


文章轉載或引用,請先告知並保留原文出處與連結!!(單純分享或非營利的只需保留原文出處,不用告知)

原文連結:
https://blog.aidec.tw/post/ubuntu-server-install-nohead-bt