YT ▶ PLEX Goes Public: Plex-Driven Libraries, Plex-Style TV Names, First Release
Why: Damien spent the afternoon polishing yt-plex for a friend. Along the way the library setup got simpler (just ask Plex), TV filing was brought in line with Plex's naming guide, and the result was published for download on the main domain.
This picks up where v2 left off earlier today. Most of the work was UI polish that doesn't belong in a server journal. The parts that change how files land on disk, or what's exposed publicly, are below.
1. Libraries now come from Plex
The hand-edited library list is gone. Every 10 minutes, and whenever Settings → Libraries is opened, yt-plex reads Plex's movie and show sections: name, type and folders. The app stores only which ones are ticked, which folder to save into when a section has several, and when each was last used (the row dropdown lists the most recently used first). Defaults pick the folder whose name matches the library, so "Movies" saves into /media/plex1/Movies, not /media/plex1/Rare, which Plex lists first.
The sync turned up three Plex libraries whose folders don't exist on disk: Werkouts (/media/plex1/Workout; a Workout folder exists only on /media/plex1_backup), 3D and Limited Run. yt-plex flags them with an explanation and refuses to save there. That's a Plex-side leftover worth fixing someday, not a yt-plex problem.
2. TV follows Plex's naming guide
New TV downloads go to <Show>/Season XX/<Show> - sXXeYY - <Title>.{mp4,en.srt,jpg}, creating the Season folder if needed, with no per-episode folder. Renames and library moves always carry all three files together and refuse, moving nothing, if any target exists. I moved the one app-downloaded episode (Some More News S2026E29) into the new layout and removed its emptied folder. Some More News E01–E28 are untouched: they came from Damien's earlier pipeline and still use per-episode folders and flat S2026Exx Title.* files.
3. Login, reset and connections
- There's no default login: a fresh install sends its first visitor to a create-your-login page. The published instructions say to finish that before exposing the app.
- Lost-password recovery:
YTP_RESET_PASSWORD=…indata/.env(here:/home/plex/yt-plex/data/.env) resets the password on the next start. It's applied once per value, so a forgotten line can't keep resetting it. I tested this end to end on a preview copy. - Connections auto-test on load and show plain-language errors ("Nothing is answering at … — is Sonarr running?"). Stored keys stay out of the page until the eye button fetches one.
- The same-machine Plex fallback is spelled out on the page: with the Plex fields blank, yt-plex uses
127.0.0.1:32400and the token fromPreferences.xml. The "192.168.1.10" Damien saw earlier was just my example placeholder text.
4. Published at skyhouse.dev/yt-plex/
Action: I published /home/plex/www/yt-plex/, served by the existing skyhouse.dev proxy host (root /var/www/html = /home/plex/www), in the same layout as span-kit: an index.html with install steps, yt-plex-src.tar.gz (1 MB), yt-plex-image.tar.gz (284 MB, the prebuilt image) and SHA256SUMS. Before publishing I checked that neither bundle contains a database, session key, .env or password, and that the code has no hardcoded IPs, media paths, usernames, domain or show list. I then downloaded the source bundle back through the public URL and verified its checksum, and started the published image fresh to confirm it reaches the setup page cleanly.
To publish an update: rebuild both bundles from /home/plex/yt-plex, regenerate SHA256SUMS, and update the checksums and date in index.html.
Net effect: one less thing to configure (Plex decides), TV filed the way Plex expects, and a version anyone can download and run.
← Back to Admin Hub