Jellyfin is required: when it is not set up or unreachable, show a screen saying so with a retry instead of an empty profile list. Sonarr and Radarr are optional, so hide the actions and pages that need them when they are not configured, and keep options and the dashboard loading when one is down. Connection statuses now say whether a service is configured, optional or half filled in. The status dot only turns red for real failures, and Settings marks optional services and shows unconfigured ones in grey.
OmniArr - Every Arr unified
Self-hosted media discovery and download management for Jellyfin users.
OmniArr brings your favourite services together in one clean dashboard: browse your Jellyfin library, discover movies and series, follow upcoming releases, request downloads and monitor storage from a single place.
If OmniArr is useful to you, you can support its development on Ko-fi.
What you get
-
It connects with all your Jellyfin users, the login stays consistent.
-
Integration with Sonarr and Radarr to manage your library.
-
A calendar tracking your new episodes and events.
-
Every discovery and search you may need.
-
A download manager to see what's cooking.
And many things more!
Install with Docker Compose
Create a directory for OmniArr and add this docker-compose.yml:
services:
omniarr:
image: wonderalice/omniarr:1.1
container_name: omniarr
restart: unless-stopped
ports:
- "8787:8787"
environment:
PORT: "8787"
OMNIARR_DATA_DIR: /app/data
volumes:
- ${OMNIARR_DATA_DIR:-./data}:/app/data
Then start the container:
docker compose pull
docker compose up -d
Open http://localhost:8787 and create the master password during the first
boot. Configure the Jellyfin, Sonarr, Radarr and qBittorrent connections from
the Administration area.
The Compose file in this repository is ready to use as-is:
curl -O https://raw.githubusercontent.com/WonderAliceUwU/OmniArr/main/docker-compose.yml
docker compose up -d
Set OMNIARR_DATA_DIR to a host dataset when you want the data outside the
current directory. For example, on TrueNAS:
export OMNIARR_DATA_DIR=/path/to/omniarr-data
docker compose up -d
The /app/data mount is required. It contains the encrypted application state,
including the master-password verifier and saved integration settings. Removing
the mount loses that state when the container is replaced.
Docker image tags
The current release is available as:
wonderalice/omniarr:1.1
wonderalice/omniarr:latest
Pin 1.1 in production for repeatable updates. Use latest only when you want
Compose to follow the newest published image.
Build and publish
To publish a multi-architecture image to Docker Hub:
docker login
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t wonderalice/omniarr:1.1 \
-t wonderalice/omniarr:latest \
--push \
.
To build locally without publishing:
docker build -t omniarr:local .
docker run --rm -p 8787:8787 -v "$PWD/data:/app/data" omniarr:local
Local development
Requirements: Node.js 22 or newer and npm.
npm ci
npm run dev:all
The production build can be checked with:
npm run lint
npm run build
Data and security
OmniArr keeps critical state under OMNIARR_DATA_DIR (by default
/app/data inside the container). The encrypted store is written to
/app/data/omniarr.secure.json.
Keep the data directory private, use a strong master password and provide the TMDb token through the Administration area. It is stored encrypted with the rest of the application configuration.
License
OmniArr is currently distributed as a private project. See the repository for the licensing status of your copy.