Tracker BitTorrent prive compliant, from scratch (AGPL-3.0-or-later) - daemon Rust + control-plane + frontend Phare v2
  • Rust 62.9%
  • TypeScript 27.6%
  • CSS 8.8%
  • Shell 0.4%
  • PLpgSQL 0.2%
Find a file
Claude (torr-ekaii) 9f26f09a15 feat(ingest): politique d'auto-approbation par catégorie (défaut fermé)
- migration 0017 : colonne categories.auto_approve (défaut FALSE = deny-by-default
  étendu à l'ingestion) ; activée uniquement sur linux-iso, foss-software,
  public-domain-film, open-movie, documentation (contenus réellement libres).
- ingest décide approved (whitelist+journal+outbox, chemin inchangé) vs pending
  (journal honnête ingest_pending, NON whitelisté/annoncé) selon le flag de la
  catégorie cible. Réponse: result(created|exists) + status(approved|pending).
- purge couvre pending + approved. Toggle admin par catégorie (avertissement).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 03:26:04 +02:00
crates torr-ekaii: tracker BitTorrent privé compliant (from scratch) + 8 modules communautaires + refonte Phare v2 2026-07-24 18:16:54 +02:00
deploy feat(ingest): endpoint d'ingestion machine + miroir catégories tr4ker (61) + licence archive-import 2026-07-26 20:58:26 +02:00
docs deploy: chemin de déploiement prod torr.ekaii.fr (image web front baké, compose Traefik, XFF, runbook) 2026-07-24 18:36:18 +02:00
frontend feat(ingest): politique d'auto-approbation par catégorie (défaut fermé) 2026-07-28 03:26:04 +02:00
migrations feat(ingest): politique d'auto-approbation par catégorie (défaut fermé) 2026-07-28 03:26:04 +02:00
research torr-ekaii: tracker BitTorrent privé compliant (from scratch) + 8 modules communautaires + refonte Phare v2 2026-07-24 18:16:54 +02:00
services feat(ingest): politique d'auto-approbation par catégorie (défaut fermé) 2026-07-28 03:26:04 +02:00
.dockerignore deploy: chemin de déploiement prod torr.ekaii.fr (image web front baké, compose Traefik, XFF, runbook) 2026-07-24 18:36:18 +02:00
.env.example feat(ingest): endpoint d'ingestion machine + miroir catégories tr4ker (61) + licence archive-import 2026-07-26 20:58:26 +02:00
.gitignore deploy: chemin de déploiement prod torr.ekaii.fr (image web front baké, compose Traefik, XFF, runbook) 2026-07-24 18:36:18 +02:00
Cargo.lock torr-ekaii: tracker BitTorrent privé compliant (from scratch) + 8 modules communautaires + refonte Phare v2 2026-07-24 18:16:54 +02:00
Cargo.toml torr-ekaii: tracker BitTorrent privé compliant (from scratch) + 8 modules communautaires + refonte Phare v2 2026-07-24 18:16:54 +02:00
LICENSE torr-ekaii: tracker BitTorrent privé compliant (from scratch) + 8 modules communautaires + refonte Phare v2 2026-07-24 18:16:54 +02:00
PROJECT.md torr-ekaii: tracker BitTorrent privé compliant (from scratch) + 8 modules communautaires + refonte Phare v2 2026-07-24 18:16:54 +02:00
README.md torr-ekaii: tracker BitTorrent privé compliant (from scratch) + 8 modules communautaires + refonte Phare v2 2026-07-24 18:16:54 +02:00
rust-toolchain.toml torr-ekaii: tracker BitTorrent privé compliant (from scratch) + 8 modules communautaires + refonte Phare v2 2026-07-24 18:16:54 +02:00

torr-ekaii

Tracker BitTorrent privé, compliant, haute performance. Plateforme de contenu libre de droits uniquement (ISO Linux, domaine public, FOSS, documentaires / projets open-source, films d'archive, lost media, musique / films / jeux légaux, contenus dont l'uploader détient les droits).

Principe : innover, pas cloner. Aucun catalogue externe n'est miroité ; le projet part de zéro, en s'appuyant sur les leçons du corpus étudié (research/).

Conformité, câblée en invariant

  • Whitelist d'info-hash deny-by-default : rien ne s'annonce sans approbation admin (aucun flag de contournement). S'applique aussi bien au chemin HTTP qu'UDP (l'info_hash est dans l'annonce BEP15).
  • Retrait immédiat : dé-whitelister purge les peers en RAM sur tous les démons (p99 < 1 s).
  • Journal de conformité append-only, chaîné par hash et signé.
  • DSA/LCEN + DMCA, ToS « contenu libre de droits uniquement » + attestation d'upload.

Détail : docs/compliance.md.

Architecture (résumé)

Deux plans, Rust édition 2024, mono-repo Cargo :

  • data plane (services/tracker-core) — démon d'annonce, hot path RAM, UDP (BEP15) + HTTP(S).
  • control plane (services/control-plane) — index/catalogue SSR (SEO), comptes (WebAuthn), API, modération, source de vérité (whitelist, ratios, journal de conformité).

Contrat inter-services typé partagé (crates/proto, gRPC/mTLS + outbox Postgres durable).

Docs : docs/architecture.md, docs/decisions.md, docs/decisions-locked.md, docs/adr/.

Quickstart (cible : une commande)

Le build/compilation se fait dans un environnement avec accès réseau (crates.io). Le shell de dev Mac de Paul n'a pas ce réseau ; la preprod tourne sur lesannes.

cp .env.example .env        # secrets hors repo
docker compose -f deploy/docker-compose.yml up --build

Services (ports internes, exposés ensuite derrière Caddy/Cloudflare sur *.ekaii.fr) :

Service Rôle
postgres source de vérité (T0)
tracker-core announce/scrape UDP + HTTP(S)
control-plane API + admin + front SSR
caddy reverse proxy + TLS
prometheus métriques

Statut

Voir PROJECT.md. Actuellement : Phase A validée, fondation Phase C posée, compilation à venir sur lesannes.