π΄ββ οΈ Enjoyin' the spoils? Drop us a β an' let the whole crew know this chart helped.
βββ β§ βββ
β οΈ Questions or cursed code? Cross the Styx β enter π₯HADESπ₯.
Plundarr is a generated, ready-to-run Docker Compose media stack built from the services you select. Maraudarrβthe Docker Compose project generator included in this repositoryβturns that selection into one complete deployment under dist/<preset>/, with a commented docker-compose.yml, an editable .env, and the selected service configuration directories.
Each generated Compose project works with Docker Compose and Synology Container Manager. Routine configuration stays in the deployment's .env; you do not need to assemble Compose fragments by hand.
The repository has two deliberately separate parts:
- Maraudarr is the Docker Compose project generator. It resolves the selected preset, services, and dependencies; writes and validates the complete Compose project under
dist/<preset>/; preserves existing environment values and application state; and exits. - Plundarr is the generated Docker Compose deployment. It remains on your host and runs the selected services from
dist/<preset>/after Maraudarr has finished.
VPN-enabled presets use Privateerr to generate PIA WireGuard configuration and Gluetun to establish and maintain the actual VPN tunnel.
Maraudarr images are published to GitHub Container Registry and Docker Hub. make ship runs that Compose project generator from the published image when available and can build it from the checkout as a fallback.
Before you begin, install Git, Docker with Docker Compose, and Make. The default plundarr preset is VPN-enabled and requires an active PIA subscription; the standalone media-server and utility presets do not. This first voyage creates the movie, television, and ebook stack with qBittorrent as its downloader and Calibre-Web Automated as a removable default:
git clone https://github.com/scottgigawatt/plundarr.git
cd plundarr
make shipMaraudarr writes:
dist/
βββ plundarr/
βββ docker-compose.yml
βββ example.env
βββ .env
βββ config/
When generation finishes, Maraudarr exits. The files in dist/plundarr/ are the Plundarr deployment you configure, start, stop, and maintain. Other preset selections use their matching dist/<preset>/ directory.
Important
Review dist/plundarr/.env before launch. Set real PIA credentials for VPN-enabled presets and confirm host storage paths, user and group IDs, timezone, network values, and published ports.
Start the generated project:
make upWatch Maraudarr generate and start the default stack
The recording shows make configure, make up, and make ps using dist/plundarr/.
You can inspect or replay the recording source.
Use make configure for an interactive picker or pass PRESET to make ship for a repeatable build.
| πΊοΈ Preset | π― Primary purpose |
|---|---|
π΄ββ οΈ plundarr |
Movies, television, and ebooks with a VPN-protected torrent downloader |
π boudoirr |
Whisparr automation with a VPN-protected torrent downloader |
ποΈ jellyfin |
Standalone Jellyfin media server |
π¬ plex |
Standalone Plex Media Server |
π calibre-web-automated |
Standalone ebook library and automatic ingest service |
π duplex |
Plex metadata, artwork, monitoring, and maintenance tools |
π watchtower |
Standalone container image updates |
π§© custom |
A stack assembled service by service |
Inspect the current catalog before generating:
make presets
make servicesThe catalog includes VPN foundations, torrent and Usenet clients, movie, television, music, subtitle, and quality-profile automation, Jellyfin and Plex, Plex utilities, notifications, backups, dashboards, monitoring, and maintenance tools. Maraudarr adds required dependencies and displays the resolved fleet before writing it.
ADD_SERVICES and REMOVE_SERVICES accept comma-separated service IDs. Preset core services cannot be removed; removable defaults and optional services can be changed interactively or on the command line.
Generate common combinations:
make ship PRESET=boudoirr ADD_SERVICES=jellyfin
make ship PRESET=calibre-web-automated
make ship ADD_SERVICES=lidarr
make ship ADD_SERVICES=recyclarr
make ship ADD_SERVICES=lidarr,recyclarr
make ship ADD_SERVICES=sonarr-anime
make ship ADD_SERVICES=sabnzbd
make ship REMOVE_SERVICES=qbittorrent,cleanuparr ADD_SERVICES=nzbget
make ship REMOVE_SERVICES=calibre-web-automated
make ship PRESET=duplex ADD_SERVICES=watchtowerRegeneration preserves existing values by variable name and does not replace application state. Values for temporarily unselected services remain in a marked footer so they can return when the service is selected again.
Add Lidarr to Plundarr for music automation:
make ship ADD_SERVICES=lidarrHOST_MUSIC_PATH defaults to /volume1/music/Music/Media/Music; change it when the host music library lives elsewhere. Lidarr receives it read/write at /music and shares /downloads with the selected download clients. Open Lidarr after launch, use /music as its root folder, then connect Prowlarr and a download client. When Plex is also selected, Maraudarr adds the same library read-only at /music; Jellyfin reaches it as /data/music when its data root and the Plundarr media root point to the same host directory. The generated Homepage card requires a Lidarr API key in HOMEPAGE_VAR_LIDARR_KEY.
The LinuxServer Lidarr image supports linux/amd64 and linux/arm64, not linux/arm/v7. The Homepage Lidarr widget guide documents the API key and supported fields used by the generated card.
Add the profile-gated Recyclarr tool. Its catalog dependencies ensure Radarr and Sonarr are present:
make ship ADD_SERVICES=recyclarrSet the selected service URLs and API keys in dist/plundarr/.env, then review the regeneration-safe starter file at dist/plundarr/config/recyclarr/recyclarr.yml. The starter syncs only upstream quality-size definitions and leaves old custom formats intact.
Preview first, then deliberately apply the same configuration:
make recyclarr-preview
make recyclarr-syncCaution
make recyclarr-sync changes the configured Radarr and Sonarr instances. Recyclarr never starts during ordinary make up; use the preview output to verify the target instances and proposed changes before applying them.
See the official Recyclarr feature reference and sync command reference before extending the starter configuration.
Calibre-Web Automated is removable default cargo in Plundarr and also has a focused standalone preset:
make ship PRESET=calibre-web-automated
make up PRESET=calibre-web-automatedSet CWA_CONFIG_PATH, CWA_INGEST_PATH, and CWA_LIBRARY_PATH to three separate host directories. The ingest directory is destructive: CWA removes books after processing them, so finish downloads elsewhere and move only completed files into it. Preserve the complete config directory and the Calibre library containing metadata.db in backups. Set CWA_NETWORK_SHARE_MODE=true only for NFS or SMB storage.
CWA image updates remain excluded from Watchtower so database migrations stay under operator control. The published CWA image supports linux/amd64 and linux/arm64, not linux/arm/v7.
Generate the Plex maintenance preset:
make ship PRESET=duplexSet KOMETA_CONFIG_PATH to an independently managed Kometa checkout containing its config.yml, assets, metadata, and overlays. Set IMAGEMAID_PLEX_PATH to Plex application data containing Cache, Metadata, and Plug-in Support.
Kometa Overlay Reset remains behind the tools Compose profile and never starts during ordinary make up runs. Keep OVERLAY_RESET_DRY_RUN=True, inspect the dry-run output, and invoke the tool explicitly:
make kometa-overlay-reset PRESET=duplexRun Watchtower as a persistent standalone project:
make ship PRESET=watchtower
make up PRESET=watchtowerUse the same generated project for one update pass:
make watchtower-run-once PRESET=watchtowerRun only one persistent Watchtower daemon per Docker host and stop it before a one-shot pass. Containers with com.centurylinklabs.watchtower.enable=false remain excluded.
Maraudarr writes only variables used by the selected services. Start with these groups in dist/<preset>/.env:
- Credentials:
PIA_USERandPIA_PASSfor VPN-enabled presets. - Host identity:
DEFAULT_PUID,DEFAULT_PGID, and service-specific user or group IDs. - Storage: Download, movie, television, anime, scene, ebook, Jellyfin, Plex, Kometa, and backup paths selected by the stack.
- Networking: Project subnet, gateway, address range, and
*_WEBUI_PORTvalues when defaults collide. - Time:
TZand service schedules.
Configuration remains under dist/<preset>/config/ unless you deliberately change a generated path. Read the Docker and Synology setup guide for network planning, firewall rules, side-by-side presets, and media-library mounts.
Each preset is already a complete one-file Container Manager project:
- Keep
.envbesidedocker-compose.ymlindist/<preset>/. - Create a Container Manager project from that preset directory.
- Select its
docker-compose.yml. - Review the generated settings and deploy the project.
The same generated files work with ordinary Docker Compose; Synology does not receive a reduced or separate chart.
Use make help for the complete command reference. Common checks include:
make config
make env
make ps
make testmake clean removes disposable repository artifacts only. make down PRESET=<preset> stops the selected project while preserving volumes, images, .env, config, backups, and generated credentials.
Caution
make nuke PRESET=<preset> removes attributable Docker resources, images, volumes, and scoped build cache for the selected deployment and the separate Maraudarr project. It preserves deployment files and application config. Only make delete-config PRESET=<preset> deletes application state; back up the deployment before using it.
VPN and full-stack tests can use real PIA credentials and launch containers. Read the testing guide before running make test-vpn, make test-e2e, or make test-stack.
- Developer documentation: Maraudarr architecture, extension guides, and Python reference.
- Docker and Synology setup: Networks, firewall rules, Container Manager, and library mounts.
- Host helper scripts: Linux, Synology, backup, restart, and status helpers.
- Testing: Maraudarr, generated Compose projects, workflows, VPN connections, and full-stack validation.
- Support: Usage questions, bugs, documentation requests, and safe reporting routes.
- Contributing: Development setup and pull request expectations.
- Security policy: Supported versions and private vulnerability reporting.
- Code of Conduct: Community expectations and enforcement.
Maraudarr is published for linux/amd64, linux/arm64, and linux/arm/v7. Individual third-party service images may support fewer architectures. Plundarr is tested with Synology Container Manager and Docker Desktop on macOS; compatible Linux Docker hosts are expected to work.
Plundarr is licensed under the Apache License 2.0. It consumes the published Privateerr image and does not vendor the upstream PIA manual-connection scripts.
Fair winds, clean logs, and may your containers never mutiny. π΄ββ οΈ