2024-02-10 12:53:55 +00:00

338 lines
17 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

====== qBittorrent ======
Свободный [[yggdrasil:bittorrent:bittorrent|BitTorrent]] клиент, написанный с использованием фреймворка Qt и библиотеки libtorrent.
===== Пиринг в Yggdrasil =====
По-умолчанию, клиент прослушивает все сетевые интерфейсы и отлично подходит для обмена файлами в сети [[yggdrasil:yggdrasil|Yggdrasil]].
При необходимости, в графических настройках можно указать сетевой интерфейс явно, что особенно полезно для изолированного от других сетей сидирования.
Для этого, достаточно указать интерфейс или адрес Yggdrasil из списка доступных:
**Preferences → Advanced → Network interface** или **Optional IP address to bind to**
Поскольку трафик между пирами Yggdrasil шифруется по-умолчанию, для снижения нагрузки, штатное шифрование можно отключить:
**Preferences → BitTorrent → Privacy → Encription mode → Disable**
===== Сидирование =====
Загружая файлы посредством протокола BitTorrent, принято делиться раздачей с другими.
Для этого достаточно открыть порт в фаервол:
<code>
ufw allow from 0200::/7 to any port [Listening Port]
</code>
[Listening Port] - автоматически выданный клиентом порт в разделе **Preferences** → **Connections**
Обратите внимание, что UPnP в контексте Yggdrasil не используется, поэтому включение этой опции никак не влияет на участие в сидинге.
Не забываем анонсировать свою раздачу как минимум одному [[yggdrasil:sites_and_services:other_network_services#torrent|трекеру в сети Yggrasil]]. Сделать это можно выбрав соответствующий файл, во вкладке **Trackers** → **Add trackers...**
Подробная настройка сид-сервера на базе qBittorrent, описана в разделе [[yggdrasil:bittorrent:seedbox#сервера_базе_qbittorrent|Сервер на базе qBittorrent]]
===== Встроенный трекер =====
В клиенте qBittorrent имеется встроенный торрент-трекер, активировать который можно в разделе меню:
**Advanced → Enable embedded tracker**
Разрешаем покдключение к трекеру из сети Yggdrasil (по-умолчанию 9000):
<code>
ufw allow from 0200::/7 to any port 9000
</code>
Затем, можно поделиться ссылкой вида http://[address]:9000/announce с другими или добавить в список [[yggdrasil:sites_and_services:other_network_services#torrent|внутрисетевых сервисов]]
* Организовать легковесный торрент-трекер можно также с помощью специализированного ПО, например [[yggdrasil:bittorrent:opentracker|Opentracker]]
===== Темы оформления =====
Клиент поддерживает [[https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-qBittorrent-themes|альтернативные темы]] оформления в формате .qbttheme
Следует учитывать, что темы для десктоп клиента несовместимы с клиентом Web UI.\\
Для изменения внешнего вида Web UI, вместо файла .qbttheme, используются [[https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs|альтернативные клиенты]].
==== Альтернативный Web UI ====
Чтобы создать альтернативный Web UI, достаточно скопировать директорию
<code>
cp src/webui/www /somelocation/newtheme
</code>
Минимальный набор файлов представлен директориями:
<code>
/private - все страницы клиента, доступные после авторизации
/public - страница логина
</code>
После нужных изменений, путь к альтернативному клиенту можно в опции:
**Preferences → Web UI → Use alternative Web UI**
В последних версиях qBittorrent была убрана поддержка обработки мульти-язычных строк, поэтому придется удалить конструкции из файлов html авто-заменой
<code>
QBT_TR\((.*)\)QBT_TR\[CONTEXT=.*\]
</code>
Результатом можно поделиться на GitHub, добавив страницу проекта в список [[https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs|List of known alternate WebUIs]]
==== Контрибуция ====
Для отправки PR в официальный репозиторий, чтобы исключить конфликты обновлений, желательно разбивать правки на отдельные ветки:
<code>
git checout master
git checkout -b my-webui-fix
</code>
Важно перед отправкой тестировать форматирование и валидность кода:
<code>
cd src/webui/www
npm install
npm run lint && npm run format
</code>
===== Сборка из исходников =====
Актуальные инструкции по компиляции, описаны в файле [[https://raw.githubusercontent.com/qbittorrent/qBittorrent/master/INSTALL|INSTALL]] а также разделе официальной [[https://github.com/qbittorrent/qBittorrent/wiki#compilation|Wiki]]
При использовании последней версии из репозитория, с большой вероятностью, версии зависимостей в штатных репозиториях окажутся устаревшими.\\
В частности, может дополнительно понадобиться сборка последних версий [[https://www.boost.org/|libboost]], [[https://www.libtorrent.org/|libtorrent]] и [[https://www.qt.io|Qt]].
==== Автоматическая сборка ====
Для сборки серверного клиента без графической оболочки (qbittorrent-nox), есть удобная утилита [[https://github.com/userdocs/qbittorrent-nox-static|qbittorrent-nox-static]], которая соберет все зависимости автоматически.
Удобна тем, что также поддерживает различные платформы, в том числе ARM.
==== Ручная сборка ====
=== libboost ===
Официальная инструкция:
<code>
git clone --recursive https://github.com/boostorg/boost.git
cd boost
./bootstrap.sh
./b2
</code>
Главная ветка включает межверсионные изменения последней версии.\\
На практике, для разрешения зависимостей, используются [[https://github.com/boostorg/boost/releases|релизы]] (это касается и остальных пакетов).
Загружаем архив нужной версии и пропускаем шаг git/clone.
Для глобальной установки:
<code>
./b2 install
</code>
=== libtorrent ===
<code>
git clone --recurse-submodules https://github.com/arvidn/libtorrent.git
cd libtorrent
./configure
make
</code>
//* возможно для конфигурации потребуется указать путь к boost, например ./configure --with-boost-libdir=/usr/lib/arm-linux-gnueabihf///
Для глобальной установки:
<code>
make install
</code>
=== qt ===
Необходимую для qBittorrent версию проще всего установить из официального онлайн-установщика (для загрузки потребуется регистрация на сайте).
Также библиотеки (qtbase и qttools) можно загрузить [[https://download.qt.io/official_releases/qt/|из архива релизов]] и собрать вручную.
В таком случае, важно учитывать наличие доступных ресурсов - для сборки qtbase понадобится порядка 3Гб ОЗУ и до 5Гб дискового пространства.
Если есть возможность подключения внешнего накопителя, буфер памяти можно увеличить через файл подкачки:
<code>
fallocate -l 4G /mount/swapfile
chmod 600 /mount/swapfile
mkswap /mount/swapfile
swapon /mount/swapfile
</code>
по завершению:
<code>
swapoff /mount/swapfile
rm /mount/swapfile
</code>
При монтировании дополнительного дискового пространства посредством /etc/fstab, важно добавить флаги user,exec иначе при сборке cmake выдаст ошибку "Permission denied".\\
== qtbase ==
Процесс компиляции выглядит примерно так:
<code>
cd /mount/qtbase-everywhere-src-6.5.3
cmake -B build
cmake --build build --parallel 4
</code>
//* 4 - количество потоков//\\
Можно указать параметры для отдельных дистрибутивов, например Debian/Ubuntu
<code>
-DCMAKE_BUILD_TYPE=RelWithDebInfo
-DCMAKE_INSTALL_PREFIX=/usr/local
</code>
В этом примере, собранные файлы будут расположены в директории
<code>
/mount/qtbase-everywhere-src-6.5.3/build/lib/cmake
</code>
Для глобальной установки:
<code>
cd /mount/qtbase-everywhere-src-6.5.3/build
cmake --install .
</code>
== qttools ==
Как указано в файле dependencies.yaml, сборка требует предустановленной библиотеки qtbase, приступаем только если выполнили [[yggdrasil:bittorrent:qbittorrent#qtbase|предыдущий шаг]].
<code>
cd /mount/qttools-everywhere-src-6.5.3
qt-configure-module .
cmake --build .
</code>
Для глобальной установки:
<code>
cmake --install .
</code>
=== qbittorrent-nox ===
Для сборки серверной версии с помощью cmake - отключаем графическую среду флагом
<code>
-DGUI=OFF
</code>
Если пакеты Qt не установлены глобально, при компиляции qBittorrent с помощью cmake, нужно указать дополнительный флаг c префиксом директории:
<code>
-DCMAKE_PREFIX_PATH='/home/USERNAME/Qt/6.5.3/gcc_64/lib/cmake'
</code>
Подробнее о доступных опциях сборки и их значениями по-умолчанию, можно почитать в разделе [[https://github.com/qbittorrent/qBittorrent/wiki/#compilation|Compilation]]
<code>
git clone https://github.com/qbittorrent/qBittorrent.git
cd qBittorrent
cmake -B build -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DGUI=OFF
cmake --build build
</code>
Готовый бинарный пакет qbittorrent-nox будет доступен в директории /build
===== Решение проблем =====
==== Потребление памяти ====
При большом количестве раздач, в qBittorrent 4, [[https://github.com/qbittorrent/qBittorrent/issues/16612|наблюдается]] проблема повышенного расхода памяти с активным использованием swap и зависанием интерфейса.
Чтобы избежать перебоев в работе других служб, можно добавить лимиты на процесс, указав объем доступной памяти:
<code>
nano /etc/systemd/system/qbittorrent-nox.service
</code>
* qbittorrent-nox - серверный клиент qbittorrent
<code>
[Service]
MemoryHigh=256M
MemoryMax=512M
MemorySwapMax=512M
</code>
В версии 5 (из ветки unstable) проблема пока что не наблюдалась.
Установить альфа версию для требуемого дистрибутива можно из списка на [[https://www.qbittorrent.org/download|официальной странице загрузок]], раздел "Other Binary Packages"\\
Например, репозиторий Ubuntu:
<code>
add-apt-repository ppa:qbittorrent-team/qbittorrent-unstable
</code>
==== Совместимость ====
=== Протоколы ===
qBittorrent по-умолчанию генерирует торрент-файлы гибридного формата.
Клиенты (например, [[yggdrasil:bittorrent:transmission|Transmission]]) не имеющие поддержку протокола 2 версии, не смогут открыть файл.
Таким образом, при создании торрент-файлов лучше явно указывать формат версии 1.
=== Magnet ===
Автоматически сгенерированный из magnet ссылки .torrent файл (при включенной опции авто-сохранения .torrent файлов), может не содержать фрагментов (pieces) что сделает его не совместимым при импорте.
В качестве решения, для раздач лучше генерировать новый .torrent файл после загрузки содержимого.
==== Зависание скачиваний ====
В 4 версии клиента замечено зависание (stalled) при скачивании файлов. Частой причиной этому может быть использование только первого трекера (оффлайн) из списка доступных.
Решение описано в [[https://github.com/qbittorrent/qBittorrent/wiki/Frequently-Asked-Questions#Only_one_tracker_is_working_The_others_arent_contacted_yet|официальной инструкции]] по дополнительным настройкам:
**Preferences → Advanced → Always announce to all trackers**
Также можно отметить
**Preferences → Advanced → Always announce to all trackers in a tier**
==== WebUI открывается как файл ====
В большинстве случаев связано с настройками MIME.
В дистрибутивах Linux, можно попробовать очистить кеш в директории
<code>
/home/USERNAME/local/share/mime
</code>
==== Ошибка авторизации плагинов ====
При использовании приватных трекеров или таких, что требуют авторизации для осуществления поиска, следует:
* Зайти на сайт и авторизироваться из браузера, возможно есть запрос Captcha
* Перезапустить сервис клиента - причиной может быть внутреннее кеширование клиентом предыдущих настроек
===== Ссылки =====
[[https://www.qbittorrent.org/|Официальный сайт qBittorrent]]\\
[[https://github.com/qbittorrent/qBittorrent/wiki/Frequently-Asked-Questions|Частые вопросы]]\\
[[https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-qBittorrent-themes|Альтернативные темы (Десктоп)]]\\
[[https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs|Альтернативные клиенты (Web UI)]]\\
[[https://github.com/qbittorrent/search-plugins/wiki/Unofficial-search-plugins|Поисковые плагины]]
* Внутрисетевые:
* [[https://github.com/YGGverse/qbittorrent-yggtracker-search-plugin|YGGtracker]] - ([[https://github.com/YGGverse/qbittorrent-yggtracker-search-plugin/blob/main/nodes.json|Реестр узлов]])
* Порты [[https://github.com/imDMG/qBt_SE|qBt_SE]]:
* [[https://raw.githubusercontent.com/YGGverse/qBt_SE/yggdrasil/engines/rutor_yggdrasil_321_c99a_91a1_cd2c__16.py|Rutor]] (http://[321:c99a:91a1:cd2c::16]/)
* [[https://raw.githubusercontent.com/YGGverse/qBt_SE/yggdrasil/engines/rutracker_yggdrasil_321_c99a_91a1_cd2c__18.py|Rutracker]] (http://[321:c99a:91a1:cd2c::18]/forum/) - для поиска необходима авторизация