How to Wiki Database (change log)
http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
338 lines
17 KiB
338 lines
17 KiB
9 months ago
|
====== 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/) - для поиска необходима авторизация
|