最近買了個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
會出現要你設定密碼、確認密碼、用戶名子、電話..之類的(只有密碼跟確認密碼必填,其他的可以留空白就好)
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
註:由於是要建立在/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
嘗試了多種方法以後,總算是動了起來....
假如你還沒掛載外接硬碟的,可以參考這篇
設定掛載硬碟允許的權限
(沒效的)爬了許多文章,都採用下面的指令,但這個對我沒效果
# 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登入頁而已
假如使用chrome 點磁力連結沒有自動關聯開啟WebUI,可以在網址頁
chrome://settings/handlers
確認是否有你的qBittorrent的IP,把它設為預設就可以了
文章轉載或引用,請先告知並保留原文出處與連結!!(單純分享或非營利的只需保留原文出處,不用告知)
原文連結:
https://blog.aidec.tw/post/ubuntu-server-install-nohead-bt
若有業務合作需求,可寫信至: opweb666@gmail.com
創業、網站經營相關內容未來將發布在 小易創業筆記