Sobre el proyecto

OpenPT es una herramienta de anuncio de tracker de BitTorrent ligera y basada en configuración, orientada a escenarios de seeding de trackers privados (PT). Funciona únicamente a partir de archivos .torrent: no se requiere la descarga del contenido real y el programa simula un cliente que informa periódicamente al tracker el estado del seeding, la cantidad cargada, el puerto y la identidad del cliente. Debido a que reporta números en lugar de transferir datos, es una utilidad de simulación de seeding y no un cliente de BitTorrent; las reglas del tracker y las políticas de uso aceptable siguen siendo responsabilidad del operador. Las capacidades documentadas incluyen el escaneo automático del directorio de torrents y la carga de archivos .torrent; un límite configurable de seeds simultáneos (0 significa ilimitado); archivos de suplantación de cliente para qBittorrent, Transmission, Deluge y uTorrent; tres estrategias de carga (none, conservative_rate, configured_rate) con jitter e intervalos de actualización; velocidad de carga asignada dinámicamente a partir de los pares devueltos por el tracker; un ratio de compartición objetivo que detiene un torrent una vez alcanzado; reintento con retroceso exponencial tras fallos de anuncio; soporte para trackers HTTP, HTTPS y UDP; hashes de información BitTorrent v1, híbridos y solo v2; archivado automático de archivos torrent corruptos o no analizables; totales de carga y estado de finalización persistidos para poder reanudar tras el reinicio; detención del anuncio cuando se elimina un archivo torrent; y métricas en formato Prometheus además de un endpoint de verificación de estado (health check). Las rutas de despliegue son un binario compilado localmente iniciado como openpt --config config.toml, o la imagen de Docker publicada chenbin3625/openpt ejecutada a través de Docker Compose con mapeo de PUID/PGID y un volumen ./data que contiene el directorio de torrents. La configuración es TOML, copiada de examples/config.example.toml, y cubre simultaneous_seed, client, torrents_dir, clients_dir, archive_dir, state_file, intervalo de escaneo, tiempo de espera de parada de apagado, estrategia de carga y límites de tasa, ratio_target, puerto/IP/IPv6 de anuncio, tiempo de espera del tracker, proxy (HTTP o SOCKS5, utilizado solo para trackers HTTP/HTTPS, mientras que los trackers UDP devuelven un error claro), límites de retroceso, dirección y ruta de escucha de métricas, y salida de registro. La Web UI integrada está escrita con Vite, React y antd y se incrusta en el binario a través de go:embed; la salida del frontend compilado está incluida, por lo que un clon reciente puede compilarse o probarse directamente con la cadena de herramientas de Go. La UI muestra recuentos de torrents activos y anormales, velocidad de carga actual, total cargado, próxima hora de anuncio, tamaño por torrent, cantidad cargada, velocidad, pares y ratio de compartición, hora y intervalo del último/próximo anuncio, host del tracker e índice de conmutación, además de detalles de estado y errores, con ordenación de columnas, filtrado de estado y búsqueda por nombre o tracker. El escuchador de métricas también sirve /metrics y /healthz; /healthz permanece disponible incluso cuando metrics.enabled es falso. El envío de SIGHUP recarga en caliente un subconjunto de ajustes (seeds simultáneos, estrategia y tasas de carga, ratio objetivo, tiempo de espera de parada de apagado, puerto/IP/IPv6 de anuncio, tiempo de espera del tracker, proxy y retroceso), mientras que los archivos de suplantación de cliente, directorios, archivo de estado, intervalo de escaneo, archivo de registro y opciones de métricas/Web UI requieren un reinicio. Por defecto, announce.port = 0 genera un puerto dinámico aleatorio en el rango 49152-65535 en cada inicio en lugar de reutilizar valores predeterminados comunes como 6881. El proyecto se publica bajo la Licencia MIT.