Развёртывание βtracker в сети Yggdrasil: автоматизированный BitTorrent-трекер на Rust без модерации и центра
Инструкция по развёртыванию инфраструктуры βtracker
Практический гайд по запуску автономного BitTorrent-агрегатора в сетях нового типа — без модераторов, без ручной возни и с уважением к архитектуре P2P.
Похоже, что подробная инструкция по развёртыванию актуальной версии βtracker существовала в единственном экземпляре — когда-то написанном для проекта howto.ygg и затем благополучно утерянном. Собственный инстанс уже выключен, но на случай внезапного возвращения интереса (и, что важнее, для других энтузиастов) этот гайд публикуется заново.
Материал является прямым дополнением к предыдущему анонсу.
βtracker — это BitTorrent-агрегатор, реализованный на #Rust, и альтернативная ветка развития YGGtracker. По сути, это программный комплекс для полностью автоматического трекинга и агрегации торрентов: без модераторов, без ручного добавления раздач и без «каталожной бюрократии». Чистая #Automation и предельная #Decentralization.
Система изначально проектировалась под сеть #Yggdrasil, но спокойно работает и в любой среде с поддержкой #IPv4 / #IPv6, включая гибридные сценарии. Для добавления торрентов пользователю достаточно прописать в своём клиенте трекеры, ассоциированные с агрегатором — дальше инфраструктура делает всё сама. Это честный #P2P, без центральной точки принятия решений и без ручного контроля контента.
Ниже — подробный разбор архитектуры, принципов работы и пошаговая инструкция по установке всех компонентов комплекса.
Литперевод, с интеграцией хэштегов
Инструкция по развёртыванию инфраструктуры βtracker | DevZone
#DeployGuide #βtracker #BitTorrent #Yggdrasil #Rust
7 min. reading
28 ноября
Похоже, инструкцию по развёртыванию актуальной версии βtracker я писал в единственном экземпляре — для проекта howto.ygg — и благополучно забыл сохранить локальную копию. Свой инстанс я уже отключил, но на случай, если передумаю (и для других пользователей), публикую гайд ниже.
Это дополнение к предыдущему анонсу:
βtracker — BitTorrent-агрегатор на базе Rust.
βtracker — альтернативная ветка разработки YGGtracker, представляющая собой программный комплекс для автоматического трекинга и агрегации торрентов без участия модераторов и без ручного добавления раздач в каталог.
#Decentralization #NoModeration #Automation
Система создавалась для сети Yggdrasil, но может работать и в любой другой среде, поддерживающей стек IPv4/IPv6, а также в гибридном режиме.
Для добавления торрентов в каталог пользователю достаточно прописать в своём клиенте трекеры, ассоциированные с агрегатором.
#OverlayNetworks #IPv6 #P2P
Состав комплекса
#Architecture #TrackerStack
aquatic_udp — форк UDP-трекера Aquatic с поддержкой генерации бинарного дампа info-hash
aquatic-crawler — сканер, который получает дамп info-hash через API и загружает контент для предпросмотра (jpeg, txt, log и др.) с использованием regex-фильтров и дополнительных параметров
βtracker — веб-интерфейс для базы данных файлов aquatic-crawler с поиском и scrape-статистикой активных пиров
btracker-gemini — опциональная реализация части каталога для протокола Gemini
#Rust #Gemini #WebUI
Принцип работы (схема)
torrent client > aquatic_udp > infohash.bin < aquatic-crawler > * /preload/info-hash.torrent > β
torrent client <-----------------------| * /preload/info-hash/data |
<-------------------------------------| * /preload/.info-hash/tmp |
<-------------------------- scrape -------------------------------|
Установка
#Installation #Linux #SelfHosting
Для сборки потребуется среда разработки Rust:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
рекомендуется выбирать минимальную установку, если сборка производится на сервере
Все компоненты запускаются от отдельного системного пользователя:
useradd -m btracker
Общая файловая база (заполняемая aquatic-crawler и читаемая Web-UI):
mkdir -p /var/www/btracker
aquatic_udp
#Tracker #UDP #Yggdrasil
git clone https://github.com/YGGverse/aquatic.git
cd aquatic
git checkout info-hash-api
cargo build --release -p aquatic_udp
sudo install target/release/aquatic_udp /usr/local/bin/aquatic_udp
Пример конфигурации:
[network]
use_ipv4 = false
use_ipv6 = true
address_ipv6 = "[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]:6969"
set_only_ipv6 = true
[statistics]
write_bin_to_file = true
bin_info_hash_ipv6_file_path = "/path/to/hash.bin"
systemd-юнит:
[Unit]
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=btracker
Group=btracker
ExecStart=/usr/local/bin/aquatic_udp -c /home/btracker/aquatic_udp.toml
[Install]
WantedBy=multi-user.target
Запуск:
systemctl enable aquatic-udp
systemctl start aquatic-udp
Разрешаем входящие подключения только из сети Yggdrasil:
ufw allow from 0200::/7 to 202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148 port 6969 proto udp
aquatic-crawler
#Crawler #Indexing #Metadata
git clone https://github.com/YGGverse/aquatic-crawler.git
cd aquatic-crawler
cargo build --release
sudo install target/release/aquatic-crawler /usr/local/bin/aquatic-crawler
systemd-юнит:
[Unit]
After=network.target
Wants=network.target
[Service]
Type=simple
User=btracker
Group=btracker
LimitNOFILE=65536
Environment="RUST_LOG=aquatic_crawler=warn"
Environment="NO_COLOR=1"
ExecStart=/usr/local/bin/aquatic-crawler \
--infohash=/path/to/hash.bin \
--tracker=udp://[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]:6969 \
--preload=/var/www/btracker/public \
--preload-max-filesize=10000000 \
--preload-max-filecount=5 \
--preload-regex=\.(png|gif|jpeg|jpg|webp|svg|log|nfo|txt)$
[Install]
WantedBy=multi-user.target
Полезно знать:
приватность: можно ограничить librqbit через PEX с помощью --blocklist
все опции: aquatic-crawler --help
После запуска crawler сканирует hash.bin и наполняет каталог данными для интерфейса βtracker.
Дополнительные детали — в wiki.
#Privacy #ThreatModel
btracker
#WebCatalog #Search #Scrape
git clone https://github.com/yggverse/btracker.git
cd btracker
cargo build --release
sudo install target/release/btracker /usr/local/bin/btracker
systemd-юнит:
[Unit]
After=network.target
Wants=network.target
[Service]
Type=simple
User=btracker
Group=btracker
WorkingDirectory=/var/www/btracker
ExecStart=/usr/local/bin/btracker \
--description="Yggdrasil-only BitTorrent tracker" \
--port=1234 \
--public=/var/www/btracker/public \
--scrape=udp://[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]:6969 \
--tracker=udp://[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]:6969 \
--tracker=udp://tracker.ygg:6969
StandardOutput=null
StandardError=file:///path/to/error.log
[Install]
WantedBy=multi-user.target
nginx
#ReverseProxy #Infrastructure
server {
listen 80;
location / {
proxy_pass http://127.0.0.1:1234;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Применение конфигурации:
systemctl reload nginx
Заметили ошибку?
Выделите проблемный фрагмент и нажмите Ctrl+Enter, чтобы уведомить автора.
#Feedback #OpenSource
Целевая аудитория
Материал ориентирован на технически подготовленных пользователей, которым тесно в классических «веб-каталогах» и централизованных трекерах. В первую очередь это администраторы self-hosted-инфраструктуры, энтузиасты #Yggdrasil и других overlay-сетей, разработчики и DevOps-инженеры, интересующиеся #P2P, #BitTorrent и практическими кейсами на #Rust. Отдельный слой ЦА — сторонники цифрового суверенитета, децентрализации и минимизации человеческого фактора в модерации контента.
Обоснование актуальности
Централизованные торрент-каталоги и трекеры деградируют под давлением регуляторов, коммерции и ручной модерации, превращаясь либо в «серые» витрины, либо в точки отказа. На этом фоне возрастает интерес к автоматизированным, инфраструктурным решениям, где логика системы важнее человеческих решений. βtracker закрывает именно эту нишу: автономная агрегация, отсутствие ручного контроля, ориентация на #OverlayNetworks и нативная работа с #IPv6. Гайд актуален как практическое руководство и как пример того, как может выглядеть живая, неконъюнктурная P2P-инфраструктура в 2020-х.

YGGverse | YGGverse home in different protocols
ReplyDeletehttps://yggverse.github.io/#donate