POTHIEDU Não Decore a Resposta. Entenda o Caminho

Django Livre Torrent

Django Livre Torrent

O que é e como funciona na prática

Django Livre Torrent é um projeto open-source que usa o framework Django para gerenciar trackers de torrent. Não é nada do outro mundo tecnicamente, mas a documentação é fraca e a comunidade pequena, então muita coisa se aprende na marra. A estrutura básica é um painel web onde você publica torrents, monitora seeds/peers e gerencia permissões. Por trás, usa PostgreSQL ou MySQL para armazenar os metadados dos trackers, e o Django lida com toda a camada de autenticação e administração.

Como baixar o django livre torrent

Você encontra o repositório no GitHub. O link direto é github.com/opensourcedprojects/django-livre-torrent. Clone com git, copie o arquivo .env.example para .env e preencha as variáveis de ambiente. As dependências principais são Django 4.2+, psycopg2-binary, celery, redis e tornado para a parte do tracker em tempo real. Depois do clone, rode pip install -r requirements.txt, depois python manage.py migrate. A migração costuma passar tranquilo, mas se aparecer erro de coluna duplicada, delete o arquivo db.sqlite3 e os diretórios de migração e comece do zero. Para rodar em produção, use gunicorn com um worker por core mais um extra, e coloca o tornado separadamente para a comunicação do tracker. Eu configurei com supervisord e nunca mais fui interrompido por processos morrendo.

Configuração crítica que ninguém avisa: a variável TORRENT_TRACKER_PORT precisa estar exposta no firewall e no docker-compose se usar container. Deixa ela fechada e o tracker não funciona. Parece óbvio, mas gastou umas 3 horas minha descobrindo isso porque o log do Django não reclamava de nada, só não aparecia peer algum.

‎Django Livre - Apple TV
‎Django Livre - Apple TV

Pegadinhas que eu aprendi na prática

O primeiro problema real que encontrei foi com o clean-up de anúncios obsoletos. O projeto vem com um comando clean_announcements que roda via cron, mas o intervalo padrão é de 24 horas. Em um tracker com muitos torrents, isso acumula linhas mortas na tabela announcements e o banco vai virando lixo lento. A solução foi ajustar para rodar a cada 6 horas e adicionar um índice composto em (info_hash, announced_at). A query de limpeza caiu de 4 segundos para 80 milissegundos. Outro ponto: a validação de .torrent files. O sistema aceita qualquer arquivo que o parser consiga ler, mas não faz checksum do info-hash contra o conteúdo real. Já vi um usuário subir um torrent com info-hash corrompido e o tracker registrar tudo certinho, só que ninguém conseguia baixá-lo. A workaround que eu fiz foi um signal no save do Torrent model que recalcula o info-hash pelo conteúdo do arquivo e marca como inválido se não bater.

Vantagens e limitações honestas

O lado bom é que a interface admin do Django resolve muita coisa rápido. Você configura usuários, papéis e categorias sem escrever uma linha de JavaScript. O painel fica pronto em minutos. Para um tracker interno de uso restrito, isso é suficiente. O lado ruim é a falta de suporte a IPv6 nativo. O código faz parse do peer address como string e não normaliza endereços IPv6. Se sua rede tem dual-stack, metade dos peers não aparece nos logs corretamente. Também não há rate limiting configurável fora do código-fonte, o que é arriscado em ambientes públicos. Se você precisa de algo mais robusto, considere usar um tracker existente como rtorrent ou nginx-rtmp-module combinado com um frontend Django separado. O django livre torrent funciona bem para uso interno, pequenas comunidades ou estudantes, mas não escala bem para milhares de peers ativos simultâneos.

Resumo do setup completo

Clonar o repositório, configurar .env com DATABASE_URL, SECRET_KEY e as portas do tracker. Rodar migrations, collectstatic e subir com gunicorn mais tornado. Configurar o supervisor para gerenciar os dois processos. Colocar nginx na frente fazendo reverse proxy e balanceamento. Testar com um torrent simples e verificar se os peers aparecem no painel admin dentro de 30 segundos. Se alguma coisa falhar, o primeiro lugar pra olhar é o log do tornado, não o do Django. Eles são processos separados e o error log do Django não mostra o que acontece na camada do tracker.

Watch Django Livre | Netflix
Watch Django Livre | Netflix