backuparr

backuparr

Docker app from rsaturns' Repository

Overview

Backup your Arrs. Scheduled config/database backups for Radarr, Sonarr, Prowlarr, Profilarr, Bazarr, Tdarr, SABnzbd, NZBGet, Tautulli, Jellyfin, Emby, Plex and Seerr, sent to every destination you enable: Local storage, Google Drive, OneDrive and Dropbox. Apps, destinations, schedule, retention and restores are all set up in the web UI. Most apps are backed up through their own API, so they need only a URL (your server's IP and the app's port) and an API key. Jellyfin, Emby, Plex and Seerr also need their folder mapped below, and Bazarr needs its backup folder only to restore. Leave the paths for apps you don't use empty. Docs: https://rsaturns.github.io/backuparr/
Backuparr logo

Backuparr

Backup your Arrs.

AI disclosure: This project was built with substantial assistance from Claude (Anthropic) - code, documentation, and commit history included. Reviewed and maintained by a human.

Scheduled config/database backups for Radarr, Sonarr, Prowlarr, Profilarr, Bazarr, Tdarr, SABnzbd, NZBGet, Tautulli, Jellyfin, Emby, Plex, and Seerr, sent to every destination you enable: Local storage, Google Drive, OneDrive, and Dropbox. Everything - apps, destinations, schedule, retention and restores - is set up in the web UI, not env vars.

Most apps are backed up through their own API. Jellyfin, Emby, Plex and Seerr also need a folder mounted into Backuparr - see the app notes.

Documentation · Changelog

Screenshots

Overview tab: enabled services, destinations, schedule and retention, and each app's last backup
Overview
Settings tab: app cards with URL and API key on the left, destinations on the right
Settings
Run and Status tab: a backup in progress with its live log
Run & Status
History tab: each app's backups on a destination, with download and delete buttons
History

Quick start

Docker

Add a backuparr service to the compose file that already defines your apps, so it shares their network and can reach them by name.

services:
  backuparr:
    image: rsaturns/backuparr:latest
    container_name: backuparr
    restart: unless-stopped
    environment:
      - TZ=America/Los_Angeles
      - PUID=1000
      - PGID=1000
      # Optional - see Environment variables.
      #- LOG_LEVEL=INFO
      #- BACKUPARR_FORCE_HTTPS=true
      #- BACKUPARR_DISABLE_AUTH=true
      #- BACKUPARR_SECRETS_KEY=
      #- RCLONE_CONFIG_PASS=
      # Changing this also means updating the ports: mapping below.
      #- WEBUI_PORT=8990
    ports:
      - "8990:8990"
    volumes:
      # config.json, rclone.conf, and local-destination backups.
      - /share/Container/backuparr:/config/backuparr
      # Optional: needed only to restore Bazarr - path to its config/backup folder.
      #- /share/Container/bazarr/backup:/mnt/bazarr-backup
      # Needed to back up Jellyfin - its backups folder (see the Jellyfin note).
      #- /share/Container/jellyfin/config/data/backups:/mnt/jellyfin-backups
      # Needed to back up Emby - its /config folder (see the Emby note).
      #- /share/Container/emby/config:/mnt/emby:ro
      # Needed to back up Plex - its "Plex Media Server" folder (see the Plex note).
      #- "/share/Container/plex/Library/Application Support/Plex Media Server:/mnt/plex:ro"
      # Needed to back up Seerr - its /app/config folder (see the Seerr note).
      #- /share/Container/seerr/config:/mnt/seerr:ro
docker compose up -d

Or without Compose:

docker run -d --name backuparr --restart unless-stopped \
  -e TZ=America/Los_Angeles -e PUID=1000 -e PGID=1000 \
  -p 8990:8990 \
  -v /share/Container/backuparr:/config/backuparr \
  rsaturns/backuparr:latest

Published for linux/amd64 and linux/arm64. latest is the newest tagged release; pin a version (e.g. rsaturns/backuparr:1.10.2) to control upgrades. Tags are on Docker Hub, and the same images are on GitHub Container Registry as ghcr.io/rsaturns/backuparr.

The optional settings are covered in Docker, and building the image yourself in Build from source.

Unraid

On the Apps tab, search for Backuparr and click Install. The template uses the same image, with appdata in /mnt/user/appdata/backuparr; fill in the folders of the apps that need one - see Unraid.

First run

