Unify your Jellyfin, Radarr, Sonarr into the definitive media center!
TypeScript
7
40 commits
updated Oct 13, 2026
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.
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!
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.
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.
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
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
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.
OmniArr is currently distributed as a private project. See the repository for the licensing status of your copy.
Unify your Jellyfin, Radarr, Sonarr into the definitive media center!
TypeScript
7
40 commits
updated Oct 13, 2026
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.
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!
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.
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.
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
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
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.
OmniArr is currently distributed as a private project. See the repository for the licensing status of your copy.