Install Buildarr as a Docker container#

Buildarr is available on Docker Hub as a Docker image.

docker pull callum027/buildarr:latest

Note

Because the Docker container is a bundle of packages consisting of Buildarr and implementing plugins, it has a separate version number from the Buildarr python packages.

For more information, check out the Docker Hub page for the Buildarr Docker container.

Once you have a configuration file, create a folder containing that file to mount into the Docker container. As API keys and login credentials are to be stored here, this folder should have strict permissions set, with ownership exclusively set to the PUID (process user ID) and PGID (process group ID) to be configured on the container.

mkdir --mode=700 /path/to/config
sudo chown -R <PUID>:<PGID> /path/to/config

You can start a Buildarr container by calling docker run, bind mounting the configuration directory as /config.

By default, the Buildarr Docker container runs in daemon mode.

docker run -d --name buildarr --restart=always --mount "source=/path/to/config,destination=/config,type=bind,readonly" -e PUID=<PUID> -e PGID=<PGID> callum027/buildarr:latest

For configuration testing purposes, you can call either buildarr run or buildarr test-config using the Docker image.

docker run --rm --mount "source=/path/to/config,destination=/config,type=bind,readonly" -e PUID=<PUID> -e PGID=<PGID> callum027/buildarr:latest (run|test-config)

Plugins#

The official Buildarr container (callum027/buildarr) bundles all currently available first-party Buildarr plugins, so there is usually no need to install plugins separately.

However, if you would like to install a Buildarr plugin that is not bundled into the container, the Docker container supports installing plugins at runtime by defining the BUILDARR_INSTALL_PACKAGES environment variable.

BUILDARR_INSTALL_PACKAGES is a space-separated list of packages that gets passed directly to pip install on container startup, ensuring that any defined packages are ready before Buildarr starts running.

docker run -d --name buildarr --restart=always --mount "source=/path/to/config,destination=/config,type=bind,readonly" -e PUID=<PUID> -e PGID=<PGID> -e BUILDARR_INSTALL_PLUGINS="<package name>" callum027/buildarr:latest

If you would like to upgrade Buildarr itself or the bundled plugins within the container at the same time, set the following environment variables to the version you would like to install (only works when BUILDARR_INSTALL_PACKAGES is set):

  • BUILDARR_VERSION
  • BUILDARR_SONARR_VERSION
  • BUILDARR_RADARR_VERSION
  • BUILDARR_PROWLARR_VERSION
  • BUILDARR_JELLYSEERR_VERSION

Docker Compose#

Buildarr can be integrated into a Docker Compose environment containing your *Arr stack instances.

Note

Previous versions of the documentation recommended that depends_on be used to define service dependencies.

This is now not recommended, as when depends_on is used and *Arr application services are recreated, the Buildarr service (any any other services marked as dependent) are recreated as well.

It is now recommended to not use depends_on in your docker-compose.yml file, or use separate docker-compose.yml files for each application entirely.

Here is an example of a docker-compose.yml file with Buildarr managing one Sonarr instance.

version: "3.7"

services:
  sonarr:
    image: linuxserver/sonarr:3.0.10
    restart: always
    ports:
      - 127.0.0.1:8989:8989
    volumes:
      - ./sonarr:/config
      - /path/to/downloads:/downloads
      - /path/to/videos:/videos
    environment:
      TZ: Pacific/Auckland
      PUID: "1000"
      PGID: "1000"

  buildarr:
    image: callum027/buildarr:latest
    restart: always
    volumes:
      - type: bind
        source: ./buildarr
        target: /config
        read_only: true
    environment:
      TZ: Pacific/Auckland
      PUID: "1000"
      PGID: "1000"

The corresponding instance configuration in buildarr.yml would look something like this:

---

buildarr:
  watch_config: true
  update_days:
    - "monday"
    - "tuesday"
    - "wednesday"
    - "thursday"
    - "friday"
    - "saturday"
    - "sunday"
  update_times:
    - "03:00"

sonarr:
  # Configuration common to all Sonarr instances can be defined here.
  # settings:
  #   ...
  instances:
    # Name of the instance as referred to by Buildarr.
    # Assign instance-specific configuration to it.
    sonarr:
      host: "sonarr"
      port: 8989
      protocol: "http"
      # Define instance-specific Sonarr settings here.
      settings:
        ...