Indexarr : un BitMagnet modernisé. Et découverte d’un indexeur Usenet.

Indexarr : un BitMagnet modernisé. Et découverte d’un indexeur Usenet.

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.

indexarr
indexarr1

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).

Loading

S’abonner
Notification pour
guest
0 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires