Rotatarr

Rotatarr

Docker app from Ehnkode's Repository

Overview

Keeps your home screen fresh, for Plex. Shows a random selection of your collections as rows in Recommended and on the home screens, shuffles the row order while keeping built-in rows like Continue Watching on top, and shuffles the titles inside the rows. Seasonal collections (e.g. Halloween only in October), limits per run, Discord notifications and a one-click undo. Works with any collections: Kometa, automatic movie collections or your own.

Rotatarr

Keeps your home screen fresh, for Plex.

Plex shows the same collection rows in the same order every day. Rotatarr turns your collections into a rotating program, a bit like a streaming service.

Rotatarr status page

What it does

  • Rotates rows: shows a random selection of your collections in Recommended, on your home screen and on your friends' home screens, and hides the rest.
  • Shuffles: the row order and the titles inside the rows. Built-in rows such as Continue Watching stay on top.
  • Follows your rules: always, never or seasonal per collection (e.g. Halloween only in October), plus limits and a minimum size. Plex's automatic movie collections are recognised in any language, so you can limit them separately, also just for the home screens.
  • Shows what's on air: a countdown to the next rotation, the posters of the visible collections and a guide for each home screen.
  • Tells you when something goes wrong: optional Discord message for failed runs.
  • Works with any collections: Kometa, Plex's automatic movie collections or your own.

Rotatarr only changes visibility and order. It never deletes or edits collections, and one button puts everything back.

Collection rules Settings
Collection rules Settings

Install

Unraid: search for Rotatarr in the Apps tab.

Docker Compose:

services:
  rotatarr:
    image: ghcr.io/ehnkode/rotatarr:latest
    ports:
      - "7373:7373"
    volumes:
      - ./config:/config
    environment:
      - TZ=Europe/Berlin
    restart: unless-stopped

Then open http://<server>:7373, sign in with Plex and enable your libraries.

Environment variables
Variable Default
PORT 7373 Port of the web UI
TZ Etc/UTC Time zone
PUID / PGID 99 / 100 User and group that own the files in /config
ROTATARR_USERNAME / ROTATARR_PASSWORD empty Protect the web UI with a login
LOG_LEVEL INFO

Good to know

  • Visibility and order apply to all users of your server, Plex has no per-user setting for this.
  • TV apps cache the home screen. Restart the app if the new order does not show yet.
  • If Kometa sets visible_home, visible_library or visible_shared, it overwrites Rotatarr. Let Rotatarr handle visibility instead.
  • Smart collections cannot be sorted by hand. Set their sort to random in the smart filter instead.
  • Anyone who can open the web UI can change what Plex shows. Set ROTATARR_USERNAME and ROTATARR_PASSWORD if others share your network, and do not expose Rotatarr to the internet without a reverse proxy with HTTPS.

Privacy: Rotatarr runs entirely on your own server and only talks to your Plex server and plex.tv. No telemetry.

Development

pip install -r requirements-dev.txt
pytest
ROTATARR_CONFIG_DIR=./config python -m rotatarr

The backend is Python (FastAPI), the web UI plain HTML and JavaScript without a build step. Texts for the UI live in rotatarr/static/i18n.js; translations are welcome.

License

MIT


Rotatarr is a community project and is not affiliated with or endorsed by Plex Inc. "Plex" is a trademark of Plex, Inc.

Related apps

Details

Repository
ghcr.io/ehnkode/rotatarr:latest
Last Updated2026-10-26
First Seen2026-10-26

Runtime arguments

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

Template configuration

Web UI portPorttcp

Port of the web interface

Target
7373
Default
7373
Value
7373
ConfigPathrw

Settings and run history

Target
/config
Default
/mnt/user/appdata/rotatarr
Value
/mnt/user/appdata/rotatarr
Time zoneVariable

Time zone for the schedule

Target
TZ
Default
Europe/Berlin
Value
Europe/Berlin
PUIDVariable

User id that owns the config files

Default
99
Value
99
PGIDVariable

Group id that owns the config files

Default
100
Value
100
Web UI usernameVariable

Optional. Protects the web UI together with the password.

Target
ROTATARR_USERNAME
Web UI passwordVariable

Optional. Leave empty to disable the login.

Target
ROTATARR_PASSWORD