Содержание

qBittorrent

Свободный BitTorrent клиент, написанный с использованием фреймворка Qt и библиотеки libtorrent.

Пиринг в Yggdrasil

По-умолчанию, клиент прослушивает все сетевые интерфейсы и отлично подходит для обмена файлами в сети Yggdrasil.

При необходимости, в графических настройках можно указать сетевой интерфейс явно, что особенно полезно для изолированного от других сетей сидирования.

Для этого, достаточно указать интерфейс или адрес Yggdrasil из списка доступных:

Preferences → Advanced → Network interface или Optional IP address to bind to

Поскольку трафик между пирами Yggdrasil шифруется по-умолчанию, для снижения нагрузки, штатное шифрование можно отключить:

Preferences → BitTorrent → Privacy → Encription mode → Disable

Сидирование

Загружая файлы посредством протокола BitTorrent, принято делиться раздачей с другими.

Для этого достаточно открыть порт в фаервол:

ufw allow from 0200::/7 to any port [Listening Port]

[Listening Port] - автоматически выданный клиентом порт в разделе PreferencesConnections

Обратите внимание, что UPnP в контексте Yggdrasil не используется, поэтому включение этой опции никак не влияет на участие в сидинге.

Не забываем анонсировать свою раздачу как минимум одному трекеру в сети Yggrasil. Сделать это можно выбрав соответствующий файл, во вкладке TrackersAdd trackers…

Подробная настройка сид-сервера на базе qBittorrent, описана в разделе Сервер на базе qBittorrent

Встроенный трекер

В клиенте qBittorrent имеется встроенный торрент-трекер, активировать который можно в разделе меню:

Advanced → Enable embedded tracker

Разрешаем покдключение к трекеру из сети Yggdrasil (по-умолчанию 9000):

ufw allow from 0200::/7 to any port 9000

Затем, можно поделиться ссылкой вида http://[address]:9000/announce с другими или добавить в список внутрисетевых сервисов

* Организовать легковесный торрент-трекер можно также с помощью специализированного ПО, например Opentracker

Темы оформления

Клиент поддерживает альтернативные темы оформления в формате .qbttheme

Следует учитывать, что темы для десктоп клиента несовместимы с клиентом Web UI.
Для изменения внешнего вида Web UI, вместо файла .qbttheme, используются альтернативные клиенты.

Альтернативный Web UI

Чтобы создать альтернативный Web UI, достаточно скопировать директорию

cp src/webui/www /somelocation/newtheme

Минимальный набор файлов представлен директориями:

/private - все страницы клиента, доступные после авторизации
/public - страница логина

После нужных изменений, путь к альтернативному клиенту можно в опции:

Preferences → Web UI → Use alternative Web UI

В последних версиях qBittorrent была убрана поддержка обработки мульти-язычных строк, поэтому придется удалить конструкции из файлов html авто-заменой

QBT_TR\((.*)\)QBT_TR\[CONTEXT=.*\]

Результатом можно поделиться на GitHub, добавив страницу проекта в список List of known alternate WebUIs

Контрибуция

Для отправки PR в официальный репозиторий, чтобы исключить конфликты обновлений, желательно разбивать правки на отдельные ветки:

git checout master
git checkout -b my-webui-fix

Важно перед отправкой тестировать форматирование и валидность кода:

cd src/webui/www
npm install
npm run lint && npm run format

Сборка из исходников

Актуальные инструкции по компиляции, описаны в файле INSTALL а также разделе официальной Wiki

При использовании последней версии из репозитория, с большой вероятностью, версии зависимостей в штатных репозиториях окажутся устаревшими.
В частности, может дополнительно понадобиться сборка последних версий libboost, libtorrent и Qt.

Автоматическая сборка

Для сборки серверного клиента без графической оболочки (qbittorrent-nox), есть удобная утилита qbittorrent-nox-static, которая соберет все зависимости автоматически.

Удобна тем, что также поддерживает различные платформы, в том числе ARM.

Ручная сборка

libboost

Официальная инструкция:

git clone --recursive https://github.com/boostorg/boost.git
cd boost
./bootstrap.sh
./b2

Главная ветка включает межверсионные изменения последней версии.
На практике, для разрешения зависимостей, используются релизы (это касается и остальных пакетов). Загружаем архив нужной версии и пропускаем шаг git/clone.

Для глобальной установки:

./b2 install

libtorrent

git clone --recurse-submodules https://github.com/arvidn/libtorrent.git
cd libtorrent
./configure
make

* возможно для конфигурации потребуется указать путь к boost, например ./configure –with-boost-libdir=/usr/lib/arm-linux-gnueabihf/

Для глобальной установки:

make install

qt

Необходимую для qBittorrent версию проще всего установить из официального онлайн-установщика (для загрузки потребуется регистрация на сайте).

