Об этом проекте
OpenPT представляет собой легковесный инструмент для отправки анонсов BitTorrent-трекеру, управляемый конфигурацией и предназначенный для сценариев сидинга на приватных трекерах (PT). Он работает исключительно с .torrent файлами: реальная загрузка контента не требуется, а программа имитирует клиента, периодически сообщающего трекеру о статусе сидинга, объеме загруженных данных, порте и идентификаторе клиента. Поскольку инструмент сообщает числовые показатели, а не передает данные, он является утилитой для симуляции сидинга, а не BitTorrent-клиентом; соблюдение правил трекера и политик допустимого использования остается ответственностью оператора.
Документированные возможности включают автоматическое сканирование директории торрентов и загрузку .torrent файлов; настраиваемый лимит одновременных сидов (0 означает неограниченно); файлы спуфинга клиентов для qBittorrent, Transmission, Deluge и uTorrent; три стратегии загрузки (none, conservative_rate, configured_rate) с джиттером и интервалами обновления; скорость загрузки, распределяемая динамически на основе пиров, возвращаемых трекером; целевой коэффициент share ratio, при достижении которого торрент останавливается; экспоненциальную задержку при повторных попытках после сбоев анонса; поддержку трекеров HTTP, HTTPS и UDP; инфо-хеши BitTorrent v1, гибридные и v2-only; автоматическое архивирование поврежденных или нечитаемых торрент-файлов; сохранение общих объемов загрузки и состояния завершения для возобновления работы после перезапуска; остановку анонсов при удалении торрент-файла; а также метрики в формате Prometheus и эндпоинт проверки состояния (health check).
Варианты развертывания включают локально собранный бинарный файл, запускаемый как openpt --config config.toml, или опубликованный Docker-образ chenbin3625/openpt, запускаемый через Docker Compose с маппингом PUID/PGID и томом ./data, содержащим директорию торрентов. Конфигурация представлена в формате TOML (копируется из examples/config.example.toml) и охватывает параметры simultaneous_seed, client, torrents_dir, clients_dir, archive_dir, state_file, интервал сканирования, таймаут остановки при выключении, стратегию и границы скорости загрузки, ratio_target, порт/IP/IPv6 анонса, таймаут трекера, прокси (HTTP или SOCKS5, используется только для HTTP/HTTPS трекеров, при этом UDP трекеры возвращают явную ошибку), лимиты backoff, адрес и путь прослушивания метрик, а также вывод логов.
Встроенный Web UI написан с использованием Vite, React и antd и встроен в бинарный файл через go:embed; скомпилированный фронтенд зафиксирован в репозитории, поэтому свежий клон можно собрать или протестировать напрямую с помощью Go toolchain. Интерфейс отображает количество активных и проблемных торрентов, текущую скорость загрузки, общий объем загруженного, время следующего анонса, размер каждого торрента, объем загрузки, скорость, пиров и share ratio, время последнего/следующего анонса и интервал, хост трекера и индекс переключателя, а также статус и детали ошибок с поддержкой сортировки столбцов, фильтрации по статусу и поиска по имени или трекеру. Слушатель метрик также обслуживает /metrics и /healthz; /healthz остается доступным даже если metrics.enabled установлено в false. Отправка SIGHUP позволяет «на лету» перезагрузить часть настроек (количество одновременных сидов, стратегию и скорость загрузки, ratio target, таймаут остановки, порт/IP/IPv6 анонса, таймаут трекера, прокси и backoff), в то время как файлы спуфинга клиентов, директории, файл состояния, интервал сканирования, лог-файл и опции метрик/Web UI требуют перезапуска.
По умолчанию announce.port = 0 генерирует случайный динамический порт в диапазоне 49152-65535 при каждом запуске вместо использования общих значений по умолчанию, таких как 6881. Проект выпущен под лицензией MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.