No. Jellyfin stays the media server. Glance sits beside it and pulls sessions, libraries, users, requests, downloads, jobs, and health into one admin view.
FAQ
Tap a card, filter a lane, or hit Roll one. Same answers, less scrolling.
13 cards. Tap to open. Roll one if you would rather not browse.
Docker Compose v2, PostgreSQL 16 (the compose file starts it), and a Jellyfin URL plus API key. Open http://localhost:3000 after docker compose up -d.
Change JWT_SECRET, POSTGRES_PASSWORD, and TZ before you expose the stack off your LAN. See Getting Started and Docker.
Glance has to reach Jellyfin from the container, not from your browser.
- Use a LAN IP or hostname, not
localhost, if Jellyfin runs on the host or another container. - Match
http/httpsto what Jellyfin actually serves. - Use a Jellyfin API key with library and user access, not a user password.
- If Jellyfin is on another Docker network, put both stacks on the same network or use the host IP.
A 403 from Jellyfin usually means the key is wrong or the user that created it cannot see the libraries.
Quick Connect is a solid pick. You can keep Quick Connect users and local accounts on the same install.
The wizard only starts the sync. The work runs as Settings → Tasks.
- Wait for Complete Jellyfin Sync, not only Recently Added.
- Confirm Jellyfin still answers from the Glance container (
docker logs jellyglance). - Artwork and stats fill in after the first full sync, not instantly.
If the task never starts, check that Postgres is healthy (jellyglance-db) and restart the Glance container. Unable to start first sync means the API could not queue the job — logs are the next stop.
Those pages stay hidden until the matching integration is configured. Empty queue screens are intentional.
Connect the app under Settings → Integrations, then look again: Seerr for Requests, a download client for Downloads, Tdarr for Active Transcodes, Wizarr for Invites.
Point the proxy at Glance on port 3000. Do not publish Postgres.
Keep the UI and API on the same origin. Forward Host and X-Forwarded-Proto. LAN origins are already allowed; a public HTTPS name works when the browser talks to that same host.
Do not put a Glance API key in a public iframe URL. Widget calls should stay server-side on the LAN. See Homepage widgets.
That is expected. JWT_SECRET signs Glance sessions. Changing it invalidates every login. Set it once, keep it stable, and store it with the rest of the compose secrets.
Back up first (Settings → Backup, or copy ./backups). Then wipe the database and start again.
If you use the repo compose file (Postgres in ./postgres-data):
docker compose down
rm -rf ./postgres-data
docker compose up -dIf you used a named Docker volume instead, remove that volume. This deletes Glance state, not Jellyfin.
Yes. The compose file has optional JF_HOST, JF_API_KEY, JS_AUTH_MODE, JS_USER, JS_PASSWORD, JS_SKIP_FIRST_RUN, and JS_AUTO_START_SYNC comments. That seeds the same first-run data the wizard writes.
Same image and volumes as Docker Compose. PostgreSQL is a second container on the same network. Notes are on Unraid and TrueNAS.
That token is a JellyGlance API key from Settings → API Key, sent as x-api-token. It is not the Jellyfin API key from first-run.
docker compose pull
docker compose up -dImages are on ghcr.io/nerdy-technician/jellyglance for linux/amd64, linux/arm64, and linux/arm/v7.
docker-compose (v1, with a hyphen) can crash on modern Docker with KeyError: 'id'. Use docker compose.
Still stuck?
Ask in Discord or open an issue on GitHub. Product direction is on the Roadmap.
