Files
wiki/Catalogue-Self-Hosted/apps/app-bitmagnet.md
T
2026-06-09 18:40:21 +02:00

128 lines
6.2 KiB
Markdown

---
title: Bitmagnet
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, downloads, torrent, dht, crawler, indexer, go, postgres]
confidence: medium
contested: false
sources: [https://selfh.st/apps/?tag=downloads, https://github.com/bitmagnet-io/bitmagnet]
---
# Bitmagnet
> **Indexeur BitTorrent + DHT crawler** écrit en Go. Crawl le réseau BitTorrent via DHT, extrait les **métadonnées des torrents** (nom, fichiers, taille) et expose une **API GraphQL** + **WebUI** de recherche. Un « Google du BitTorrent » self-hosted.
| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | https://bitmagnet.io/ |
| **GitHub** | https://github.com/bitmagnet-io/bitmagnet |
| **License** | MIT |
| **Langage** | Go |
| **Étoiles GitHub** | 234 ⭐ |
| **Dernière MAJ** | 2026-04 |
| **Catégorie** | [[cat-downloads]] |
## Description
Bitmagnet est un **indexeur BitTorrent passif** écrit en Go : il se connecte au réseau **DHT** (Distributed Hash Table) de BitTorrent, écoute les **announces** des peers, télécharge les **métadonnées des torrents** (le `.torrent` minimaliste qui contient nom, taille, liste de fichiers), et les indexe dans une base **PostgreSQL** consultable via une **API GraphQL** et une **WebUI** intégrée.
Le concept est radical : pas de scraping de sites web (comme [[app-jackett]]), pas d'API tierce. Bitmagnet **découvre lui-même** les torrents partagés sur le réseau BitTorrent mondial. Cela le rapproche de l'ancien **WhatCD / PassThePopcorn** dans l'esprit, mais en mode 100 % passif (on indexe ce qui circule, sans tracker central). La **WebUI** permet de rechercher par nom, taille, type, langue ; l'**API GraphQL** permet d'intégrer Bitmagnet dans une stack [[app-sonarr]]/[[app-radarr]] pour ajouter automatiquement les torrents détectés.
Le projet est jeune (premier commit en 2023) mais écrit par des développeurs expérimentés du Go et du BitTorrent. Il utilise **libtorrent-rasterbar** via cgo (donc l'image Docker est lourde, ~300 Mo). La courbe d'apprentissage est technique (PostgreSQL requis, configuration via YAML, compréhension du DHT), mais c'est **la** solution pour qui veut comprendre ce qui circule sur BitTorrent sans dépendre d'un indexeur web.
## Installation
### Option 1 : Docker Compose (recommandé)
```yaml
services:
bitmagnet:
image: ghcr.io/bitmagnet-io/bitmagnet:latest
container_name: bitmagnet
restart: unless-stopped
ports:
- "3333:3333" # WebUI
- "3334:3334" # API GraphQL
- "6881:6881" # DHT node
environment:
- BITMAGNET_DATABASE__URI=postgres://bitmagnet:bitmagnet@postgres:5432/bitmagnet?sslmode=disable
- BITMAGNET_DHT__TRANSPORT__ADDRESS=0.0.0.0:6881
depends_on:
- postgres
volumes:
- ./config:/etc/bitmagnet
postgres:
image: postgres:16-alpine
container_name: bitmagnet-db
restart: unless-stopped
environment:
- POSTGRES_DB=bitmagnet
- POSTGRES_USER=bitmagnet
- POSTGRES_PASSWORD=bitmagnet
volumes:
- ./postgres:/var/lib/postgresql/data
```
WebUI sur `http://localhost:3333`, GraphQL Playground sur `http://localhost:3334`.
### Option 2 : Installation manuelle
```bash
go install github.com/bitmagnet-io/bitmagnet/cmd/bitmagnet@latest
# lancer avec un fichier bitmagnet.yml
bitmagnet run --config=bitmagnet.yml
```
## Configuration
1. **PostgreSQL** : obligatoire, schéma géré par migration automatique au premier démarrage. Prévoir ~20 Go pour quelques millions de torrents.
2. **DHT node** : configurer `dht.transport.address` pour écouter sur le port 6881. Bitmagnet se comporte comme un pair BitTorrent normal.
3. **Workers** : `workers.dht.crawler` contrôle le nombre de requêtes DHT parallèles. Augmenter pour crawler plus vite (risque de ban IP).
4. **Indexeur Torznab** : Bitmagnet expose un endpoint **Torznab** compatible Sonarr/Radarr via `http://bitmagnet:3334/torznab/...`.
5. **Search window** : configurer la fenêtre de crawl (24h par défaut) et la profondeur des torrents récupérés.
6. **Reverse proxy** : exposer HTTPS pour la WebUI et l'API, avec authentification ([[app-authelia]]).
7. **Métadonnées de fichiers** : `crawler.workers.metadata` pour activer le téléchargement des listes de fichiers (impact disque).
## Alternatives
### Open Source
- [[app-jackett]] — Proxy d'indexeurs web (sites type 1337x, RARBG), complémentaire
- [[app-prowlarr]] — Agrégateur moderne d'indexeurs (web + usenet)
- [[app-qbittorrent]] — Client torrent qui ne fait pas office d'indexeur
- **magneticow** — Ancien projet similaire (Node.js, plus maintenu)
- **BEP-44** (spec) — La base technique du DHT qu'utilise Bitmagnet
### Propriétaires
- **TorrentLeech** / **IPTorrents** — Indexeurs privés payants avec règles strictes
- **1337x** / **RARBG** (historique) — Sites web, fermés ou instables
- **ThePirateBay** — Indexeur historique, plus un site web qu'un crawler DHT
## Sécurité
- Bitmagnet ne fait que **découvrir** des torrents : aucun contenu n'est téléchargé (sauf métadonnées)
- ⚠️ Le téléchargement de contenu protégé par le droit d'auteur est **illégal** dans la plupart des juridictions
- Protéger l'accès WebUI et GraphQL derrière un reverse proxy authentifié ([[app-authelia]])
- Ne pas exposer l'endpoint Torznab publiquement (risque d'abus)
- Surveiller la **taille de PostgreSQL** : peut grossir très vite
- Le port 6881 DHT doit être ouvert ou derrière un NAT en mode « open »
- Mettre à jour régulièrement : projet jeune, surface CVE encore en évaluation
## Ressources
- Site officiel : https://bitmagnet.io/
- Code source : https://github.com/bitmagnet-io/bitmagnet
- Documentation : https://bitmagnet.io/docs/
- GraphQL schema : https://bitmagnet.io/docs/graphql
- DHT protocol (BEP-5) : http://www.bittorrent.org/beps/bep_0005.html
## Pages Liées
- [[cat-downloads]] — Vue d'ensemble de la catégorie Downloads
- [[app-jackett]] — Proxy d'indexeurs web (complémentaire)
- [[app-prowlarr]] — Agrégateur moderne d'indexeurs
- [[app-qbittorrent]] — Client torrent à brancher en aval
- [[app-sonarr]] / [[app-radarr]] — Clients finaux qui consomment l'API Torznab
- [[app-authelia]] — SSO pour protéger l'UI
- [[recettes-docker-compose]] — Templates Docker