Les utilisateurs partagent des torrents. Les nœuds se synchronisent. L’index complet est accessible à tous. Indexarr est un indexeur de torrents décentralisé où chaque contributeur enrichit le catalogue pour l’ensemble du réseau : pas d’autorité centrale, pas de comptes, pas de suivi. Entièrement compatible avec l’écosystème *arr.
Comme BitMagnet, CometNet, les peers de StreamFusion ou comme d’autres projets BitTorrent plus underground, Indexarr est un index partagé de .torrents. Ça pourrait parler à ceux suivent un certain Matrix depuis le début de l’année, puisqu’il ne s’agit ici ni plus ni moins que d’une refonte de BitMagnet, célèbre et historique indexeur de .torrents en DHT.
Si vous êtes néophyte concernant BitTorrent, vous devez vous demander l’intérêt de ce truc alors que vous êtes sur les trackers A, B et C ?
Le but de la DHT est de se passer des sites Web pour partager des fichiers : les trackers. Non pas que le concept soit hasbeen et voué à disparaître, heureusement, mais publier tous les .torrents publiquement et de fait accessible à quiconque accède à une instance BitMagnet/Indexarr, permet de garantir leur durée de vie.
C’est un indexeur qui indique qui partage quoi et permet de chercher, uploader, télécharger, commenter.
Envie d’un lien avec Stremio ? Si y’a plus d’indexeur, plus de trackers, y’aura la DHT pour servir de source.
Y’a forcément beaucoup de porno et de VO pour les vidéos. Mais sur mon BitMagnet j’avais « tout de même » quelques millions de .torrents indexés en quelques semaines dont plusieurs 10aines de milliers de MULTi et idem en FRENCH. Il se dit que depuis YGG, voire avant, tous les contenus de la plupart des sites sont republiés sur la DHT.
Démo BitTorrent et indexeur Usenet (moderne) adossé à tout ça (code non publié, screens en fin d’article).
Évidemment pleinement compatible avec Prowlarr.
On peut l’installer en Docker ou en dur
services:
indexarr:
image: ausagentsmith/indexarr:latest
container_name: indexarr
ports:
- "8080:8080"
- "6881-6884:6881-6884/udp"
- "6895:6895/udp"
volumes:
- indexarr-data:/data
environment:
- INDEXARR_DB_BACKEND=sqlite
- INDEXARR_WORKERS=http_server,dht_crawler,resolver,sync
- INDEXARR_SYNC_ENABLED=true
restart: unless-stopped
volumes:
indexarr-data:
Sauf que… le GitHub est privé et l’image sur DockerHub est complètement foirée. Voici mon compose, patché en conséquence. Et comme c’est du P2P, principe de base : passer par un VPN (pour rappel j’ai un lien sponso AirVPN en haut du blog, « au cas où », merci !).
services:
gluetun-airvpn:
image: qmcgaw/gluetun:latest
container_name: gluetun-airvpn
restart: always
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
ports:
- 7846:8080 # indexarr UI
- 32879:6881/udp # indexarr DHT 1
- 33469:6882/udp # indexarr DHT 2
- 2397:6883/udp # indexarr DHT 3
- 25494:6884/udp # indexarr DHT 4
- 38837:6895/udp # indexarr sync
environment:
VPN_SERVICE_PROVIDER: airvpn
VPN_TYPE: wireguard
WIREGUARD_PRIVATE_KEY: xxx
WIREGUARD_PRESHARED_KEY: xxx
WIREGUARD_ADDRESSES: xxx
DNS_ADDRESS: 192.168.0.64
FIREWALL_VPN_INPUT_PORTS: "32879,33469,2397,25494,38837"
FIREWALL_OUTBOUND_SUBNETS: 192.168.0.0/24
TZ: Europe/Paris
networks:
- indexarr-net
indexarr:
build:
context: .
dockerfile_inline: |
FROM ausagentsmith/indexarr:latest
RUN sed -i 's/from sqlalchemy import JSON$/from sqlalchemy import JSON/' \
/usr/local/lib/python3.11/site-packages/indexarr/db/models.py && \
sed -i 's/mapped_column(JSONB,/mapped_column(JSON,/' \
/usr/local/lib/python3.11/site-packages/indexarr/db/models.py && \
sed -i 's/Index("idx_torrents_search", "search_vector", postgresql_using="gin")/Index("idx_torrents_search", "search_vector", postgresql_using="gin", postgresql_ops={"search_vector": "gin_trgm_ops"})/' \
/usr/local/lib/python3.11/site-packages/indexarr/db/models.py
container_name: indexarr
network_mode: "service:gluetun-airvpn"
volumes:
- /home/aerya/docker/indexarr:/data
environment:
INDEXARR_DB_BACKEND: postgresql
INDEXARR_DB_URL: postgresql+asyncpg://a_modifier:a_modifier@indexarr-db/a_modifier1
INDEXARR_WORKERS: '["http_server","dht_crawler","resolver","sync"]'
INDEXARR_SYNC_ENABLED: "true"
depends_on:
gluetun-airvpn:
condition: service_started
indexarr-db:
condition: service_healthy
restart: always
indexarr-db:
image: postgres:16-alpine
container_name: indexarr-db
environment:
POSTGRES_USER: a_modifier
POSTGRES_PASSWORD: a_modifier
POSTGRES_DB: a_modifier
volumes:
- /home/aerya/docker/indexarr/postgres:/var/lib/postgresql/data
- /home/aerya/docker/indexarr/initdb:/docker-entrypoint-initdb.d
networks:
- indexarr-net
healthcheck:
test: ["CMD-SHELL", "pg_isready -U indexarr"]
interval: 5s
timeout: 5s
retries: 5
restart: always
networks:
indexarr-net:
driver: bridge
Une fois installé, sa clé de récupération archivée, on peut configurer la bête.


Et le laisser travailler à récupérer les hashes déjà publié sur le réseau. Donc quelques millions, ce qui prendra du temps (des jours).







Et donc l’indexeur Usenet, adossé à ce projet. Donc pas grand-chose à voir, si ce n’est dans l’esthétique.
Comme souvent en freemium (API payante).



![]()
