À propos du projet

OpenPT est un outil léger de notification de tracker BitTorrent piloté par configuration, destiné aux scénarios de seeding sur trackers privés (PT). Il fonctionne uniquement à partir de fichiers .torrent : aucun téléchargement de contenu réel n'est requis, et le programme simule un client signalant périodiquement au tracker le statut de seeding, la quantité uploadée, le port et l'identité du client. Comme il rapporte des chiffres plutôt que de transférer des données, il s'agit d'un utilitaire de simulation de seeding et non d'un client BitTorrent ; les règles du tracker et les politiques d'utilisation acceptable restent la responsabilité de l'opérateur. Les capacités documentées incluent le scan automatique du répertoire des torrents et le chargement des fichiers .torrent ; une limite configurable sur les seeds simultanés (0 signifie illimité) ; des fichiers de spoofing de client pour qBittorrent, Transmission, Deluge et uTorrent ; trois stratégies d'upload (none, conservative_rate, configured_rate) avec jitter et intervalles de rafraîchissement ; une vitesse d'upload allouée dynamiquement à partir des pairs retournés par le tracker ; un ratio de partage cible qui arrête un torrent une fois atteint ; un retry avec backoff exponentiel après des échecs d'annonce ; le support des trackers HTTP, HTTPS et UDP ; les info hashes BitTorrent v1, hybrides et v2-only ; l'archivage automatique des fichiers torrent corrompus ou impossibles à analyser ; la persistance des totaux d'upload et de l'état d'achèvement pour permettre la reprise après redémarrage ; l'arrêt de l'annonce lorsqu'un fichier torrent est supprimé ; ainsi que des métriques au format Prometheus et un point de terminaison de health check. Les voies de déploiement sont un binaire construit localement lancé via openpt --config config.toml, ou l'image Docker publiée chenbin3625/openpt exécutée via Docker Compose avec mappage PUID/PGID et un volume ./data contenant le répertoire des torrents. La configuration est en TOML, copiée depuis examples/config.example.toml, et couvre simultaneous_seed, client, torrents_dir, clients_dir, archive_dir, state_file, l'intervalle de scan, le timeout d'arrêt, la stratégie d'upload et les limites de débit, ratio_target, le port/IP/IPv6 d'annonce, le timeout du tracker, le proxy (HTTP ou SOCKS5, utilisé uniquement pour les trackers HTTP/HTTPS, les trackers UDP retournant une erreur claire), les limites de backoff, l'adresse et le chemin d'écoute des métriques, et la sortie des logs. L'interface Web intégrée est écrite avec Vite, React et antd et intégrée au binaire via go:embed ; la sortie du frontend compilé est commitée, donc un clone récent peut être construit ou testé directement avec la chaîne d'outils Go. L'UI affiche le nombre de torrents actifs et anormaux, la vitesse d'upload actuelle, le total uploadé, l'heure de la prochaine annonce, la taille par torrent, l'uploadé, la vitesse, les pairs et le ratio de partage, l'heure et l'intervalle de la dernière/prochaine annonce, l'hôte du tracker et l'index de switch, ainsi que le statut et les détails d'erreur, avec tri des colonnes, filtrage par statut et recherche par nom ou tracker. Le listener de métriques sert également /metrics et /healthz ; /healthz reste disponible même lorsque metrics.enabled est faux. L'envoi d'un SIGHUP recharge à chaud un sous-ensemble de paramètres (seeds simultanés, stratégie et débits d'upload, ratio cible, timeout d'arrêt, port/IP/IPv6 d'annonce, timeout du tracker, proxy et backoff), tandis que les fichiers de spoofing de client, les répertoires, le fichier d'état, l'intervalle de scan, le fichier de log et les options de métriques/Web UI nécessitent un redémarrage. Par défaut, announce.port = 0 génère un port dynamique aléatoire dans la plage 49152-65535 à chaque démarrage plutôt que de réutiliser des valeurs par défaut communes telles que 6881. Le projet est publié sous licence MIT.