128 lines
6.2 KiB
Markdown
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
|