
Sonarr, Radarr, and Prowlarr are often described as a single media stack, but they do different jobs. Sonarr manages series, Radarr manages films, and Prowlarr centralizes indexer configuration for the applications that need it. A download client moves files, while a media server turns those files into a living-room experience.
That division matters on a mini PC. The arr applications are usually not the reason a small host runs out of CPU. The friction usually comes from inconsistent container paths, mismatched permissions, slow storage, download verification, or a media server performing more transcodes than the hardware can support.
This guide builds the stack around those boundaries. It covers directory layout, Docker Compose, permissions, hardlinks, backups, and the point where the media server becomes the real load. Use the Plex transcode calculator when playback is part of the plan, and see our mini PC home server guide for the host decision.
What Each Arr Application Does
The first setup mistake is treating every service as interchangeable. Give each application one clear responsibility:
| Service | Responsibility | What it does not do |
|---|---|---|
| Sonarr | Series search, queue, naming, import | Play or transcode video |
| Radarr | Film search, queue, naming, import | Play or transcode video |
| Prowlarr | Indexer management and synchronization | Download or organize the library |
| Download client | Transfers and temporary files | Decide the final library structure |
| Media server | Playback, metadata, and transcoding | Manage the download queue |
| Reverse proxy | Private service names and TLS | Replace authentication or ACLs |
Use the official Sonarr documentation, Radarr documentation, and Prowlarr documentation for current application settings. The applications change more often than a mini PC does, so old Compose examples are a poor source for current image names and options.
Is a Mini PC Enough?
For Sonarr, Radarr, and Prowlarr alone, a current low-power mini PC is generally enough. They spend most of their time waiting for schedules, querying configured services, updating metadata, and responding to the web interface. Downloads add disk activity and network traffic, but those are not the same as video transcoding.
The workload changes when the same machine also runs a media server. Direct play sends a compatible file to the client with little server-side work. Transcoding decodes and re-encodes the stream, which can use the CPU or an integrated media engine depending on the codec, driver, container, server configuration, and client.
| Host workload | N100 class planning view | Larger mini PC planning view |
|---|---|---|
| Arr applications only | Comfortable for a household | More than needed |
| Downloads and metadata | Good with SSD and storage headroom | Better for many simultaneous jobs |
| Direct-play media server | Usually practical | Comfortable |
| Hardware-assisted transcodes | Verify codec and driver support | More headroom and broader options |
| Several software transcodes | Not a safe assumption | Depends on codec and stream count |
| Arr plus VMs and photo ML | Likely contention | Better starting point |
Use the Plex transcode calculator to model streams, codecs, and clients instead of using a generic stream count. The arr applications do not change the media engine’s limits.
Build the Directory Layout First
Hardlinks and clean imports depend on the path design. Create one top-level data path that contains downloads and the library on the same filesystem:
/srv/data
├── downloads
│ ├── incomplete
│ └── complete
└── media
├── movies
└── tv
This layout lets a completed file move into the library with a hardlink when the filesystem and permissions allow it. If downloads live on one filesystem and the library lives on another, the operation becomes a copy. A copy uses more space and takes longer, but it can still be correct when the storage design requires it.
Create the paths on the host:
sudo mkdir -p /srv/data/downloads/incomplete
sudo mkdir -p /srv/data/downloads/complete
sudo mkdir -p /srv/data/media/movies
sudo mkdir -p /srv/data/media/tv
sudo mkdir -p /srv/appdata/sonarr
sudo mkdir -p /srv/appdata/radarr
sudo mkdir -p /srv/appdata/prowlarr
The container path matters more than the host path. Map the same /data root into Sonarr, Radarr, and the download client. If one container sees /downloads and another sees /data/downloads, remote path mappings become necessary and hardlink behavior becomes harder to reason about.
Permissions That Survive Reboots
Pick one user and group model before starting the containers. The current LinuxServer image documentation calls these values PUID, PGID, and TZ, while other images use different settings. Follow the image documentation for the images you choose, but make the resulting host ownership consistent.
Check the host identity:
id media
getent group media
ls -ld /srv/data /srv/appdata
The service user needs to read downloads, create or link files in the library, update its own configuration, and write logs. Avoid making the entire tree world-writable. A broad permission shortcut can make the first import work while creating a larger security problem.
After the containers start, test from inside each service rather than guessing from the host. Confirm that Sonarr and Radarr can see /data/downloads/complete and /data/media, and that the download client writes to the same logical path. Then create one controlled import and inspect ownership on both the original and the library entry.
Compose the Services Without Hiding the Data Paths
Use Docker Compose so the stack can be recreated from a small set of files. The Docker Compose documentation covers project files, environment values, networks, and persistent storage. Keep your Compose file in /srv/arr and keep application data outside the containers.
The important shape looks like this:
services:
sonarr:
volumes:
- /srv/appdata/sonarr:/config
- /srv/data:/data
radarr:
volumes:
- /srv/appdata/radarr:/config
- /srv/data:/data
prowlarr:
volumes:
- /srv/appdata/prowlarr:/config
downloader:
volumes:
- /srv/data/downloads:/downloads
- /srv/data:/data
This is a path example, not a complete deployment file. Use current image documentation for image names, user settings, ports, health checks, and the download client service. If your chosen downloader cannot use the same /data view, configure a remote path mapping deliberately and document it.
Start the stack after you have a backup plan for the configuration directories:
cd /srv/arr
docker compose pull
docker compose up -d
docker compose ps
docker compose logs --tail=100 sonarr radarr prowlarr
Pin image versions when you need predictable upgrades. Read release notes before updating several applications at once, and keep the previous Compose file until the new stack has imported a controlled test item.
Connect Prowlarr to Sonarr and Radarr
Prowlarr centralizes indexer settings and can synchronize them to Sonarr and Radarr. Create the applications in Prowlarr using the service names and container ports that exist on the Compose network. Do not use a public hostname when the services can communicate over the private Docker network.
After adding the applications, test the connection from Prowlarr. Then add only the indexers you are allowed to use and sync them to the intended applications. More indexers do not automatically mean better results. Each added dependency creates another source of failures, rate limits, and maintenance.
Configure Sonarr and Radarr in this order:
- Set the root folder to
/data/media/tvor/data/media/movies. - Connect the download client using its Compose service name.
- Confirm the completed download path is visible as
/data/downloads/complete. - Enable completed-download handling and choose the desired naming format.
- Import one legal test file and inspect the result before scheduling more work.
The application should identify a completed item, move or link it into the root folder, rename it, and leave the download state understandable. If one step fails, fix the path or permissions before adding more services.
Hardlinks, Copies, and Storage Use
A hardlink is another directory entry for the same file data on one filesystem. It can let a download remain available for seeding while the library presents a clean name and location. The Servarr Docker guide explains why container paths and filesystem boundaries matter.
The common failure is a split path design. If the download client writes to /downloads and Sonarr sees /data/downloads, the applications may still be connected through a mapping, but the filesystem relationship is no longer obvious. Use one common /data mapping whenever possible.
Hardlinks are not backups. Deleting the download can delete the underlying data that the library entry points to, depending on how the files are managed. A snapshot, export, or separate backup remains necessary.
The Media Server Is the Real Hardware Boundary
The arr stack organizes files. It does not decode video for the television, phone, or browser. That job belongs to Plex, Jellyfin, or another media server. Your client mix determines whether direct play is common or whether the mini PC must transcode.
Before adding a media server, list the source codecs, client devices, subtitle behavior, and remote-access requirements. Hardware acceleration can help, but it depends on the integrated GPU, operating-system driver, server permissions, and codec path. A mini PC that handles the arr applications easily can still be the wrong box for several software transcodes.
Use the site’s Plex transcode calculator for the stream plan. If the answer requires more hardware, separate the media server from the automation stack or move to a mini PC with a stronger media engine and more memory.
Backups and Maintenance
Back up the Sonarr, Radarr, and Prowlarr configuration directories. They contain application settings, databases, quality profiles, naming rules, and connections. Back up the media library separately because recreating the application settings does not recreate the files.
Keep download credentials and API keys out of public Compose files. Store a copy of the Compose file and environment template with secrets removed, then keep the real secrets in a password manager. Document the order for restoring the downloader, Prowlarr, Sonarr, and Radarr so a new host does not create duplicate imports.
Monitor disk space on the download volume. Incomplete downloads, failed imports, duplicate copies, and old logs can fill a mini PC faster than the application data. Use the power cost calculator when estimating the cost of keeping the host and storage online all year.
Troubleshooting by Symptom
The download completes but Sonarr or Radarr cannot see it. Compare the path shown by the downloader with the path mounted into the arr container. Fix the shared path or add a documented remote path mapping.
The import copies instead of hardlinking. Check whether the paths share a filesystem, whether the containers use the same path view, and whether the service user can create links. A copy is expected across different filesystems.
Files import but the media server cannot play them. Inspect the media server logs and client playback mode. The arr stack has completed its job. Check codec support, subtitle behavior, and hardware acceleration separately.
The mini PC runs out of space. Inspect incomplete downloads, completed downloads, duplicate media, database files, artwork, and logs. Decide which copy is authoritative before deleting anything.
Who Should Use a Mini PC and Who Should Skip It
Use a mini PC for the arr stack when the goal is household automation with one download client, moderate storage, and mostly direct-play media. A low-power N100 class host is often sufficient for the applications themselves. Add memory and CPU headroom when the box also runs a media server, photo processing, or virtual machines.
Skip the single-box design when the host must handle a large archive, multiple demanding transcodes, photo machine learning, and critical storage without maintenance windows. Separate the automation, storage, and playback roles when one failure would interrupt too much of the homelab.
Frequently Asked Questions
Can a mini PC run Sonarr, Radarr, and Prowlarr?
Yes. The arr applications are usually light enough for a mini PC when downloads, storage, and permissions are configured correctly. The bigger hardware question is what runs beside them, especially a media server that must decode or transcode video.
Do Sonarr and Radarr transcode video?
No. Sonarr and Radarr manage searches, queues, naming, imports, and metadata. The media server handles playback and transcoding. Size the mini PC for the media server’s codec and stream workload rather than blaming the arr applications for a playback problem.
Why do hardlinks matter for the arr stack?
Hardlinks let an imported file appear in the library without immediately duplicating its data on the same filesystem. They require the download and library paths to share a filesystem and require permissions that let the application create the link.
How much storage does the arr stack need?
The applications themselves need little storage compared with downloads, media, metadata, artwork, and backups. Plan separate space for incomplete downloads, completed downloads, the media library, application data, and recovery copies.
Should the arr stack run in Docker on a mini PC?
Docker Compose is a practical way to keep Sonarr, Radarr, Prowlarr, and related services separate from the host. The important part is a consistent path map and persistent application data. Use the image documentation for the current image names and environment settings.
Who should skip an arr stack on a mini PC?
Skip the small-box design when one host must handle a large media library, several simultaneous transcodes, heavy machine learning, and many other workloads without maintenance windows. A stronger host or separate storage and playback machines will be easier to operate.
Sources and Scope
This guide uses the Sonarr documentation, Radarr documentation, Prowlarr documentation, the Servarr Docker guide, and the Docker Compose documentation. Transcoding decisions should be checked against the site’s Plex transcode calculator. No universal stream count, power reading, or first-party benchmark is claimed.
