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

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

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

  • Зайти на сайт и авторизироваться из браузера, возможно есть запрос Captcha
  • Перезапустить сервис клиента - причиной может быть внутреннее кеширование клиентом предыдущих настроек

Ссылки

Обсуждение

newbie, 2023/10/15 00:39
В разделе про совместимость говорится о том, что Transmission не поддерживает BitTorrent v2, однако в описании релиза Transmission 4.0.0 заявлена поддержка нового протокола.
https://www.opennet.ru/opennews/art.shtml?num=58617

d4708, 2023/10/15 01:13, 2023/10/15 01:15
Я вообще столкнулся с этой проблемой при импорте магнет ссылок с первой версии YGGtracker, как оказалось, сгенерированные торренты "гибридной" версии не открываются как в Transmission, так и используемой в YGGtracker библиотеки PHP, выдавая exception и как следствие - ошибку 500

У меня почти все вручную созданные раздачи были в таком формате, теперь нужно генерировать заново для 1-й версии

Написал пока в тикет, нужно разбираться
https://github.com/Rhilip/Bencode/issues/15

В самом Transmission такие файлы просто инициализируют открытие клиента без окна добавления файла, логи пока не смотрел, но странно что даже Transmission никак не оповещает об ошибке формата

d4708, 2023/10/15 17:55
Сегодня решил выяснить причину, но к моему удивлению, торент файл второй и гибридной версии успешно загрузился на сайт
http://[201:23b4:991a:634d:8359:4521:5576:15b7]/yggtracker/en/torrent/85

В прочем, в Transmission его не открыть, не смотря на то, что есть хеш 1-й версии

Как мне видится, это две разные проблемы, где в первом случае, мои торент файлы были сгенерированы из магнет ссылок / DHT (и наверное остались без pieces)

d4708, 2023/11/14 13:30, 2023/11/14 14:08
Не могу авторизировать поисковый плагин rutracker по причине каптчи

Поскольку зеркало проксирует из другого айпишника, rutracker видимо считает это отдельным устройством
Пробовал вручную создавать файл кукисов, но бестолку

может у кого будут идеи как прикрутить сессию для поискового плагина

http://[321:c99a:91a1:cd2c::18]/forum/

d4708, 2023/12/07 18:34, 2023/12/07 18:36
Через несколько дней планируется включение в официальный Web UI мой порт адаптивной цветовой схемы.
Кое-что было изменено, в частности отказ от графики в табах и тд с переходом на CSS / Flat Design

Если у кого есть предложения (в частности по палитре и контрасту) - комментируйте, иначе придется юзать из коробки в следующем релизе qBittorrent:

https://github.com/qbittorrent/qBittorrent/pull/19901

Только авторизованные участники могут оставлять комментарии.
yggdrasil/bittorrent/qbittorrent.txt · Последнее изменение: 2023/11/14 02:13 — d4708
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki