Блог
qBittorrent на медиа сервере
Недавно я собрал себе новый NAS под управлением TrueNAS scale и решил сделать медиа помойку, но сразу встал вопрос как удобно получать и загружать объемные файлы на хранилище?
Решением стала VM под управлением debian и с установленным пакетом qbittorrent и qbittorrent-nox (для организации web интерфейса), приступим!
Устанавливаем необходимые пакеты:
sudo apt install -f qbittorrent qbittorrent-nox
Добавляем юзера и группу для нашего сервиса:
sudo useradd -mU -s /bin/false qbittorrent
Далее нужно создать сервис systemd для удобного управления и автозапуска:
sudo nano /etc/systemd/system/qbittorrent.service
Текст самого сервиса:
[Unit]
Description=qBittorrent
After=network-online.target
[Service]
Type=forking
User=qbittorrent
Group=qbittorrent
WorkingDirectory=/var/lib/qbittorrent
ExecStart=/usr/bin/qbittorrent-nox -d --webui-port=8888
Restart=on-failure
[Install]
WantedBy=multi-user.target
После этого перезагружаем скрипты systemd и пробуем запустить сам сервис:
systemctl daemon-reload
systemctl start qbittorrent
systemctl status qbittorrent
Если запуск прошел успешно добавляем в автозапуск: (ВНИМАНИЕ!!! Возможно этот пункт не нужен, дочитайте до конца)
systemctl enable qbittorrent
Поскольку я использую TrueNAS, я не собирался хранить все файлы внутри VM, и решил использовать SMB/CIFS протокол для записи данных непосредственно на NAS. Как автоматически монтировать smb/cifs шары я описал в отдельной статье
Конечно лучше было бы монтировать шару через fstab, но из-за особенностей очереди запуска в TrueNAS и для пущей надежности я решил использовать systemd.
Так-как я решил использовать systemd это решало дополнительную проблему, а именно запуск qbittorrent без смонтированной шары, все раздачи падали в ошибку, а после подключения шары начинался долгий процесс пересчета сумм, что явно не лучшим образом сказывается на дисках.
Итак, я решил провернуть следующий трюк, отключаем автозагрузку qbittorrent: (если включали пунктом ранее)
systemctl disable qbittorrent
Переходим в редактирование юнита монтирования шары:
sudo nano /etc/systemd/system/mnt-share.mount
И добавляем "Wants=qbittorrent.service" в конец раздела [Unit]:
[Unit]
Description=Share mount
Requires=network-online.target
After=network-online.service
Conflicts=umount.target
Before=umount.target
[Mount]
Type=cifs
What=//192.168.1.2/share
Where=/mnt/share
Options=uid=0,gid=0,file_mode=0777,dir_mode=0777,vers=3.0,credentials=/root/.smbcredentials
TimeoutSec=5
[Install]
WantedBy=multi-user.target
Большое спасибо коллеге Alex, за то что подсказал лучший вариант, до этого я использовал скрипт:
#!/bin/bash
FOLDER="/mnt/share"
MNTD=0
while [ $MNTD -lt 1 ]
do
if ! [[ $(findmnt -M "$FOLDER") ]]; then
echo "[$(date)] Media not mounted"
mount -t cifs -o uid=0,gid=0,file_mode=0777,dir_mode=0777,vers=3.0,credentials=/root/.smbcredentials //192.168.1.2/share
fi
if [[ $(findmnt -M "$FOLDER") ]]; then
echo "[$(date)] Media mouted, starting qbit"
MNTD=1
systemctl restart qbittorrent
fi
sleep 5
done