TC Plex works; Docker Plex doesn't

I probably need to head over to the Plex forums, but thought I’d check here first, as this is about the last major issue preventing my upgrading my main NAS from 24.04 (which, iX’ words notwithstanding, will not be supported for at least a year after 24.10’s release–at least not with the migration of apps)…

Like many users, I’ve been running Plex on my NAS. I have the last TrueCharts version of Plex installed under 24.04 (1.40.2.8395-c67dce28e), and while it’s been having some trouble in recent months, it’s able to read and see my entire library of Mystery Science Theater 3000, all 13 seasons plus specials (over 400 episodes in total). A Docker installation of Plex (1.41.4.9463-630c9f557) on the same system (under Dockge in a Jailmaker sandbox), viewing exactly the same data, sees four: Season 2, episodes 1, 3, 5, and 6.

Both installations are running as user 568/group 568. It’s literally the same data, on the same pool.

Here’s the XML from “Get info” on one of the episodes that shows under Docker:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<MediaContainer size="1" allowSync="1" identifier="com.plexapp.plugins.library" librarySectionID="2" librarySectionTitle="TV Shows" librarySectionUUID="0583e5ec-8963-44f2-81cd-df548ce48f87" mediaTagPrefix="/system/bundle/media/flags/" mediaTagVersion="1738863612">
<Video ratingKey="18516" key="/library/metadata/18516" parentRatingKey="18515" grandparentRatingKey="18514" guid="plex://episode/5d9c134b2192ba001f38e6d0" parentGuid="plex://season/602e68f033eb76002d61bcd1" grandparentGuid="plex://show/5d9c0871705e7a001e6dd15f" grandparentSlug="mystery-science-theater-3000" type="episode" title="Rocketship X-M" grandparentKey="/library/metadata/18514" parentKey="/library/metadata/18515" librarySectionTitle="TV Shows" librarySectionID="2" librarySectionKey="/library/sections/2" grandparentTitle="Mystery Science Theater 3000" parentTitle="Season 2" contentRating="TV-PG" summary="In the theater, the crew watches as an expedition to the Moon goes off course to Mars and a civilization decimated by atomic war is discovered in "Rocketship X-M" (1950). Meanwhile, on the SOL, the newly designed bridge is revealed as Joel is working on his robot buddies. Crow has a toothache and Tom's voice is undergoing renovation." index="1" parentIndex="2" audienceRating="6.7" year="1990" thumb="/library/metadata/18516/thumb/1740615319" art="/library/metadata/18514/art/1392120107" parentThumb="/library/metadata/18515/thumb/1392120107" grandparentThumb="/library/metadata/18514/thumb/1392120107" grandparentArt="/library/metadata/18514/art/1392120107" grandparentTheme="/library/metadata/18514/theme/1392120107" duration="5864384" originallyAvailableAt="1990-09-22" addedAt="1392103917" updatedAt="1740615319" audienceRatingImage="themoviedb://image.rating">
<Media id="24119" duration="5864384" bitrate="1013" width="480" height="360" aspectRatio="1.33" audioChannels="2" audioCodec="mp3" videoCodec="mpeg4" videoResolution="sd" container="avi" videoFrameRate="NTSC" videoProfile="advanced simple" hasVoiceActivity="0">
<Part accessible="1" exists="1" id="24126" key="/library/parts/24126/1392103917/file.avi" duration="5864384" file="/mnt/video/TV/Mystery Science Theater 3000/Season 2/Mystery Science Theater 3000 - S02E01 - Rocketship.X-M/MST3K-S02E01-Rocketship.X-M.avi" size="742708166" container="avi" videoProfile="advanced simple">
<Stream id="67884" streamType="1" codec="mpeg4" index="0" bitrate="873" bitDepth="8" chromaLocation="left" chromaSubsampling="4:2:0" codecID="XVID" codedHeight="360" codedWidth="480" frameRate="29.970" height="360" level="5" profile="advanced simple" refFrames="1" width="480" displayTitle="SD" extendedDisplayTitle="SD (MPEG4)"> </Stream>
<Stream id="67885" streamType="2" selected="1" codec="mp3" index="1" channels="2" bitrate="128" audioChannelLayout="stereo" samplingRate="44100" streamIdentifier="1" displayTitle="Unknown (MP3 Stereo)" extendedDisplayTitle="Unknown (MP3 Stereo)"> </Stream>
</Part>
</Media>
<Image alt="Rocketship X-M" type="coverPoster" url="/library/metadata/18515/thumb/1392120107"/>
<Image alt="Rocketship X-M" type="snapshot" url="/library/metadata/18516/thumb/1740615319"/>
<Image alt="Rocketship X-M" type="background" url="/library/metadata/18514/art/1392120107"/>
<UltraBlurColors topLeft="041730" topRight="0b2b52" bottomRight="155cae" bottomLeft="114c93"/>
<Guid id="imdb://tt0655445"/>
<Guid id="tmdb://132198"/>
<Guid id="tvdb://155367"/>
<Rating image="imdb://image.rating" value="7.4" type="audience"/>
<Rating image="themoviedb://image.rating" value="6.7" type="audience"/>
<Director id="20468" filter="director=20468" tag="Jim Mallon" tagKey="5d77682c999c64001ec2d955" thumb="https://metadata-static.plex.tv/d/people/d8044600fcfe314d95e3f72086f0b179.jpg"/>
<Writer id="131" filter="writer=131" tag="Joel Hodgson" tagKey="5d7768378a7581001f12d96d" thumb="https://metadata-static.plex.tv/5/people/5ac3a072a68ce53ff990c37829c74aac.jpg"/>
<Role id="132" filter="actor=132" tag="Joel Hodgson" tagKey="5d7768378a7581001f12d96d" role="Joel Robinson" thumb="https://metadata-static.plex.tv/5/people/5ac3a072a68ce53ff990c37829c74aac.jpg"/>
<Role id="2599" filter="actor=2599" tag="Kevin Murphy" tagKey="5d77682c999c64001ec2d958" role="Tom Servo (voice)" thumb="https://metadata-static.plex.tv/people/5d77682c999c64001ec2d958.jpg"/>
<Role id="133" filter="actor=133" tag="Trace Beaulieu" tagKey="5d77682c999c64001ec2d957" role="Crow T. Robot (voice) / Dr. Clayton Forrester" thumb="https://metadata-static.plex.tv/d/people/d3ca0337477fd5ad3534305012afaf04.jpg"/>
<Role id="134" filter="actor=134" tag="Frank Conniff" tagKey="5d776863103a2d001f5700f6" role="TV's Frank" thumb="https://metadata-static.plex.tv/people/5d776863103a2d001f5700f6.jpg"/>
<Role id="20472" filter="actor=20472" tag="Jim Mallon" tagKey="5d77682c999c64001ec2d955" role="Gypsy (voice)" thumb="https://metadata-static.plex.tv/d/people/d8044600fcfe314d95e3f72086f0b179.jpg"/>
<Role id="2597" filter="actor=2597" tag="Michael J. Nelson" tagKey="5d77682c999c64001ec2d956" role="Gamera" thumb="https://metadata-static.plex.tv/people/5d77682c999c64001ec2d956.jpg"/>
<Producer id="20474" filter="producer=20474" tag="Jim Mallon" tagKey="5d77682c999c64001ec2d955" thumb="https://metadata-static.plex.tv/d/people/d8044600fcfe314d95e3f72086f0b179.jpg"/>
<Producer id="101015" filter="producer=101015" tag="Kevin Murphy" tagKey="5d77682c999c64001ec2d958" thumb="https://metadata-static.plex.tv/people/5d77682c999c64001ec2d958.jpg"/>
<Marker final="1" id="29809" type="credits" startTimeOffset="5803945" endTimeOffset="5864384">
<Attributes id="29809" version="4"/>
</Marker>
<Marker id="29809" type="intro" startTimeOffset="2228" endTimeOffset="91949">
<Attributes id="29809"/>
</Marker>
<Extras size="0"> </Extras>
<Related> </Related>
</Video>
</MediaContainer>

