MCPSERV.CLUB
Reaparr

Reaparr

Self-Hosted

Cross‑platform Plex media downloader that syncs libraries

Active(97)
546stars
0views
Updated 5 days ago

Overview

Discover what makes Reaparr powerful

Reaparr is a self‑hosted, cross‑platform media downloader built to bridge Plex libraries. At its core it pulls metadata from one or more remote Plex servers, resolves the underlying media files (direct URLs, external providers, or local storage), and streams them into a target Plex instance while maintaining library integrity. The application is written in **C#** using the **.NET 8** runtime, exposing a modern HTTP API alongside a responsive Blazor WebAssembly UI that runs entirely in the browser. This dual‑fronted architecture allows developers to interact programmatically or through the GUI with equal ease.

Backend

Frontend

Database

Containerization

Overview

Reaparr is a self‑hosted, cross‑platform media downloader built to bridge Plex libraries. At its core it pulls metadata from one or more remote Plex servers, resolves the underlying media files (direct URLs, external providers, or local storage), and streams them into a target Plex instance while maintaining library integrity. The application is written in C# using the .NET 8 runtime, exposing a modern HTTP API alongside a responsive Blazor WebAssembly UI that runs entirely in the browser. This dual‑fronted architecture allows developers to interact programmatically or through the GUI with equal ease.

Technical Stack & Architecture

  • Backend – ASP.NET Core 8 Web API, leveraging the PlexNet library for authentication and metadata queries. The download engine is a custom multi‑threaded scheduler that uses HttpClientFactory for efficient connection pooling and supports resumable downloads via HTTP range requests.
  • Frontend – Blazor WebAssembly with Tailwind CSS for styling. The SPA consumes the API over fetch and websockets to stream download progress in real time.
  • Database – SQLite (file‑based) for lightweight persistence of user sessions, download queues, and library mappings. A Docker volume can be mounted to persist data across container restarts.
  • Containerization – Official Docker image (reaparr/reaparr) is built from a multi‑stage .NET publish container, exposing port 8080 by default. The image is fully Alpine‑based, keeping the footprint under 200 MB.

Core Capabilities & Developer APIs

  • Plex Integration – OAuth‑style authentication to any Plex server; the API exposes endpoints for listing libraries, fetching media items, and resolving file URLs (including support for Plex Pass‑protected content when authenticated).
  • Download Manager – Exposes a RESTful queue API (/api/downloads) that accepts media identifiers, priority flags, and concurrency limits. Webhooks can be configured to trigger external scripts when a download completes.
  • Metadata Sync – A background service that periodically reconciles the target library with source servers, updating titles, thumbnails, and collection data via Plex’s metadata API.
  • Extensibility – A plugin system based on .NET assemblies loaded at runtime. Plugins can hook into the download pipeline, modify file paths, or inject custom post‑processing steps (e.g., transcoding via FFmpeg).

Deployment & Infrastructure

Reaparr is designed for self‑hosting on any Docker‑capable host, from Raspberry Pi to cloud VMs. The single‑container deployment includes all dependencies; no external services are required beyond a Plex server and optional database volume. For scalability, the application can be horizontally scaled by running multiple instances behind a reverse proxy and sharing a common SQLite file via NFS or cloud storage; the API supports stateless authentication, so session data can be stored in Redis if needed.

Integration & Extensibility

Developers can integrate Reaparr into existing media pipelines by consuming its HTTP API or subscribing to webhooks. The plugin framework allows custom logic without modifying the core codebase, making it straightforward to add support for other media platforms (e.g., Jellyfin) or to implement custom download policies. The application also supports environment‑based configuration, enabling CI/CD workflows that inject secrets and tuning parameters at runtime.

Developer Experience

The documentation is concise yet thorough, with example payloads and endpoint summaries. A dedicated Discord channel offers real‑time support, while the GitHub repository follows semantic versioning and includes a contribution guide. Configuration is primarily environment‑variable driven, which aligns with modern DevOps practices. The open‑source license (MIT) removes licensing friction for commercial deployments.

Use Cases

  • Home Media Sync – Automate pulling new releases from a friend’s Plex server into your own library with minimal manual intervention.
  • Enterprise Media Consolidation – Aggregate content from multiple departmental Plex servers into a single catalog for streamlined access.
  • Continuous Media Backup – Use the webhook system to trigger backup scripts or cloud uploads once a download finishes.

Advantages Over Alternatives

  • Performance – The native .NET implementation and efficient HTTP client pooling deliver high throughput, especially on low‑latency networks.
  • Flexibility – The plugin architecture and Webhook support let developers extend functionality without fork‑ing the repository.
  • Simplicity – A single Docker image, no external database requirements, and a self‑contained UI reduce operational overhead.
  • Licensing – MIT license allows commercial use without royalties, unlike some proprietary media downloaders.

In summary, Reaparr offers a developer‑friendly, extensible platform for managing and downloading media across Plex servers. Its modern .NET stack, robust API surface, and lightweight deployment model make it an attractive choice for anyone looking to automate media ingestion in a self‑hosted environment.

Open SourceReady to get started?

Join the community and start self-hosting Reaparr today