Plex Media Server indexes your own video, music and photos and streams them to first-party apps on almost every TV, console and phone. It gives you a streaming-service interface over your own files, but since 2025 both remote playback and hardware transcoding sit behind a paid pass.
Our verdict on Plex Media Server#
Plex has the best clients in this category and gives you the least ownership. Since 29 April 2025, remote playback of personal media requires that the server owner holds a Plex Pass, or that the viewer holds a Plex Pass or the cheaper Remote Watch Pass ($1.99/month, $19.99/year). Enforcement started on Roku in late November 2025 and reached Fire TV, Samsung, LG, Vizio, PlayStation and Xbox on 29 April 2026. Local-network playback stays free. Hardware transcoding has always been Plex Pass only, so the free tier is now a LAN-only, CPU-only server. Plex Pass is $6.99/month, $69.99/year or $249.99 lifetime after the 2025 increase, and Plugins, Cloud Sync and Watch Later were retired along the way. What you get for it: Apple TV, Roku and Tizen apps that relatives can use without calling you, and a security cadence that matters (1.43.3, 1 September 2026, patched undisclosed flaws).
Who Plex Media Server is for#
Choose it if
- A household where the TV app has to work first time for people who will never troubleshoot anything.
- You already hold a lifetime Plex Pass bought before the 2025 price increase, which makes the paywall a non-event.
- You want one app that also does over-the-air DVR with an HDHomeRun tuner alongside your own files.
- You share a library with friends or family on devices you do not control and cannot install sideloaded clients on.
Look elsewhere if
- You object on principle to a self-hosted server that asks a vendor's cloud for permission to play your own files.
- You will not pay: without a Pass you are limited to same-network playback and software transcoding.
- You need the server to keep working through a plex.tv outage or in a fully offline network, which is possible but needs a claimed server and specific fallback settings.
What running it actually looks like#
One container. The official image is plexinc/pms-docker, published for amd64, arm64 and armv7. Run it with network_mode: host unless you enjoy fighting GDM discovery and DLNA; port 32400 is the one that matters. Get a claim token from plex.tv/claim and pass it as PLEX_CLAIM on the very first start: the token expires after four minutes, and an unclaimed server never attaches to your account while showing a setup page to everyone on the LAN. Mount /config for the database and metadata, /transcode for scratch on fast storage or tmpfs, and media read-only. Hardware transcoding needs Plex Pass plus --device /dev/dri:/dev/dri for Quick Sync, or the NVIDIA Container Toolkit for NVENC, and then the toggle in Settings, Transcoder. Upgrades are a tag pull with no supported schema downgrade.
Resource profile#
- Memory
- 400 MB idle, around 1200 MB in ordinary use. Idle covers the server plus its scanner; the growth comes from concurrent transcodes, the credits and intro detection tasks, and thumbnail generation on large libraries.
- CPU and acceleration
- Direct play is near free. Software transcoding is the whole cost model, and hardware acceleration via Quick Sync or NVENC requires an active Plex Pass, so the free tier is CPU-only by design.
- Storage growth
- Metadata, posters, chapter thumbnails and the intro/credits detection index under /config grow steadily and can reach tens of GB on a large library; the transcode scratch directory needs several GB per active session.
- Operational load
- 2 of 5, Light. One container, one SQLite database, upgrades are a tag pull. The extra point is the cloud coupling: claim tokens, account authorization and remote-access relay are failure modes you cannot fix locally, and the library database is known to need occasional repair on large installs.
Figures describe a small single-household install and are the working assumptions behind our stack planner. Your numbers will differ with library size, user count and hardware. See methodology.
Data and backup surface#
Everything lives under /config/Library/Application Support/Plex Media Server/. The database is Plug-in Support/Databases/com.plexapp.plugins.library.db, alongside blobs.db and their -wal and -shm companions. Metadata/ and Media/ hold downloaded posters and generated thumbnails: large, regenerable, safe to exclude if you accept a long rescan. Cache/ and Codecs/ are disposable. Do not copy the database while the server is running. Stop it, or use the bundled Plex SQLite binary and its .backup command, because a stock system sqlite3 can be a different version than Plex's build. Watch state, play counts and collections exist only in that database; Plex's own scheduled task keeps dated copies next to it and those are your fastest restore.
Derived backup shape
SQLite backup. sqlite3 <db> ".backup out.db" while running, or stop the container and copy. A live cp of a WAL-mode SQLite file can restore corrupt.
Traps and surprises#
Remote streaming now needs someone to be paying
Since 29 April 2025 remote playback of personal video requires the server owner to hold a Plex Pass, or each remote viewer to hold a Plex Pass or Remote Watch Pass. Enforcement began on Roku in late November 2025 and extended on 29 April 2026 to Fire TV, Android TV, Apple TV, Samsung, LG, Vizio, PlayStation and Xbox. Same-network playback is unaffected. Check which side of that line your shared users sit on before they call you.
The claim token expires in four minutes
PLEX_CLAIM from plex.tv/claim is valid for about four minutes. Paste it into a compose file, take a coffee break, then start the container, and the server comes up unclaimed: it will not appear in your account, and its setup wizard is reachable by anyone on the network. Fix it by generating a fresh token, wiping Preferences.xml, and starting again promptly.
Repair the library database with Plex's own SQLite
The library database corrupts often enough on large installs that Plex ships a repair procedure. Use the Plex SQLite binary bundled with the server, not the distribution's sqlite3, since version and WAL handling differ and the wrong tool can make it worse. Stop the server first, work on a copy, and remember the dated backups Plex writes into the Databases folder.
Features you may depend on were retired
Plex sunset the Plugins framework, Cloud Sync and the Watch Later bookmarking feature. If your setup relies on third-party plugins, that path is closed and has been for a while. Plex also ended support for 32-bit Windows builds. Confirm your host and any integration still has a supported route before you plan an upgrade around it.
Specifications#
- Category
- Media servers and libraries
- Licence
- Proprietary (Proprietary)
- Written in
- C++ (closed source)
- First release
- 2008
- Maturity
- Mature
- Datastore
- SQLite
- Default ports
32400,32469- Ships as
- docker, deb/rpm package, NAS package, native binary
- arm64 builds
- Yes
- Identity
- Local accounts only. Identity belongs to plex.tv: accounts, sharing and login all route through Plex's cloud, there is no way to point it at your own IdP, and managed users under Plex Home are the closest thing to a local account.
- Replaces
- Netflix, Emby, Jellyfin, Apple TV app
- Project site
- www.plex.tv
- Source
- github.com/plexinc/pms-docker
- Documentation
- support.plex.tv/articles
Alternatives to Plex Media Server#
Everything else in media servers and libraries, closest in operational weight first.
| Tool | Ops load | Idle RAM | Licence |
|---|---|---|---|
| Audiobookshelf | 2, Light | 200 MB | GPL-3.0 |
| Calibre-Web | 2, Light | 120 MB | GPL-3.0 |
| Emby | 2, Light | 350 MB | Proprietary |
| Jellyfin | 2, Light | 280 MB | GPL-2.0-only |
| Jellyseerr | 2, Light | 220 MB | MIT |
| Kavita | 2, Light | 250 MB | GPL-3.0 |
Where Plex Media Server comes up elsewhere#
Head to head
Migration guides
Sources#
Facts on this page were checked against the project's own material. Where a number is our own estimate rather than a published figure, the text says so.
Published . Last reviewed . Found something out of date? Tell us and we will fix it and log the change.