…and from one that isn’t seen:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<MediaContainer size="1" allowSync="1" identifier="com.plexapp.plugins.library" librarySectionID="2" librarySectionTitle="TV Shows" librarySectionUUID="37bd4ec4-f96f-40d8-acd1-910584f419a2" mediaTagPrefix="/system/bundle/media/flags/" mediaTagVersion="1713446878">
<Video ratingKey="16604" key="/library/metadata/16604" parentRatingKey="16603" grandparentRatingKey="16463" guid="plex://episode/5d9c134b2192ba001f38e6d3" parentGuid="plex://season/602e68f033eb76002d61bcd1" grandparentGuid="plex://show/5d9c0871705e7a001e6dd15f" grandparentSlug="mystery-science-theater-3000" type="episode" title="The Sidehackers" titleSort="Sidehackers" grandparentKey="/library/metadata/16463" parentKey="/library/metadata/16603" librarySectionTitle="TV Shows" librarySectionID="2" librarySectionKey="/library/sections/2" grandparentTitle="Mystery Science Theater 3000" parentTitle="Season 2" contentRating="TV-14" summary="Movie Plot: A couple of sidehacking gangs get into a minor war of vengeance against each other. Intro: Joel tries to get the 'bots to go to bed. Segment One: Joel invents a Slinky named Getchen that talks and does tricks. In Deep 13, Dr. Forrester creates the Slinky tube which can let him be in two places at once. Segment Two: The crew discusses the requirements necessary to be a sidehacker. Segment Three: Joel instructs us on the terminology of sidehacking. Segment Four: Joel makes the 'bots Rommel hats. Segment Five: Joel sings "Love Pads the Film"." index="2" parentIndex="2" audienceRating="7.5" thumb="/library/metadata/16604/thumb/1672599547" art="/library/metadata/16463/art/1740383782" parentThumb="/library/metadata/16603/thumb/1672599547" grandparentThumb="/library/metadata/16463/thumb/1740383782" grandparentArt="/library/metadata/16463/art/1740383782" grandparentTheme="/library/metadata/16463/theme/1740383782" duration="6054165" originallyAvailableAt="1990-09-29" addedAt="1642247883" updatedAt="1672599547" audienceRatingImage="themoviedb://image.rating">
<Media id="21947" duration="6054165" bitrate="932" width="640" height="432" aspectRatio="1.33" audioChannels="2" audioCodec="aac" videoCodec="h264" videoResolution="sd" container="mp4" videoFrameRate="NTSC" optimizedForStreaming="1" audioProfile="lc" has64bitOffsets="0" videoProfile="high">
<Part accessible="1" exists="1" id="21954" key="/library/parts/21954/1642247883/file.mp4" duration="6054165" file="/mnt/video/tv/Mystery Science Theater 3000/Season 2/Mystery Science Theater 3000 - S02E02 - The Sidehackers 540p.mp4" size="709127657" audioProfile="lc" container="mp4" deepAnalysisVersion="6" has64bitOffsets="0" optimizedForStreaming="1" requiredBandwidths="1162,1068,1068,1068,1068,1068,1068,1068" videoProfile="high">
<Stream id="58197" streamType="1" default="1" codec="h264" index="0" bitrate="795" bitDepth="8" chromaLocation="left" chromaSubsampling="4:2:0" codedHeight="432" codedWidth="640" colorPrimaries="smpte170m" colorRange="tv" colorSpace="smpte170m" colorTrc="smpte170m" frameRate="29.970" hasScalingMatrix="0" height="432" level="31" profile="high" refFrames="8" requiredBandwidths="1025,936,936,936,936,936,936,936" scanType="progressive" streamIdentifier="1" width="640" displayTitle="SD (H.264)" extendedDisplayTitle="SD (H.264)"> </Stream>
<Stream id="58198" streamType="2" selected="1" default="1" codec="aac" index="1" channels="2" bitrate="137" profile="lc" requiredBandwidths="138,138,138,138,138,138,138,138" samplingRate="48000" streamIdentifier="2" displayTitle="Unknown (AAC Stereo)" extendedDisplayTitle="Unknown (AAC Stereo)"> </Stream>
</Part>
</Media>
<Guid id="imdb://tt0655472"/>
<Guid id="tmdb://132199"/>
<Guid id="tvdb://155368"/>
<Rating image="themoviedb://image.rating" value="7.5" type="audience"/>
<Director id="18074" filter="director=18074" tag="Jim Mallon" tagKey="5d77682c999c64001ec2d955" thumb="https://metadata-static.plex.tv/d/people/d8044600fcfe314d95e3f72086f0b179.jpg"/>
<Role id="2475" filter="actor=2475" tag="Michael J. Nelson" tagKey="5d77682c999c64001ec2d956" role="Isaac Asimov's Literary Doomsday Device" thumb="https://metadata-static.plex.tv/people/5d77682c999c64001ec2d956.jpg"/>
<Role id="2474" filter="actor=2474" tag="Kevin Murphy" tagKey="5d77682c999c64001ec2d958" role="Callipygeas" thumb="https://metadata-static.plex.tv/people/5d77682c999c64001ec2d958.jpg"/>
<Role id="634" filter="actor=634" tag="Frank Conniff" tagKey="5d776863103a2d001f5700f6" role="" thumb="https://metadata-static.plex.tv/people/5d776863103a2d001f5700f6.jpg"/>
<Role id="633" filter="actor=633" tag="Trace Beaulieu" tagKey="5d77682c999c64001ec2d957" role="" thumb="https://metadata-static.plex.tv/d/people/d3ca0337477fd5ad3534305012afaf04.jpg"/>
<Role id="83048" filter="actor=83048" tag="Amy Kane" tagKey="5e16356e4c78f7003e7f4774" role=""/>
<Marker final="1" id="140946" type="credits" startTimeOffset="5966748" endTimeOffset="6054165">
<Attributes id="140946" version="4"/>
</Marker>
<Marker id="140946" type="intro" startTimeOffset="1361" endTimeOffset="92073">
<Attributes id="140946"/>
</Marker>
<Extras size="0"> </Extras>
<Related> </Related>
</Video>
</MediaContainer>

