Services

media / running

Plex

Media server for movies, TV, and anime — the front door for everything I watch.

What it is

Plex is the streaming server that indexes my media library and serves it to clients — Plex apps on the phone, the TV, the browser. Libraries point at a single mount that's backed by rclone-zurg, which is itself a FUSE view onto the upstream media catalogue.

Why I run it

The shape of "what I want to watch tonight" doesn't map cleanly onto streaming-service catalogues. Plex gives me a single library across movies, TV, and anime that doesn't disappear when a licensing deal lapses; the apps are good enough that the experience competes with the major streamers; the social features (shared libraries) are a nice incidental.

The thing I like operationally is that Plex doesn't actually own the files. The mount it reads from is provided by rclone-zurg. I can swap that pipeline out without touching Plex. The server is just an index plus a player — the heavy work happens behind the FUSE mount.

How I use it

Three libraries, all pointed at the host-managed media mount: a movies library, an anime library, and a catch-all library that exposes the broader upstream catalogue. The Plex apps connect over the local network and over Tailscale; transcoding happens server-side when the client needs it.

Behind the scenes, three companion services round out the experience: Tautulli for watch statistics, Overseerr for requests, and AniBridge to sync watch progress to AniList for anime.

The non-obvious win is the transcoder temporary directory setting. Plex's nightly "extensive media analysis" task generates BIF files (the thumbnails you see when you scrub the timeline), and by default that scratch data lands on the LXC's small rootfs. Setting Transcoder Temp Dir to a path on the larger data mount moved ~50 GB of nightly scratch writes off the rootfs and onto the disk that's actually sized for them.

Setup notes

Runbook