Sign inSign up

feeditout/leecharr

By feeditout

•Updated 3 days ago

BitTorrent downloader built on Arr* architecture. Full BEP protocol support, web UI, and more.

Image
0

10K+

feeditout/leecharr repository overview

Leecharr Skull
Leecharr ⁠

High-Performance BitTorrent & Media Downloader — purpose-built for the Servarr (*arr) ecosystem.

WebsiteCI/CDLatest ReleaseLicenseDocker Pulls
GHCR.NET 10React 19TypeScript

Leecharr Web UI Screenshot


⁠🚀 What's Changed in this Version

⁠🐛 Bug Fixes
  • Fix SonarCloud minor smell: use Number.parseFloat (typescript:S7773) (#1936)

⁠💡 What is Leecharr?

Leecharr is a modern, high-performance BitTorrent and media downloader purpose-built for the Servarr (*arr) ecosystem (Sonarr, Radarr, Lidarr, Prowlarr, Readarr).

Unlike conventional standalone clients (Deluge, qBittorrent, Transmission) that present torrents as raw filenames and technical progress bars, Leecharr deeply enriches active downloads with metadata and artwork directly from Sonarr, Radarr, and Lidarr — giving you movie posters, TV show banners, episode screenshots, artist fanart, media stream specs, and cast overviews in a unified, beautiful Servarr interface.

⁠Key Highlights
  • *🌟 Deep arr Media Enrichment: Automatic metadata and artwork correlation by release title, info hash, or *arr download ID with posters, fanart, season banners, and stream specs (4K, HDR10+, Dolby Vision, Dolby Atmos).
  • ⚡ Pure C# .NET 10 BitTorrent Engine: Rarest-First, Endgame mode, sequential streaming mode for instant video preview, non-blocking asynchronous disk I/O (64MB–512MB RAM write cache), and fast resume SQLite checkpoints.
  • 🔌 Full Client Interoperability: Built-in RPC and WebAPI emulation for Deluge (JSON-RPC), qBittorrent (WebAPI v2), and Transmission (RPC with form-urlencoded and URL path normalization) — acts as a drop-in replacement for existing download tools.
  • 🌐 Complete BitTorrent Protocol Stack: HTTP/UDP tracker announce & scrape (BEP 3, BEP 15, BEP 12 Multi-Tracker), Peer Wire protocol, MSE/PE Diffie-Hellman RC4 encryption, DHT (BEP 5), PEX (BEP 11), ut_metadata (BEP 9), Fast Extension (BEP 6), LPD (BEP 14), and uTP transport (BEP 29).
  • 📡 Sub-Second Real-Time Updates: Native Leecharr REST API v1 and SignalR WebSocket push for real-time speed pulses, piece maps, and swarm events.
  • 🔔 Multi-Channel Notifications: Discord, Telegram, Gotify, Pushover, Apprise, Email/SMTP, and Generic Webhooks with media artwork attachments.

⁠⚡ Quick Start

⁠Single Container Run (podman run / docker run)

Option 1: Docker Hub

podman run -d \
  --name leecharr \
  -p 7889:7889 \
  -p 7890:7890/tcp \
  -p 7890:7890/udp \
  -v leecharr-config:/config \
  -v leecharr-downloads:/downloads \
  --restart unless-stopped \
  feeditout/leecharr:latest

Option 2: GitHub Container Registry (GHCR)

podman run -d \
  --name leecharr \
  -p 7889:7889 \
  -p 7890:7890/tcp \
  -p 7890:7890/udp \
  -v leecharr-config:/config \
  -v leecharr-downloads:/downloads \
  --restart unless-stopped \
  ghcr.io/dmzoneill/leecharr:latest

Open http://localhost:7889⁠ in your browser.


⁠Container Compose (podman-compose.yml / compose.yaml)
services:
  leecharr:
    # Option 1 (Docker Hub):
    image: feeditout/leecharr:latest
    # Option 2 (GHCR):
    # image: ghcr.io/dmzoneill/leecharr:latest
    container_name: leecharr
    restart: unless-stopped
    ports:
      - "7889:7889"          # Web UI, REST API, & Client RPC Emulation
      - "7890:7890/tcp"      # BitTorrent Peer Wire (Inbound TCP)
      - "7890:7890/udp"      # BitTorrent DHT & uTP (Inbound UDP)
    volumes:
      - /opt/leecharr/config:/config
      - /opt/leecharr/downloads:/downloads
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:7889/api/v1/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 15s

Run with Container Compose:

podman-compose up -d
# or: docker compose up -d

⁠📁 Storage Volumes & Port Parameters

ParameterTypeDefaultDescription
-p 7889:7889Port7889Web UI, REST API v1, SignalR push notifications, Deluge/qBittorrent/Transmission RPC, and Swagger
-p 7890:7890/tcpPort7890BitTorrent Peer Wire inbound connection listener
-p 7890:7890/udpPort7890BitTorrent DHT node and uTP packet exchange listener
-v /configVolume/configApplication database (leecharr.db), configuration settings (config.xml), logs, and certificates
-v /downloadsVolume/downloadsActive and completed download storage directory
-e PUID / PGIDEnv1000:1000User and Group ID for internal filesystem permissions
-e TZEnvUTCTimezone for scheduler matrix, logs, and automated backup cron jobs

⁠🌐 Reverse Proxy Configuration

⁠Nginx
server {
    listen 80;
    server_name leecharr.yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:7889;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # WebSocket / SignalR support
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 86400;
    }
}
⁠Traefik (Docker Labels)
labels:
  - "traefik.enable=true"
  - "traefik.http.routers.leecharr.rule=Host(`leecharr.yourdomain.com`)"
  - "traefik.http.routers.leecharr.entrypoints=websecure"
  - "traefik.http.routers.leecharr.tls.certresolver=letsencrypt"
  - "traefik.http.services.leecharr.loadbalancer.server.port=7889"

⁠🛠️ Supported Architectures & Tags

Multi-architecture builds are automatically published to both Docker Hub and GitHub Packages Container Registry (GHCR):

ArchitectureDocker Hub Tag ExampleGHCR Tag ExampleStatus
linux/amd64feeditout/leecharr:latestghcr.io/dmzoneill/leecharr:latest✅ Verified Stable
linux/arm64feeditout/leecharr:latestghcr.io/dmzoneill/leecharr:latest✅ Verified Stable

Tag summary

Content type

Image

Digest

sha256:272650fe2…

Size

290.6 MB

Last updated

3 days ago

docker pull feeditout/leecharr