Plex Media Player packages for Linux

After some more investigating I think this could be a plex issue, this looks like a related thread: PMS suddenly shows issues with remote access 9/30/2021 10AM EST - #3 by VirulentPip.

In my setup, PMP doesn’t seem to use a *.plex.direct address to access media on the server externally. It’s aware of the *.plex.direct address at least, according to the logs, and seems to use that to load the UI images/settings etc. securely. No idea why it isn’t using that address for media playback though, instead it opts to use the IP address (unsuccessful - invalid cert).

This behavior does seem to be intermittent - about 9/10 it doesn’t playback media for me.

Plex Web is able to playback media with no issues (but with all the known limitations), and Plex for Windows also was able to playback media.

Went ahead and updated the plex server to latest just in-case, but that’s made no difference. Worth noting the server settings says ‘not available outside your network’, despite me successfully able to connect to it directly using the *.plex.direct address shown in the logs, and double-checking my port forwarding config (even though it hasn’t been touched in months).

Attached some PMP log below

Logs

Detects *.plex.direct address just fine

2021-10-01 08:02:09 [ INFO  ] JS: %c[Servers] Initializing... 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Servers] Initialize server with token, REDACTED_SERVERNAME, REDACTED_TOKEN, https://REDACTED_REMOTE_IP.REDACTED_ADDR.plex.direct:32400 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Servers] Initialize server without token, [Loopback], http://127.0.0.1:32400 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Servers] Waiting for initial servers = [Loopback], plex.tv 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Primary Server] Waiting to set the primary server 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Primary Server] Waiting for the last primary server, REDACTED_TOKEN, to connect 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Commands] Executing testServerConnection 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Commands] Executing testServerConnection 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Commands] Executing testServerConnection 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Companion] No companion found 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Servers] Finished initialization 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Providers] Initializing... 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Providers] Finished initialization 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Connections] Testing connection for REDACTED_SERVERNAME at https://REDACTED_REMOTE_IP.REDACTED_ADDR.plex.direct:32400/media/providers 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Connections] Testing connection for plex.tv at https://plex.tv/monitoring/health 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Connections] Testing connection for [Loopback] at http://127.0.0.1:32400/media/providers 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Connections] Testing legacy connection for [Loopback] at http://127.0.0.1:32400 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Connections] [Loopback] is unavailable at http://127.0.0.1:32400/media/providers (Status 0) 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Connections] [Loopback] is unavailable at http://127.0.0.1:32400/media/providers (Status 0) 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Connections] All connections to [Loopback] failed 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Servers] Waiting for initial servers = plex.tv 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Connections] Retrying connection tests for [Loopback] in 2 seconds 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Companion] No companion found 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Connections] plex.tv connected at https://plex.tv/monitoring/health 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Connections] Active connection to plex.tv is https://plex.tv 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Connections] Active connection to REDACTED_SERVERNAME is https://REDACTED_REMOTE_IP.REDACTED_ADDR.plex.direct:32400 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Servers] Waiting for initial servers = plex.tv 
2021-10-01 08:02:09 [ INFO  ] JS: %c[MediaServerEventManager] Opening server event connection to REDACTED_SERVERNAME at wss://REDACTED_REMOTE_IP.REDACTED_ADDR.plex.direct:32400/:/websockets/notifications?X-Plex-Token=xxxxxxxxxxxxxxxxxxxx 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Connections] Retrying server events connection for REDACTED_SERVERNAME in 2 seconds 
2021-10-01 08:02:09 [ INFO  ] JS: %c[Primary Server] REDACTED_SERVERNAME is now the primary server 
2021-10-01 08:02:09 [ INFO  ] JS: %c[User] userPromise succeeded 
2021-10-01 08:02:09 [ INFO  ] JS: %c[MediaServerEventManager] Opened server event connection to REDACTED_SERVERNAME at wss://REDACTED_REMOTE_IP.REDACTED_ADDR.plex.direct:32400/:/websockets/notifications?X-Plex-Token=xxxxxxxxxxxxxxxxxxxx 

Doesn’t seem to use the *.plex.direct address to connect to the server, the first thing it tries is the IP and fails (not secure/cert error)

