Media Servers guide

Radarr Docker Compose Setup: Paths, Imports, and Recoverable Config

Run Radarr for an authorized movie library with consistent paths, predictable permissions, recoverable configuration, and reliable imports.

Published and reviewed by OpenAlt · September 28, 2026

Smart TV displaying streaming content in modern living room setting with exposed brick wall.
Photo by www.kaboompics.com on Pexels

A reliable radarr docker compose deployment rests on three decisions:

  1. Keep Radarr’s database, settings, and metadata in /config.
  2. Expose downloads and media through one consistent /data mount.
  3. Back up /config before upgrades or database migrations.

This structure supports predictable imports, hardlinks when the filesystem allows them, and practical recovery.

Radarr organizes a movie library you are authorized to use. It does not provide media. This guide excludes acquisition services, tracker configuration, DRM circumvention, and access-control evasion. Radarr is open source under GPL-3.0; its source is available on GitHub. The example uses the separately maintained LinuxServer Radarr image.

Table of Contents

Lawful Scope and Design Goals

Use Radarr to organize a lawful library, such as files from your own discs, a permitted service, or another source you are authorized to use. Radarr monitors defined folders, matches files to movie records, and renames or moves them into the configured root folder.

The most common Docker failure is inconsistent path mapping. If a client reports /downloads/complete/movie.mkv while Radarr sees the same host file as /data/downloads/complete/movie.mkv, imports may fail. Hardlinks can also fail when applications use different mount points or when source and destination reside on different filesystems.

The Radarr Docker installation documentation describes the container-oriented approach. This guide applies its central principle: related containers should use paths that match the underlying host layout.

Directory and Path Plan

Use a dedicated application-data directory and one shared data tree. These are sample host paths; replace them with directories that exist on your machine.

/srv/appdata/radarr/       Radarr database, settings, and metadata
/srv/data/movies/          Organized movie library
/srv/data/downloads/       Temporary and completed downloads

Mount application data at /config and the entire shared tree at /data. Set Radarr’s root folder to /data/movies. A related client should use the same /data mount and report completed files beneath /data/downloads.

PurposeHost pathRadarr container pathRelated client path
Configuration/srv/appdata/radarr/configNot required
Movie library/srv/data/movies/data/movies/data/movies if shared
Downloads/srv/data/downloads/data/downloads/data/downloads
Completed movies/srv/data/downloads/complete/movies/data/downloads/complete/movies/data/downloads/complete/movies

The key rule is simple: Radarr and the client must see the same underlying file at the same internal path. One shared /data mapping is generally clearer than several unrelated mounts.

Docker Compose Example

Create a Compose project with:

services:
  radarr:
    image: lscr.io/linuxserver/radarr:latest
    container_name: radarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    volumes:
      - /srv/appdata/radarr:/config
      - /srv/data:/data
    ports:
      - "7878:7878"
    restart: unless-stopped

PUID, PGID, and TZ are sample values. Replace them with the numeric user ID, group ID, and timezone appropriate for the host. PUID and PGID determine which host ownership identity the container uses when reading and writing files; 1000 is not universal.

LinuxServer.io maintains this container packaging, while the Radarr project maintains the application. Consult the image documentation for image-specific guidance. For broader media-server context, see Radarr on OpenReplace and the related Plex Docker Compose guide.

After saving the file, validate the rendered configuration and inspect the service:

docker compose config
docker compose up -d
docker compose ps
docker compose logs --tail=100 radarr
docker exec radarr ls -ld /config /data /data/movies /data/downloads

The final command should show every expected path inside the container.

First Boot and Root Folder

Open Radarr at http://HOSTNAME-OR-IP:7878 and complete the initial setup. In the root-folder settings, add:

/data/movies

Do not enter /srv/data/movies in Radarr. That is the host path, not the path visible inside the container. Radarr must be able to create folders and write files beneath /data/movies.

Set naming, quality, and library preferences for your needs. Test with one authorized movie before importing a large collection. A small test exposes path, ownership, and naming problems quickly.

Detailed view of a server rack with a focus on technology and data storage.
Photo by panumas nikhomkhai on Pexels
Detailed image of illuminated server racks showcasing modern technology infrastructure.
Photo by panumas nikhomkhai on Pexels

Connecting an Authorized Download Client

Radarr can connect to an already-authorized client through its settings. Configure the client hostname, port, authentication, category or label, and completed-directory behavior according to that client’s documentation.

The important value is the completed-file path. If the client also runs in Docker, give it the same host mapping:

/srv/data:/data

Configure its completed directory as:

/data/downloads/complete/movies

If the client runs directly on the host, its local path must resolve to the same files Radarr sees through /data.

Avoid remote path mappings unless the applications genuinely use different internal paths. Identical mappings are easier to maintain and less likely to break imports.

When Radarr imports a completed file, it can rename and move it, copy it, or create a hardlink, depending on settings and filesystem support. A hardlink lets the completed location and organized library reference the same underlying data without duplicating disk usage.

Hardlinks require:

  • Source and destination on the same filesystem.
  • Both applications seeing the locations beneath the same shared mount, such as /data.
  • Permission to read the source and write the destination.
  • A filesystem that supports hardlinks.

If source and destination are on different filesystems, Radarr must copy the file. Hardlinks also usually fail when one service uses /downloads and another uses /movies, even if both paths refer to the same host storage.

Keep temporary and completed directories inside the shared data tree when possible. This supports consistent paths, atomic renames, and fewer partial-import conditions.

Permissions

The identity represented by PUID and PGID must read completed files and write /config and /data/movies. The authorized client must also write its completed directory.

Inspect the host identities and directory permissions:

id
ls -ld /srv/appdata/radarr /srv/data /srv/data/movies /srv/data/downloads

Prefer a shared group, consistent group ownership, and suitable directory permissions over broad unrestricted access. If the client creates files Radarr cannot read, align group membership and umask, then retest with one file. Check parent-directory permissions as well as the file itself.

Backup, Restore, Update, and Rollback

The primary Radarr backup target is the complete host directory mounted at /config:

/srv/appdata/radarr

Stop Radarr before making a filesystem-level copy so its database remains consistent:

docker compose stop radarr
cp -a /srv/appdata/radarr /path/to/protected-backup/radarr
docker compose start radarr

Keep at least one backup outside the host and periodically verify that it can be read and restored. Also preserve the Compose file and the tested image reference.

Before an update:

  1. Back up /config.
  2. Record the current image tag or digest.
  3. Validate the Compose file.
  4. Change the image reference deliberately.
  5. Confirm the service and imports after startup.

The example uses latest for readability. A cautious production deployment records a tested tag or digest. Do not assume the Radarr application version and container image tag use the same format.

For rollback, stop the service, restore the last known-good image reference, and start it with the same /config. If a newer application version migrated the database, restore the matching configuration backup too. Keep the image reference and backup together in the change record.

Troubleshooting

“Path does not exist.” Confirm that the host directory exists, the volume line is correct, and the path is entered from the container’s perspective. Inspect /data with docker exec radarr ls -la /data and review docker compose config.

Import failed. Compare the client’s reported path with Radarr’s visible path. Both should use /data, not one service using /downloads while the other uses /data/downloads. Confirm that the file is complete and readable by Radarr’s PUID/PGID.

Permission denied. Inspect ownership and permissions on /config, /data/downloads, and /data/movies. Verify that the numeric IDs correspond to a host identity with the required access.

Hardlinks are not appearing. Confirm the same filesystem and shared /data mount. Different disks, network filesystems, bind-mount layouts, or unsupported filesystems may require copying instead.

For related organization patterns, browse the media streaming category.

FAQ

Should I use /config and /data exactly?

They are strongly recommended for this layout. /config isolates Radarr’s database and settings, while /data gives Radarr and related services one consistent view of downloads and the library.

Can Radarr run without a download client?

Yes. Radarr can organize an existing authorized library and monitor folders without connecting to another service. A client is only needed when Radarr must send jobs to an already-authorized external application.

Why not mount /srv/data/movies directly as /movies?

You can, but a single /data mount preserves matching internal paths for downloads and the library. That makes imports, hardlinks, and troubleshooting more predictable.

What should I back up?

Back up the complete host directory mapped to /config, including Radarr’s database and settings. Also preserve the Compose file and tested image reference so the service can be recreated consistently.