Not sure where else I should be looking–thoughts?

The one time I had similar-ish issue, but in Jellyfin, it came down to the naming of certain files and folders in the media archive. Jellyfin uses (among other things) certain keywords in file and folder names to help determine how to group files that belong together, be that episodes in a season or longer form media like a movie divided into multiple CD sized files. The word “scene” is also handled in a special way in Jellyfin. Perhaps Plex has similar features?

This of course assumes you have already checked and verified that there are no funny characters in the file names and that you have ruled out a permissions issue.

Is there a Plex log that shows something interesting when you ask Plex to scan your media?

There are lots of Plex logs, but none of them contain any mention of one of the missing episode names:

admin@nas[...cation Support/Plex Media Server/Logs]$ grep -i hellcats *.log
admin@nas[...cation Support/Plex Media Server/Logs]$ grep -i sidehackers *.log
admin@nas[...cation Support/Plex Media Server/Logs]$ grep -i catalina *.log
Plex Media Server.4.log:Mar 24, 2025 02:13:26.322 [140621106674488] DEBUG - IntroDetector: Initializing for "/mnt/video/TV/Mystery Science Theater 3000/Season 0/Mystery Science Theater 3000 - S0E654 - #MST3KMindlessSummer Livestream IV - CATALINA CAPER.mp4" (10725)
Plex Media Server.4.log:Mar 24, 2025 02:22:28.547 [140621106674488] DEBUG - Updating part with ID=16324 [/mnt/video/TV/Mystery Science Theater 3000/Season 0/Mystery Science Theater 3000 - S0E654 - #MST3KMindlessSummer Livestream IV - CATALINA CAPER.mp4]
admin@nas[...cation Support/Plex Media Server/Logs]$

This last result is an interesting one as it shows it belongs to “Season 0”, which is generally reserved for special episodes–but this server doesn’t show Season 0 as being present at all.

A curious finding is that the four Season 2 episodes that are recognized in the Docker installation app have the following directory structure (inside the Season 2 directory):

admin@nas[...Mystery Science Theater 3000/Season 2]$ ls -lRh 'Mystery Science Theater 3000 - S02E01 - Rocketship.X-M'
'Mystery Science Theater 3000 - S02E01 - Rocketship.X-M':
total 705M
-rwxrwxr-- 1 apps apps 709M Feb 11  2014  MST3K-S02E01-Rocketship.X-M.avi
-rwxrwxr-- 1 apps apps 7.1K Feb 28  2020  MST3K-S02E01-Rocketship.X-M.sfv
drwxr-xr-x 3 apps apps    3 Aug 19  2024 'Plex Versions'

'Mystery Science Theater 3000 - S02E01 - Rocketship.X-M/Plex Versions':
total 512
drwxr-xr-x 3 apps apps 3 Aug 19  2024 'Original Quality'

'Mystery Science Theater 3000 - S02E01 - Rocketship.X-M/Plex Versions/Original Quality':
total 512
drwxr-xr-x 2 apps apps 3 Aug 19  2024 'Mystery Science Theater 3000'

'Mystery Science Theater 3000 - S02E01 - Rocketship.X-M/Plex Versions/Original Quality/Mystery Science Theater 3000':
total 859M
-rw-r--r-- 1 apps apps 861M Aug 19  2024 S02E01.mp4

As far as I can see, they’re the only four episodes that have this directory structure, and I’m pretty sure I didn’t create it.

That is peculiar, I don’t know if Plex can reorganise your media or if it would conceivably have done what you found, I know Jellyfin can to some degree but I didn’t trust that so I’ve only ever given apps read access.

But as the offical Plex docs say, naming is by far the most common reason for issues like this:

Perhaps something changed in how Plex interprets file and folder names in a way that your media was 24.04 Plex friendly, but not 24.10 Plex.

Sure, and it makes sense that naming would be critical. But if anything, it’s the files that don’t show up that are more consistent with their naming guidelines.

Of course, I could always move to Jellyfin instead–it’s tempting, especially as Plex continues to push streaming features I neither need nor want. I’ve already spun it up alongside Plex, and it sees all the files just fine. But Plex’ remote access is certainly a handy feature, and I’d like to continue to use that lifetime PlexPass subscription.

You could try making a copy of one of the non-working seasons and experiment with alternative naming schemes.

1 Like

Thanks for posting that, I may not be a Plex user, but I find this type of issue interesting and will be following along in the Plex Forum thread.

The Plex forum apparently has some filters configured so that phrases like “server logs” and “plex dance” automatically insert links to support articles–kind of cool. But apparently there was a problem with the media files.

For context, I’ve encountered this problem with at least four Plex installations against this data: under Dockge on a remote LXC with data mounted via NFS, under Plex installed natively in a LXC with data mounted via NFS, and using Plex via Compose on Dockge in sandboxes on two separate TrueNAS installations. All of them gave exactly the same result: they recognize the same four episodes in Season 2, and nothing else.

Part of the “Plex dance” recommended in the other thread was to copy all the data out of the library, scan it, copy data back in, and scan it again. On the “copy data back in” step, I left two folders and a handful of files, none of which completely met the naming conventions, behind (they’ll probably get renamed and go into Season 0 in due course)–and that seems to have done the trick. That’s surprising to me; I wouldn’t have expected the presence of some files Plex can’t parse to break parsing for hundreds of other files that it otherwise can, but that certainly seems to be what happened.

In any event, one of the previously-missing episodes is playing right now.

1 Like

Plex itself has a backup function, maybe it would have been easier to backup the config/data, then restore to the docker version?

I did the brute force method of shelling into the TC container, copied the entire plex application folder to my tank, then deployed the iX official helm app then copied things back.

It might have been. I wasn’t super-concerned about keeping the metadata and such, but of course I didn’t expect this kind of a problem.

In retrospect, though, since those particular files appear to have been causing the problem, they weren’t present when I’d initially scanned the library on the first installation. Adding them later didn’t break things there, but since they were present for the initial scan on the new installation, they did. Still seems a little fragile on Plex’s part, but at least it seems to be sorted.

Plex itself is a pretty bug filled mess, so who knows! You’d think that the same storage path, same config & same base image would be a simple move. I had a couple permission issues, but I kind of expected that. Was a quick fix. Still have to get around to doing plex/arrs with my own compose someday. But if it’s working, not sure I want to spend the time to migrate! :stuck_out_tongue:

I think there is value to that. While it takes time to do, OTOH, it breaks less if ever with your own compose files.

A few benefits I see:

  • I don’t rely on the iX apps catalog
  • I don’t have to deal with, um, curious design decisions made in those apps (which are mostly just odd port choices)
  • I can customize them in ways I can’t with the iX apps (e.g., integrating with Traefik and/or Homepage by way of labels, or Gluetun)
  • All the compose files are automatically backed up to a Forgejo repo when any changes are made, making it trivial to migrate them to a different Docker platform if/when necessary.
1 Like

Indeed, it sounds like they should find a different way to sanitise their data input so that it doesn’t break this way. Or at the very least explain that there was a problem and point the user towards the specific naming/organisation issue.

Another benefit is if you want/need to add more stuff to the container. With custom yaml/Dockerfile, you can add tools like ping, dig, other utilities that might be useful to you in said container. In my Nextcloud, for example, I add the mariadb client since I like to use that for Nextcloud storage.