2021-10-01 08:02:52 [ INFO  ] PlayerComponent.cpp @ 600 - cplayer: Playing: https://REDACTED_REMOTE_IP:32400/library/parts/9946/1628396831/file.flac?X-Plex-Session-Identifier=zpcil5va7jq7xjpb8famkz5i&X-Plex-Client-Identifier=REDACTED_CLIENT_ID&X-Plex-Device-Screen-Resolution=1280x739%2C1280x800&X-Plex-Version=4.29.2&X-Plex-Features=external-media&X-Plex-Client-Capabilities=protocols%3Dshoutcast%2Chttp-video%3BvideoDecoders%3Dh264%7Bprofile%3Ahigh%26resolution%3A2160%26level%3A52%7D%3BaudioDecoders%3Dmp3%2Caac%2Cdts%7Bbitrate%3A800000%26channels%3A2%7D%2Cac3%7Bbitrate%3A800000%26channels%3A2%7D&X-Plex-Product=Plex%20Media%20Player&X-Plex-Platform=Konvergo&X-Plex-Platform-Version=2.58.0.dev-ae73e074&X-Plex-Device=Linux&X-Plex-Device-Name=nmbp&X-Plex-Model=5.12&X-Plex-Token=xxxxxxxxxxxxxxxxxxxx&X-Plex-Language=en&Accept-Language=en 
2021-10-01 08:02:52 [ DEBUG ] PlayerComponent.cpp @ 598 - cplayer: Running hook: main/on_load 
2021-10-01 08:02:52 [ DEBUG ] PlayerComponent.cpp @ 598 - cplayer: Set property: ad="flac" -> 1 
2021-10-01 08:02:52 [ DEBUG ] PlayerComponent.cpp @ 598 - cplayer: Set property: vd="flac" -> 1 
2021-10-01 08:02:52 [ DEBUG ] PlayerComponent.cpp @ 598 - ffmpeg: Opening https://REDACTED_REMOTE_IP:32400/library/parts/9946/1628396831/file.flac?X-Plex-Session-Identifier=zpcil5va7jq7xjpb8famkz5i&X-Plex-Client-Identifier=REDACTED_CLIENT_ID&X-Plex-Device-Screen-Resolution=1280x739%2C1280x800&X-Plex-Version=4.29.2&X-Plex-Features=external-media&X-Plex-Client-Capabilities=protocols%3Dshoutcast%2Chttp-video%3BvideoDecoders%3Dh264%7Bprofile%3Ahigh%26resolution%3A2160%26level%3A52%7D%3BaudioDecoders%3Dmp3%2Caac%2Cdts%7Bbitrate%3A800000%26channels%3A2%7D%2Cac3%7Bbitrate%3A800000%26channels%3A2%7D&X-Plex-Product=Plex%20Media%20Player&X-Plex-Platform=Konvergo&X-Plex-Platform-Version=2.58.0.dev-ae73e074&X-Plex-Device=Linux&X-Plex-Device-Name=nmbp&X-Plex-Model=5.12&X-Plex-Token=xxxxxxxxxxxxxxxxxxxx&X-Plex-Language=en&Accept-Language=en 
2021-10-01 08:02:52 [ INFO  ] PlayerComponent.cpp @ 470 - Entering state: buffering 
2021-10-01 08:02:52 [ INFO  ] JS: %c[Player] Buffering detected by PMP 
2021-10-01 08:02:52 [ ERROR ] PlayerComponent.cpp @ 604 - ffmpeg: tls: Peer certificate failed verification 
2021-10-01 08:02:52 [ ERROR ] PlayerComponent.cpp @ 604 - stream: Failed to open https://REDACTED_REMOTE_IP:32400/library/parts/9946/1628396831/file.flac?X-Plex-Session-Identifier=zpcil5va7jq7xjpb8famkz5i&X-Plex-Client-Identifier=REDACTED_CLIENT_ID&X-Plex-Device-Screen-Resolution=1280x739%2C1280x800&X-Plex-Version=4.29.2&X-Plex-Features=external-media&X-Plex-Client-Capabilities=protocols%3Dshoutcast%2Chttp-video%3BvideoDecoders%3Dh264%7Bprofile%3Ahigh%26resolution%3A2160%26level%3A52%7D%3BaudioDecoders%3Dmp3%2Caac%2Cdts%7Bbitrate%3A800000%26channels%3A2%7D%2Cac3%7Bbitrate%3A800000%26channels%3A2%7D&X-Plex-Product=Plex%20Media%20Player&X-Plex-Platform=Konvergo&X-Plex-Platform-Version=2.58.0.dev-ae73e074&X-Plex-Device=Linux&X-Plex-Device-Name=nmbp&X-Plex-Model=5.12&X-Plex-Token=xxxxxxxxxxxxxxxxxxxx&X-Plex-Language=en&Accept-Language=en. 
2021-10-01 08:02:52 [ DEBUG ] PlayerComponent.cpp @ 598 - cplayer: Opening failed or was aborted: https://REDACTED_REMOTE_IP:32400/library/parts/9946/1628396831/file.flac?X-Plex-Session-Identifier=zpcil5va7jq7xjpb8famkz5i&X-Plex-Client-Identifier=REDACTED_CLIENT_ID&X-Plex-Device-Screen-Resolution=1280x739%2C1280x800&X-Plex-Version=4.29.2&X-Plex-Features=external-media&X-Plex-Client-Capabilities=protocols%3Dshoutcast%2Chttp-video%3BvideoDecoders%3Dh264%7Bprofile%3Ahigh%26resolution%3A2160%26level%3A52%7D%3BaudioDecoders%3Dmp3%2Caac%2Cdts%7Bbitrate%3A800000%26channels%3A2%7D%2Cac3%7Bbitrate%3A800000%26channels%3A2%7D&X-Plex-Product=Plex%20Media%20Player&X-Plex-Platform=Konvergo&X-Plex-Platform-Version=2.58.0.dev-ae73e074&X-Plex-Device=Linux&X-Plex-Device-Name=nmbp&X-Plex-Model=5.12&X-Plex-Token=xxxxxxxxxxxxxxxxxxxx&X-Plex-Language=en&Accept-Language=en 
2021-10-01 08:02:52 [ DEBUG ] PlayerComponent.cpp @ 598 - cplayer: finished playback, loading failed (reason 4)

EDIT:

Another possible theory - maybe an API change they’ve made for something else has unintentionally broke PMP? Important information about Plex for smart TVs after September 30, 2021.


EDIT 2:
Looks like I was wrong with both of the above, after I managed to dig up logs from 2020 on an older system and compare the two. I think this is indeed the Letsencrypt root cert issue, but it seems to only be affecting something related to PlayerComponent.cpp/cplayer/ffmpeg. The rest of the app seems to work just fine over HTTPS.

My limited knowledge here can only suggest this is might be caused by an older version of openssl being compiled in e.g. <= v1.0.2, which prefers expired certs over new ones.

The Appimage works perfectly fine, but will definitely miss the auto updates and nicer system integration offered by the Flatpak