Open http://<host>:8990 and create the admin account on the setup screen. Then, on the Settings tab:

  1. Switch on each app to back up, enter its URL (e.g. http://radarr:7878 on the same Compose network, or IP:port for apps on host networking) and its API key, and click Test connection. Using Prowlarr? Set it up first and click Discover services - see Prowlarr discovery.
  2. Enable at least one destination.
  3. Set retention and a schedule. Retention deletes each app's backups older than the number of days you set, but always keeps its newest one.
  4. Click Save settings. Schedule changes apply without a restart.

Run & Status runs a backup now - of every app, or just one - and shows it live, History lists, downloads and deletes backups, and Restore restores them.

Documentation

Want to help? See CONTRIBUTING.md and the Code of Conduct.

Credits

App icons (webui/static/icons/) are from the selfh.st icon collection (selfhst/icons on GitHub), licensed CC BY 4.0.

License

GNU AGPLv3 - if you run a modified version as a network service, its source must be available to its users too.

Media gallery

1 / 4

Download Statistics

2,868
Total Downloads

Related apps

Explore more like this

Explore all

Details

Repository
rsaturns/backuparr:latest
Last Updated2026-11-03
First Seen2026-11-03

Runtime arguments

Web UI
http://[IP]:[PORT:8990]/
Network
bridge
Shell
bash
Privileged
false

Template configuration

WebUIPorttcp

Port of the Backuparr web UI.

Target
8990
Default
8990
Value
8990
AppdataPathrw

Backuparr's settings, encrypted credentials and, with the Local destination, the backups themselves. Back this folder up or keep a cloud destination enabled.

Target
/config/backuparr
Default
/mnt/user/appdata/backuparr
Value
/mnt/user/appdata/backuparr
Jellyfin backups folderPathrw

Needed to back up Jellyfin: the folder Jellyfin writes its backups to, e.g. /mnt/user/appdata/jellyfin/data/data/backups for the linuxserver image. See https://rsaturns.github.io/backuparr/apps/jellyfin/

Target
/mnt/jellyfin-backups
Emby config folderPathro

Needed to back up Emby: the folder Emby has at /config, e.g. /mnt/user/appdata/emby. Set Access Mode to Read/Write to restore from the web UI. See https://rsaturns.github.io/backuparr/apps/emby/

Target
/mnt/emby
Plex data folderPathro

Needed to back up Plex: its Plex Media Server folder, e.g. /mnt/user/appdata/plex/Library/Application Support/Plex Media Server. Set Access Mode to Read/Write to restore from the web UI. See https://rsaturns.github.io/backuparr/apps/plex/

Target
/mnt/plex
Seerr config folderPathro

Needed to back up Seerr: the folder Seerr has at /app/config, e.g. /mnt/user/appdata/seerr. Set Access Mode to Read/Write to restore from the web UI. See https://rsaturns.github.io/backuparr/apps/seerr/

Target
/mnt/seerr
Bazarr backup folderPathrw

Needed only to restore Bazarr: its backup folder, e.g. /mnt/user/appdata/bazarr/backup. See https://rsaturns.github.io/backuparr/apps/bazarr/

Target
/mnt/bazarr-backup
PUIDVariable

User the container runs as. 99 is Unraid's nobody.

Default
99
Value
99
PGIDVariable

Group the container runs as. 100 is Unraid's users.

Default
100
Value
100
UMASKVariable

Permissions of new files. The default 077 lets only the container user read backups; set 022 if another user reads the backup folder.

Default
077
Value
077
LOG_LEVELVariable

Logging level for backup and restore runs, e.g. DEBUG.

Default
INFO
Value
INFO
BACKUPARR_FORCE_HTTPSVariable

Set to true only behind your own TLS reverse proxy. Leave empty on plain HTTP, or login fails. See https://rsaturns.github.io/backuparr/environment-variables/

BACKUPARR_TRUSTED_PROXYVariable

With BACKUPARR_FORCE_HTTPS: your reverse proxy's IP address, so the login lockout sees each client's own address.

BACKUPARR_DISABLE_AUTHVariable

Set to true only when an authenticating reverse proxy protects the whole UI and the port isn't reachable any other way. See https://rsaturns.github.io/backuparr/security/

BACKUPARR_SECRETS_KEYVariable

Optional: replaces the generated secrets.key that encrypts credentials in config.json. Leave empty to use the generated key.

RCLONE_CONFIG_PASSVariable

Optional: replaces the generated password that encrypts rclone.conf. Leave empty to use the generated one.