A rewind for your media server, inspired by the likes of Spotify Wrapped.
Present Plex and Jellyfin user statistics and habits in a beautiful and organized manner, using data from Tautulli or Tracearr, and Seerr. You can also disable the Rewind functionality and just use it as an easily sharable Dashboard for your users or vice versa!
| Media server | Statistics from |
|---|---|
| Plex | Tautulli or Tracearr |
| Jellyfin | Tracearr |
- 📱 Fully responsive - viewable, usable & enjoyable on desktop, tablet or mobile.
- 🔄 Fully dynamic - the data you're viewing will always be the latest available.
- 🎭 Anonymization - anonymize user info for enhanced privacy.
- 📆 Rewind - lets your users step through stories of their statistics and habits for a (customizable) time period, with a viewing personality and a summary to save as an image.
- 👀 Dashboard - provides an easily glanceable overview of activity on your server for all your libraries, personalized or general.
- ⚡ Activity - see what's happening on your server in real time.
- 🕘 History - browse and search past plays and requests, with binges grouped together.
- 📊 Fuelled by data from Tautulli or Tracearr - the backbone responsible for the heavy lifting regarding statistics.
- 🔗 Integrates with Seerr - show request breakdowns and totals and display request buttons next to deleted fan-favorite media items.
- 🍅 Ratings from TMDB, IMDb and Rotten Tomatoes.
- 🔐 Log in with Plex or Jellyfin - secure login and session management with the account you already use for your media server.
- 🚀 PWA support - installable on mobile devices and desktops.
- 🐳 Easy deployment - run the application in a containerized environment with Docker.
- 🌐 Multi-language support - currently supporting English (UK and US), Estonian, French, German, Italian and Spanish. See translations for more information.
Keep an eye on the issues page to see what new features have already been requested or to make your own request!
- Create a
docker-compose.ymlin your location of choice and rundocker compose up -d. The app will be available athttp://localhost:8383.
services:
rewindarr:
image: ghcr.io/raunot/rewindarr:latest # :develop for the latest development version
container_name: rewindarr
environment:
- TZ=Europe/London # (optional) your timezone, used for finish times. Rewind's viewing habits use each viewer's own.
- PUID=1000 # (optional) user ID the app runs as, defaults to 1000
- PGID=1000 # (optional) group ID the app runs as, defaults to 1000
# - NEXT_PUBLIC_SITE_URL=https://rewind.example.com # (optional) the address you open it at, only needed if signing in sends you to the wrong one
# - NEXTAUTH_SECRET=your-secret # (optional) secret for signing logins, defaults to one created in config/auth-secret
volumes:
- ./config:/app/config
ports:
- 8383:8383
restart: unless-stoppedNOTE: Rewindarr builds its statistics from the play history, which it reads once and saves to
config/play-history.json.gz. After that, only the newest plays are read again, even across restarts. The read starts when Rewindarr starts, and its progress is shown in the connection settings. Tautulli is read 5,000 plays at a time, which usually takes seconds. Tracearr is read 100 plays at a time, one request after another, and allows 240 requests a minute by default, so the first read of 100,000 plays takes about 5 minutes. For Tracearr histories over 50,000 plays, set its API rate limit (Settings → Data → API, restart required) to 1,200. A higher value doesn't make it faster, as each request waits for the previous one, and on modest hardware 600 puts less load on Tracearr.
For those that need it, a simple status page is also available at /api/status.
Run docker compose pull and then docker compose up -d. Older versions ran as root, so ./config may be owned by root. The container fixes that on start and then runs as PUID and PGID; set PUID=0 to keep running as root.
The application follows the browser's language when it's one of the supported ones, and falls back to UK English otherwise. A language picked from the language menu takes precedence over the browser's.
To help translate the application to your language, create a new <language-code>.json in the messages directory and translate the strings, using en-GB.json as a reference. Add the code to LOCALES in src/utils/constants.ts, then create a pull request for review. See CONTRIBUTING.md for the setup.
If you like this project and wish to support it, you can do so on GitHub Sponsors or Buy Me a Coffee. Thank you! ❤️
- NAS Assist


