devzone.org.ua/post/vtracker-bittorrent-ahrehator-na-bazi-rust.md
2025-11-01 14:28:20 +02:00

6 KiB
Raw Blame History

βtracker - BitTorrent агрегатор на базі Rust

Даний матеріал писався як гайд для локальної спільноти адміністраторів альтернативних мереж, утім, я знайшов його потенційно цікавим для широкого загалу: зокрема для тих, хто бажає підняти свій торент трекер і автоматизований Веб-каталог з функцією пошуку та статистикою роздач на базі інфраструктури Rust.

βtracker, beta-tracker - BitTorrent каталог агрегаційного типу з Веб-інтерфейсом на базі фреймворку Rocket, що є продовженням попереднього проєкту YGGtracker але на відміну від останнього - повністю автоматизований.

Індекс тут складається на базі форку UDP трекера aquatic, що генерує дамп інфо-хешів у бінарному форматі API та спеціально написаного для нього кравлера - aquatic-crawler.

Принцип роботи

Схематично, робота усієї системи зображена в README:

torrent client > aquatic_udp > infohash.bin < aquatic-crawler > * /preload/info-hash.torrent > β
torrent client               <-----------------------|          * /preload/info-hash/data      |
               <-------------------------------------|          * /preload/.info-hash/tmp      |
                             <-------------------------- scrape -------------------------------|

На схемі βtracker є останнім оператором даних справа.

Таким чином, торент-клієнти передають дані на UDP трекер, звідки (його форк) генерує бінарний API дамп infohash.bin з опціональною періодичністю, який в свою чергу читає кравлер і резольвить вказані дані (мета дані торент файлів, опціонально підвантажує зображення, txt файли, логи та інші) у спільну файлову систему, звідки їх вже читає та парсить агрегатор βtracker, тим само формуючи пошуковий індекс і Web UI.

Наразі вся система є раннім прототипом, і при вдалому її тестуванні, планується створити спільну бібліотеку файлової БД, зі стандартизованим API для всіх компонентів системи, що працюють з файлами асинхронно.

Мережі

βtracker розроблявся для мережі Yggdrasil, але на відміну від YGGtracker, може без проблемно працювати з Інтернет / IPv4 включно, а також споріднених оверлейних мережах типу Mycelium.

Проблеми

В рамках того, що коментарі та інша мета-інформація не є частиною стандартного словника BitTorrent, ці дані втрачаються при резольві байтів торент файла з інфо-хешу. Оскільки сам інфо-хеш формує унікальність роздачі, отримати такі дані з першого зустрічного піра не варіант, навіть якщо це технічно можливо при наприклад запиті такої інформації через сокет за рамками протоколу BitTorrent. Утім, й наявних даних цілком вистачає для побудови навігації та пошуку торентів (включно з індексованим вмістом) у невеличких мережах.

Додаткова функціональність

Так як URI сторінок торентів є унікальними для усієї мережі BitTorrent інфо-хешами, технічно, можливо реалізувати для них локальні соціальні функції: коментарі, лічильник завантажень, вподобання тощо. Але наразі така функціональність не запланована, щонайменше до першої стабільної версії усіх компонентів системи.

Інстанси

Поки для тестування усіх компонентів системи, функціонує один інстанс Yggdrasil:

UPD. днями з'явилась реалізація серверної частини для протоколу Gemini та відповідний інстанс: