Unpackerr monitors your download directories and automatically extracts archived files (RAR, ZIP, etc.) so the *arrs can import them. Many releases, especially from private trackers, come as compressed archives.
unpackerr:
image: ghcr.io/unpackerr/unpackerr:latest
container_name: unpackerr
environment:
- TZ=${TZ}
# Sonarr
- UN_SONARR_0_URL=http://sonarr:8989
- UN_SONARR_0_API_KEY=${SONARR_API_KEY}
- UN_SONARR_0_PATHS_0=/data/torrents/tv
# Radarr
- UN_RADARR_0_URL=http://radarr:7878
- UN_RADARR_0_API_KEY=${RADARR_API_KEY}
- UN_RADARR_0_PATHS_0=/data/torrents/movies
# Lidarr
- UN_LIDARR_0_URL=http://lidarr:8686
- UN_LIDARR_0_API_KEY=${LIDARR_API_KEY}
- UN_LIDARR_0_PATHS_0=/data/torrents/music
volumes:
- ${DATA_DIR}/torrents:/data/torrents
restart: unless-stoppedUnpackerr is configured entirely through environment variables — no web UI.
- Sonarr/Radarr/Lidarr report that a download is complete but contains archives
- Unpackerr detects the queued item via the *arr API
- It extracts the archive into the same directory
- The *arr picks up the extracted files and imports them
- Unpackerr cleans up extracted files after a configurable delay
Unpackerr requires API keys from each *arr it monitors. After starting Sonarr, Radarr, and Lidarr for the first time:
-
Get each service's API key (Settings → General)
-
Add them to your
.envfile:SONARR_API_KEY=your_key_here RADARR_API_KEY=your_key_here LIDARR_API_KEY=your_key_here -
Restart Unpackerr:
docker compose restart unpackerr
All options are set via environment variables. Common ones:
| Variable | Default | Description |
|---|---|---|
UN_DEBUG |
false |
Enable debug logging |
UN_INTERVAL |
2m |
How often to check for extractions |
UN_START_DELAY |
1m |
Wait time after container start |
UN_RETRY_DELAY |
5m |
Wait time between retries on failure |
UN_MAX_RETRIES |
3 |
Max extraction attempts |
UN_PARALLEL |
1 |
Concurrent extractions |
UN_DELETE_DELAY |
5m |
Wait before cleaning extracted files |
UN_DELETE_ORIG |
false |
Delete original archives after extraction |
Warning: Don't set
UN_DELETE_ORIG=trueif you're seeding — it will delete the archive while you're still uploading.
Check the logs:
docker logs unpackerrYou should see it connecting to each *arr on startup:
[INFO] Sonarr: http://sonarr:8989 - 0 queue items (connected)
[INFO] Radarr: http://radarr:7878 - 0 queue items (connected)
[INFO] Lidarr: http://lidarr:8686 - 0 queue items (connected)
"Connection refused" errors: Make sure the *arr containers are running and the API keys are correct.
Archives not extracting: Check that the paths match — UN_SONARR_0_PATHS_0 must point to where qBittorrent saves TV downloads inside the container (/data/torrents/tv).
Extracted files not cleaned up: This is controlled by UN_DELETE_DELAY. The *arr must successfully import the file before Unpackerr will clean up.
- Notifiarr — notifications
- Back to main README