hxreborn/openposterdb

A self-hosted, drop-in replacement for RPDB (Rating Poster Database).

★ 1Forks 0RustGitHub ↗Compare

Project website ↗

README

OpenPosterDB (OPDB)

A self-hosted, drop-in replacement for RPDB (Rating Poster Database). It generates movie and TV posters, logos, backdrops, and episode stills with rating badges overlaid on them — pulling artwork from TMDB (or optionally Fanart.tv) and aggregating ratings from IMDb, Rotten Tomatoes, Metacritic, Trakt, Letterboxd, MyAnimeList, MDBList, Roger Ebert, and FilmAffinity.

Website · GitHub · Docker Hub · GitHub Packages · Documentation

Note

This project is developed with the assistance of AI code generation tools. AI-generated code is reviewed and tested before being merged. If you hit any issues, please open an issue or a pull request.

Warning

This project is in active development. Expect breaking changes to the database schema and cache key format until a stable release. After updating you may need to clear your cache to drop orphaned entries — use the admin dashboard's Clear cache button (no need to delete the database volume).

Don't want to self-host?

A hosted version runs at openposterdb.com — no setup, just grab a free API key and point your media server at it.

Self-hosting

OpenPosterDB runs as a single Docker container. You'll need a few free API keys first:

  • TMDB (required) — artwork
  • MDBList (recommended) — one key covers all 9 rating sources
  • A random JWT secret for auth — generate one with openssl rand -hex 32

Docker Compose (recommended)

# Copy the example env to the project root and fill in your keys
cp api/.env.example .env
# Edit .env — at minimum set TMDB_API_KEY, MDBLIST_API_KEY (or OMDB_API_KEY), and JWT_SECRET

docker compose up -d

Docker

docker run -d \
  -p 3000:3000 \
  -e TMDB_API_KEY=your_key \
  -e MDBLIST_API_KEY=your_key \
  -e JWT_SECRET=$(openssl rand -hex 32) \
  -v openposterdb-cache:/data/cache \
  -v openposterdb-db:/data/db \
  pnrxa/openposterdb

Then open http://localhost:3000 and create your admin account on first visit.

If you access the UI over plain HTTP (no TLS in front), add -e COOKIE_SECURE=false — otherwise the browser drops the auth cookie and login appears broken.

See Configuration for the full list of environment variables (ratings sources, caching, logging, and more).

Connect your media server

Grab an API key from the admin UI, then point your client at your instance:

  • aiometadata — poster/backdrop/logo/episode URL templates
  • Jellyfin — dedicated remote image provider plugin
  • Plex — Custom Metadata Provider (PMS 1.43+)

Any client that fetches images by URL works too — see the API Reference.

Going public

Exposing OpenPosterDB to external users? Put it behind a reverse proxy with TLS, and optionally a CDN. The Deployment guide covers Caddy (auto-TLS) and Cloudflare (edge caching that shares one cache entry across users with identical settings).

Features

  • Multi-source ratings — Aggregates from MDBList (IMDb, RT Critics, RT Audience, Metacritic, Trakt, Letterboxd, MAL, the MDBList score, and Roger Ebert), optionally OMDb, and optionally Trakt directly (for episode-level ratings and as a standalone provider), and optionally FilmAffinity via a self-hosted filmaffinity-rest-api
  • Multiple image sources — TMDB as the primary source for posters, logos, and backdrops, with Fanart.tv as an optional fallback (or preferred source). Supports language selection and textless posters from both sources
  • Configurable per API key — Override image source, language, and textless settings per key, or set global defaults
  • ID resolution — Accepts IMDb, TMDB, or TVDB IDs
  • Multi-layer caching — In-memory (moka), filesystem, and SQLite metadata with background refresh and request coalescing
  • Admin UI — Vue 3 web panel for API key management, poster settings, global configuration, and cache purging
  • Auth — Argon2 password hashing, JWT access tokens, rotating refresh tokens, API key access for poster endpoints

Documentation

Acknowledgments

OpenPosterDB is made possible by these third-party services and projects:

Data & image providers — TMDB (movie/TV metadata and posters; this product uses the TMDB API but is not endorsed or certified by TMDB), MDBList (aggregated ratings), OMDb (alternative ratings for IMDb, RT, Metacritic), Fanart.tv (fan art, logos, backdrops), RPDB (the original project that inspired OPDB's API design), and Simple Icons (brand SVG icons).

Rating sources — IMDb, Rotten Tomatoes, Metacritic, Trakt, Letterboxd, and MyAnimeList.

License

See LICENSE.

Contributors

PNRxAYagUberhxreborn

Issues