Plex Manager is a web app for the owner of a Plex Media Server. With it, you can invite new members, show them how to use your server, and control their access. Each year, it also makes Rewind: a year in review for each member, from their watch history.
Note
Plex Manager is not at version 1.0. Until then, a new release can change the features, the settings and the database.
- Sign-in and invites. Members sign in with their Plex account. If you enable Jellyfin sign-in, members can also sign in with a Jellyfin account. Invites share your Plex libraries or make a Jellyfin account. Each invite has a code, the libraries to share, a maximum number of members and, if you set one, an end date.
- Affiliate invites. Members who watch a lot can apply to be affiliates. When an admin approves them, they can make single-use Plex invites, from a number of invites per 30 days that their watch hours set. This feature is off until you enable it.
- Member guide. New members get the playback settings for their devices, the steps to request titles, and the place to report a problem.
- Rewind. Plex Manager can make a Rewind of the year for each Plex member, from Tautulli history. An AI provider writes the text, or Plex Manager uses templates. Rewind is off until you enable it in Admin > Settings. There, you also set the audience (admins only by default) and the season (1 December to 31 January by default). Until a member makes a share link, only that member and the admins can see their Rewind.
- Requests and watchlist sync. Members request titles in Overseerr. A Plex member can also let Plex Manager request the titles on their Plex watchlist. Each request goes to Overseerr from the Overseerr account of that member. Overseerr uses the permissions and limits of that member. Request limits can give more requests to members who watch more.
- Assistants. An AI assistant in the admin pages can read the state of your server from Plex, Tautulli, Overseerr, Sonarr and Radarr. Members with a linked Discord account can also use an assistant in Discord. Each place that offers an assistant tells users that server admins can read assistant conversations, and which AI provider gets the messages.
- Discord. Linked roles change with the access and the watch hours of each
member. Members can use slash commands, for example
/mystatsand/watching. - Stripe subscriptions. A Stripe subscription can give a member access to your server. When the subscription ends, Plex Manager removes that access. Stripe Checkout and the Stripe Billing Portal take the payments. This feature is off until you enable it.
- Admin tools. The admin pages show members, invites, the settings of each service, connection health, announcements, job queues and AI cost. Plex Manager encrypts service keys and tokens in the database, and records each admin action in an audit log. An admin can remove a member, with their access and their personal data.
You must have these items:
- A Plex Media Server that you own.
- Tautulli, connected to that server. Plex Manager gets the watch history from Tautulli.
- A host with Docker Engine and Docker Compose. The Compose file also starts PostgreSQL 16 and Redis 7.
- A domain name and a reverse proxy with HTTPS. A production server does not
start with an
httpURL.
You can also connect these services:
- Overseerr, for requests and watchlist sync.
- Sonarr and Radarr, for the admin assistant. Rewind also shows the next seasons from the Sonarr calendar.
- Jellyfin, for Jellyfin sign-in and Jellyfin invites.
- An AI provider (OpenAI, Anthropic, Google, or a server with an OpenAI-compatible API), for the Rewind text and the assistants.
- A Discord bot, for linked roles and slash commands.
- A Stripe account, for Stripe subscriptions.
These steps install Plex Manager with Docker Compose. For the reverse proxy, other ways to install, and all the details, refer to the deployment guide.
-
Download the Compose file and the example settings into a new folder:
mkdir -p /opt/plex-manager && cd /opt/plex-manager curl -fsSLo docker-compose.yml https://raw.githubusercontent.com/mchestr/plex-manager/main/deploy/docker-compose.yml curl -fsSLo .env https://raw.githubusercontent.com/mchestr/plex-manager/main/example.env chmod 600 .env
-
Set these values in
.env. Replace each<openssl ...>value with the output of that command. Use the same two passwords inDATABASE_URLandREDIS_URL. SetPLEX_MANAGER_VERSIONto the number of the newest release, without thev(for example,0.6.0).POSTGRES_PASSWORD="<openssl rand -hex 16>" REDIS_PASSWORD="<openssl rand -hex 16>" PLEX_MANAGER_VERSION="<newest release number>" NEXTAUTH_URL="https://plex.example.com" NEXT_PUBLIC_APP_URL="https://plex.example.com" NEXTAUTH_SECRET="<openssl rand -base64 32>" PLEX_CLIENT_IDENTIFIER="<openssl rand -hex 16>" ENCRYPTION_KEYS="k1:<openssl rand -base64 32>" DATABASE_URL="postgresql://postgres:<POSTGRES_PASSWORD>@db:5432/plex_wrapped?schema=public" REDIS_URL="redis://:<REDIS_PASSWORD>@redis:6379"
[!CAUTION] Keep a copy of
ENCRYPTION_KEYSin a password manager, away from your database backups. If you lose it, Plex Manager cannot decrypt the service keys and tokens in the database. -
Start Plex Manager:
docker compose up -d
After approximately one minute,
docker compose psshows the app as(healthy). -
Put your reverse proxy in front of
127.0.0.1:3000. If more than one proxy is in front of the app, setTRUSTED_PROXY_HOPS. Refer to Reverse proxy. -
Get the setup code from the log:
docker compose logs app | grep 'Setup code'
-
Open
https://plex.example.com/setup. Type the setup code. -
Do the steps in the setup wizard. Plex and Tautulli are necessary. For each other service, you can select Skip for now and add it later in Admin > Settings.
The Plex account that you connect in the wizard becomes the admin account.
Use a release tag in production. The latest tag is the newest build of main,
and it changes with each merge.
Caution
Make a database dump before each upgrade. Prisma has no down migrations. Without a dump, you cannot return to the release that you used before.
- Make a database dump. Refer to Backup.
- Read the upgrade notes in CHANGELOG.md for each release after your current release.
- Set
PLEX_MANAGER_VERSIONin.envto the new release. - Download the new image with
docker compose pull. Then start the new release withdocker compose up -d.
The container updates the database when it starts. Outside Docker, update the
database with npm run db:deploy.
To return to the release that you used before:
Caution
Do not use docker compose start app after you restore the dump. That
command starts the newer release, which updates the restored database again.
- Stop the app with
docker compose stop app. - Set
PLEX_MANAGER_VERSIONin.envto the release that you used before. - Restore the dump. Refer to Roll back.
- Start the app with
docker compose up -d.
Operations gives the full upgrade procedure.
The guides in docs/ give the full details:
| Guide | Contents |
|---|---|
| Deployment | Docker Compose, the reverse proxy, the setup claim, web and worker containers, and how to install without Docker |
| Environment variables | Each variable, its default value, and if production must have it |
| Operations | Backups, restores, upgrades, encryption keys, metrics and security headers |
| Domain move | How to move Plex Manager to a new host name |
| Rewind runbook | The Rewind season: its settings, its start and end, and the daily checks |
| Privacy | The personal data that Plex Manager keeps, how to remove it, and retention |
| Roles | Admins, the Support role and permissions |
| Affiliate invites | Affiliates, their tiers and invites, the server cap and the switch |
| Assistant | The data, MCP servers and knowledge base that the admin assistant can use |
| Request limits | Request limits from watch time, and the Discord stat channels |
| Stripe | Subscriptions, the webhook, and Plex and Jellyfin access |
| Discord bot | The bot, slash commands and linked roles |
| Releases and CHANGELOG.md | Versions, tags and the upgrade notes of each release |
To report a bug or to ask a question, open an issue.
To change the code, read the contributing guide first. It tells you how to prepare a development environment, which checks to do, and how to send a pull request.
Plex Manager uses the MIT License.



