This is my setup:
- Plex server is running inside a Docker container on my NUC, with all the required ports published using the default bridge network mode.
- Nginx is running on the NUC on port 443, and it’s configured to proxy requests to Plex.
- Router has a static public IP and a REDACTED_DOMAIN pointing to it. It’s configured to port forward traffic on 443 towards Nginx. My ISP does not do CGNAT.
- On the Plex server, Settings > General > Network > Custom server access URLs is set to “https://REDACTED_DOMAIN:443”, and Settings > Remote Access shows a green check mark, confirming that it’s indeed publicly accessible.
On my browser, if I go to “https://REDACTED_DOMAIN”, I’m able to access my libraries and play videos just fine regardless of whether I’m inside or outside my network. However, for the iOS app, it only works inside my network. Outside my network, the iOS app shows my libraries as offline. Taking a look at the iOS client logs, I can see:
2022/12/09 14:18:44.603 (123 MB) (1046229) 🔧 PMKNetworkTask.m:225 | Completed [403]: 26: Cloud (plex.tv): GET https://sonos.plex.tv/resources
2022/12/09 14:18:44.655 (123 MB) (1046228) ❌ PMKContainerResponseSerializer.m:56 | Assertion failure in -[PMKContainerResponseSerializer containerFromResponseObject:URL:], /Volumes/workspace/repository/PlexKit/PMKContainerResponseSerializer.m:56. Reason: 'Invalid parameter not satisfying: document'
2022/12/09 14:18:44.660 (123 MB) (1046228) ❌ PMKContainerResponseSerializer.m:62 | Failed to serialize container from object: The operation couldn’t be completed. (PlexMobile.(unknown context at $1060d6e30). XMLDetails.XMLError error 1.)
2022/12/09 14:18:44.660 (123 MB) (1046228) ❌ PMKConnectionManager.m:946 | Connection test to <PMKPlexServerConnection: 0x282d46440>[ REDACTED_DOMAIN:443 - plex,published,direct,verified ] for <PMKServer: 0x283cbcf30>[ REDACTED_PLEX_SERVER_NAME (REDACTED_PLEX_SERVER_ID) - server,standard,hasPresence (1.29.2.6364-6d72b0cf6) ] failed validation (reason=4)
2022/12/09 14:18:44.683 (123 MB) (506525) ➖ PMSourceManager.m:1285 | Persisting source manager data for account REDACTED_PLEX_ACCOUNT_ID
Why is this happening? What does failed validation (reason=4) mean?
Server Version#: 1.29.2.6364
Player Version#: 8.12.1