Docker Installation
If you're using Docker Compose, this page may still contain valuable information for you. Please read it.
Availability
Images are available on DockerHub and GHCR.
DockerHub
GoLift software has a Docker Open Source Sponsorship.
That means there are no pull limits for any golift/*
image on Docker Hub.
Even if you're not logged in.
This project builds automatically in Docker Cloud and creates
ready-to-use multi-architecture images images.
The latest
tag is always a tagged release on GitHub.
- Pull the DockerHub image with this command:
docker pull golift/unpackerr:latest
GHCR
GitHub Actions also builds a Docker image and stores it in the
GitHub container registry.
This image is effectively identical to the DockerHub version; use whichever you prefer.
The latest
tag is always a tagged release on GitHub.
- Pull the GHCR image with this command:
docker pull ghcr.io/unpackerr/unpackerr:latest
Example
docker pull golift/unpackerr
docker run -d -v /mnt/HostDownloads:/downloads \
-e "UN_SONARR_0_URL=http://localhost:8989" \
-e "UN_SONARR_0_API_KEY=kjsdkasjdaksdj" golift/unpackerr
docker logs <container id from docker run>
Config File Example
When you start Unpackerr in Docker it checks for a /config
directory. If one exists, and there is
no unpackerr.conf
file within it, a brand new file is written with all default values. We still
recommend using the generator to build yourself a new file.
Replace the file or contents with those from the generator and restart the container.
- Copy the example config file from the repo, or generate one.
- Then grab the image from DockerHub or GHCR.
- Run the image using a
volume
mount for the config file's directory. - The config file must be located at
/config/unpackerr.conf
. - Recommend bind-mounting
/config
volume as an app-data directory. Example Follows.
docker pull golift/unpackerr
docker run -d -v /mnt/HostDownloads:/downloads -v /folder/with/config/file:/config golift/unpackerr
docker logs <container id from docker run>
Data Mount
The /data
or /downloads
mount you use for Starr apps should be set the same for Unpackerr.
Using the same mount path keeps consistency and makes troubleshooting Unpackerr easier.
Most importantly, it allows Unpackerr to find your files.
This means that if you mount /mnt/storage/downloads:/downloads
on your Starr apps you should
also mount /mnt/storage/downloads:/downloads
on your Unpackerr container. If you mount
/mnt/user/data:/data
on your Starr apps, mount the same path on Unpackerr.
Make sure Unpackerr can find the downloads in the same place that Sonarr and Radarr find them.
This is the most important part. Look at your download client (like Qbit), Sonarr and Radarr in your
existing compose or docker run commands; look for volumes:
or docker run -v
.
One of these volumes is your download mount. It's usually /data
or /downloads
and looks like this:
docker run -v /mnt/storage/downloads:/downloads
or
volumes:
- /mnt/storage/downloads:/downloads
More Dockers
If you want a container that has a bit more to it, you can try a third party option.
The container provided by golift is built FROM scratch
so it has nothing more in the
container than a binary and a config file (with our defaults).
- @hotio maintains a Custom Docker Container for Unpackerr. (repo)
Permissions
The golift
docker container runs as uid 0 (root) by default. This is probably not what you want.
Make sure to set the correct uid and gid with the --user
parameter. Example:
# This commands runs golift/unpackerr with UID 1000 and GID 100.
docker run --user 1000:100 -d -v /mnt/data:/data -v /mnt/config:/config golift/unpackerr
Replace 1000:100 with the correct uid:gid for your environment. One of them must provide write access to your archives.
When using compose, add user: 1000:100
to the service definition.
Find examples in the Docker Compose instruction.
Hotio
The primary difference between the golift and hotio containers is how you set the uid and gid.
Hotio does not user the --user
parameter and instead sets the UID and GID with environment
variables. Passing the --user
parameter to the hotio container will render it inoperable.
Pass the PUID
and PGID
environment variables when using hotio's container. Example:
# This commands runs hotio/unpackerr with UID 1000 and GID 100.
docker run -e PUID=1000 -e PGID=100 -d -v /mnt/data:/data -v /mnt/config:/config hotio/unpackerr
Folder Watcher
Watching folders in Docker will cause Unpackerr to constantly poll the
watched-folder for changes at a default rate of 1s
(1 second).
The Folder Watch feature uses inotify
(a.k.a. fsnotify
) to identify changes to the
watched folder. A folder-poller is automatically started when run in Docker because
inotify
is unreliable. Disable the folder poller (and rely on inotify
only) by
setting folders.interval
(UN_FOLDERS_INTERVAL
) to 1ms
.
If Unpackerr has trouble determining when downloads are finished, set
start_delay
high enough to avoid beginning extracting files that are
still being transferred.
Alternatively, run Unpackerr as a native service instead of in Docker.