Также библиотеки (qtbase и qttools) можно загрузить из архива релизов и собрать вручную.

В таком случае, важно учитывать наличие доступных ресурсов - для сборки qtbase понадобится порядка 3Гб ОЗУ и до 5Гб дискового пространства.

Если есть возможность подключения внешнего накопителя, буфер памяти можно увеличить через файл подкачки:

fallocate -l 4G /mount/swapfile
chmod 600 /mount/swapfile
mkswap /mount/swapfile
swapon /mount/swapfile

по завершению:

swapoff /mount/swapfile
rm /mount/swapfile

При монтировании дополнительного дискового пространства посредством /etc/fstab, важно добавить флаги user,exec иначе при сборке cmake выдаст ошибку «Permission denied».

qtbase

Процесс компиляции выглядит примерно так:

cd /mount/qtbase-everywhere-src-6.5.3
cmake -B build
cmake --build build --parallel 4

* 4 - количество потоков

Можно указать параметры для отдельных дистрибутивов, например Debian/Ubuntu

-DCMAKE_BUILD_TYPE=RelWithDebInfo 
-DCMAKE_INSTALL_PREFIX=/usr/local

В этом примере, собранные файлы будут расположены в директории

/mount/qtbase-everywhere-src-6.5.3/build/lib/cmake

Для глобальной установки:

cd /mount/qtbase-everywhere-src-6.5.3/build
cmake --install .
qttools

Как указано в файле dependencies.yaml, сборка требует предустановленной библиотеки qtbase, приступаем только если выполнили предыдущий шаг.

cd /mount/qttools-everywhere-src-6.5.3
qt-configure-module .
cmake --build .

Для глобальной установки:

cmake --install .

qbittorrent-nox

Для сборки серверной версии с помощью cmake - отключаем графическую среду флагом

-DGUI=OFF

Если пакеты Qt не установлены глобально, при компиляции qBittorrent с помощью cmake, нужно указать дополнительный флаг c префиксом директории:

-DCMAKE_PREFIX_PATH='/home/USERNAME/Qt/6.5.3/gcc_64/lib/cmake'

Подробнее о доступных опциях сборки и их значениями по-умолчанию, можно почитать в разделе Compilation

git clone https://github.com/qbittorrent/qBittorrent.git
cd qBittorrent
cmake -B build -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DGUI=OFF
cmake --build build

Готовый бинарный пакет qbittorrent-nox будет доступен в директории /build

Решение проблем

Потребление памяти

При большом количестве раздач, в qBittorrent 4, наблюдается проблема повышенного расхода памяти с активным использованием swap и зависанием интерфейса.

Чтобы избежать перебоев в работе других служб, можно добавить лимиты на процесс, указав объем доступной памяти:

nano /etc/systemd/system/qbittorrent-nox.service

* qbittorrent-nox - серверный клиент qbittorrent

[Service]
MemoryHigh=256M
MemoryMax=512M
MemorySwapMax=512M

В версии 5 (из ветки unstable) проблема пока что не наблюдалась.

Установить альфа версию для требуемого дистрибутива можно из списка на официальной странице загрузок, раздел «Other Binary Packages»
Например, репозиторий Ubuntu:

add-apt-repository ppa:qbittorrent-team/qbittorrent-unstable 

Совместимость

Протоколы

qBittorrent по-умолчанию генерирует торрент-файлы гибридного формата.

Клиенты (например, Transmission) не имеющие поддержку протокола 2 версии, не смогут открыть файл.

Таким образом, при создании торрент-файлов лучше явно указывать формат версии 1.

Magnet

Автоматически сгенерированный из magnet ссылки .torrent файл (при включенной опции авто-сохранения .torrent файлов), может не содержать фрагментов (pieces) что сделает его не совместимым при импорте.

В качестве решения, для раздач лучше генерировать новый .torrent файл после загрузки содержимого.

Зависание скачиваний

В 4 версии клиента замечено зависание (stalled) при скачивании файлов. Частой причиной этому может быть использование только первого трекера (оффлайн) из списка доступных.

Решение описано в официальной инструкции по дополнительным настройкам:

Preferences → Advanced → Always announce to all trackers

Также можно отметить

Preferences → Advanced → Always announce to all trackers in a tier

WebUI открывается как файл

В большинстве случаев связано с настройками MIME.

В дистрибутивах Linux, можно попробовать очистить кеш в директории

/home/USERNAME/local/share/mime

Ошибка авторизации плагинов

При использовании приватных трекеров или таких, что требуют авторизации для осуществления поиска, следует:

Ссылки

Официальный сайт qBittorrent
Частые вопросы
Альтернативные темы (Десктоп)
Альтернативные клиенты (Web UI)
Поисковые плагины