All apps · 0 apps
Marquee
Docker app from JamisonFitz's Repository
Overview
Readme
View on GitHubMarquee
Marquee turns a Google Nest Hub into a clean Plex now-playing display. It shows artwork, title, plot, genres, ratings, media details, progress, and a clock, then returns the Hub to ambient mode when playback stops.

Templates
Five designed layouts, switchable live from the settings page:
Spotlight — poster beside the full metadata stack |
Hero — big centered title over the backdrop |
Lower Third — broadcast-style chyron over full-bleed art |
Big Clock — ambient timepiece with a now-playing strip |
Every template is built from the same blocks — title/logo identity, grouped ratings, metadata chips, plot, progress, clock, poster — so your show/hide toggles, themes, custom accent color, and block position tweaks carry across all of them.

Features
- Live Plex now-playing card with five designed templates: Spotlight, Split, Hero, Lower Third, and Big Clock.
- Four themes plus a custom accent color, 12/24-hour clock styles, and per-block show/hide toggles.
- A drag-and-slider editor for moving, sizing, and scaling each card block, with an instant demo preview.
- Persisted settings, health checks, and a Docker-first deployment path.
- Google Nest Hub casting with clean idle handoff back to ambient mode.
What You Need
- Docker
- Plex Media Server on the same LAN
- A Google Nest Hub on the same LAN
- A Plex
X-Plex-Token
Marquee is designed for a trusted LAN. It has no login and should not be port-forwarded.
Quick Start
Edit the example IP addresses and token in compose.yaml, then run:
docker compose up -d --build
docker compose logs -f marquee
Open http://SERVER-IP:8084/. The card served to the Hub is http://SERVER-IP:8084/image.
If you prefer plain Docker:
docker build -t marquee:local .
docker run -d --name marquee --restart unless-stopped --network host \
-e PAGE_URL=http://192.168.1.10:8084/image \
-e PLEX_HOST=http://localhost:32400 \
-e PLEX_TOKEN=replace-me \
-v marquee-config:/config \
marquee:local
Settings persist under ./data in Compose mode or /config in the container.
Configuration
Required environment variables:
PAGE_URL— this server's LAN IP +/image. The Hub loads this URL, solocalhostwill not work here.PLEX_HOST— keephttp://localhost:32400when Plex runs on the same machine; otherwise its LAN IPPLEX_TOKEN
Cast device: open the settings page and press Scan — Marquee discovers
Google Cast devices on your LAN and you pick your Hub from a dropdown.
(HUB_IP still works as an env fallback; discovery needs the container on
the same network/VLAN as the Hub, which host networking gives you.)
Optional settings:
PLEX_USERS— comma-separated Plex usernames that trigger the marquee. Leave empty to react to everyone on the server, including shared and home users (the sessions API is server-wide).TMDB_API_KEYPOLL_SECONDSdefault5SERVE_PORTdefault8084REPO_DIRdefault/appDATA_DIRdefault/config
Health status is available at /healthz and includes the version.
Plex Token
- Sign in to Plex Web and open an item on your server.
- Select More (
…) → Get Info → View XML. - Copy the value after
X-Plex-Token=from the browser address bar. - Test it at
http://PLEX-IP:32400/?X-Plex-Token=YOUR_TOKEN.
See Plex's token instructions. Never put a real token in Compose files, screenshots, issues, or commits.
For credits-scene badges, create a TMDb account, open Account Settings → API, request a key, and set TMDB_API_KEY.
Development
docker build -t marquee:test .
docker run --rm marquee:test python cast/cast.py --selftest
docker logs -f marquee
The service uses catt to launch DashCast on the Hub. Ratings come from Plex metadata; optional credits-scene keywords come from TMDb.
Cast behavior
Marquee checks that DashCast is active, casts the /image URL when playback starts, and releases the Hub when playback stops. Container tests cannot prove physical Hub behavior, so before publishing a release:
- Open
PAGE_URLfrom another LAN device. - Start a Plex movie or episode and confirm the Hub loads the card.
- Pause and resume playback and confirm the progress state updates within one poll interval.
- Stop playback and confirm the Hub returns to ambient mode.
- Review
docker logs marquee; there should be nocatt ... failedmessage.
Install Marquee on Unraid in a few clicks.
Find Marquee in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Categories
Download Statistics
Related apps
Explore more like this
Explore allDetails
jamisonfitz/marquee:latestRuntime arguments
- Web UI
http://[IP]:[PORT:8084]/- Network
host- Privileged
- false
- Extra Params
--restart unless-stopped
Template configuration
Persistent settings.
- Target
- /config
- Default
- /mnt/user/appdata/marquee
Optional — leave empty and pick your Hub with Scan on the settings page, or set the Hub's static LAN IP here.
- Target
- HUB_IP
URL the Hub loads, so it must be this server's LAN IP — localhost will not work here.
- Target
- PAGE_URL
- Default
- http://[SERVER-IP]:8084/image
Plex Media Server URL. Keep localhost if Plex runs on this Unraid server; otherwise use its LAN IP.
- Target
- PLEX_HOST
- Default
- http://localhost:32400
Plex X-Plex-Token; treat it like a password.
- Target
- PLEX_TOKEN
Comma-separated Plex usernames that trigger the marquee. Leave empty to react to everyone streaming from the server, including shared users.
- Target
- PLEX_USERS
Optional key for credits-scene badges.
- Target
- TMDB_API_KEY
Seconds between Plex checks.
- Target
- POLL_SECONDS
- Default
- 5
Web UI port.
- Target
- SERVE_PORT
- Default
- 8084
Spotlight — poster beside the full metadata stack
Hero — big centered title over the backdrop
Lower Third — broadcast-style chyron over full-bleed art
Big Clock — ambient timepiece with a now-playing strip