Categories
How To Plex

How to set up fully dynamic IPv6 remote access with Plex

Plex’s remote access feature is what turns your home media server into a true Netflix alternative – accessible from any device, anywhere. It does, however, only support IPv4. Users have been asking for IPv6 remote access for years now, but nothing has changed (yet). This means that users who’s internet connection is IPv6 only (such as Dual-Stack Lite customers) cannot use the remote access feature. Not without relying on third party solutions or clumsy workarounds at least.

Finding a workaround

A friend of mine recently ran into this issue when he tried to set up remote access for his Plex Media Server. He happens to be a Dual-Stack/DS Lite customer, so he only had IPv6 to work with. We found some solutions that rely on third parties to proxy incoming connections. The proxy offers both IPv4 and IPv6 connectivity and then, well, proxies to the actual server via IPv6 only. Those solutions, however, either result in additional costs and/or significant setup and maintenance overhead. Over on reddit, Pikey18 had posted a more promising workaround.

I found a workaround that doesn’t require a custom domain or SSL cert. Not sure if it was somewhere in the thread I just found it by guessing URL’s.


Under Custom server access URLs enter the IPv6 address in the format below:
https://xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx.serverid.plex.direct:32400
Note all parts must be entered (cannot use :: abbreviation).

Excerpt from Pikey18‘s post

We tested this workaround on my friend’s Plex server and IPv6 remote access was working right away. No proxy, no custom SSL certificate, minimal setup and maintenance. This workaround does, however, require you to manually update the config every time the server’s IPv6 address changes. Your ISP will usually assign you a new block of IPv6 addresses every time your router re-connects to the ISP’s infrastructure. Your Plex server will then automatically get a new IPv6 address from the newly assigned block. You then need to somehow update the custom access URL accordingly.

Adding DynDNS-like behavior

We wanted to avoid having to manually change the config over and over again. So, we mimicked DynDNS’s behavior in order to automate the config update. I wrote a DynDNS-like bash script that we set up to run every 5 minutes. The script retrieves the IPv6 address of a specified interface and checks whether that address matches the one in the Plex config. If the addresses don’t match, the script will update the config and restart the Plex service.

You can find the bash script over on GitHub. I am planning to add step-by-step documentation on how to set it up on the most popular, linux-based Plex Media Server host types. I might also add a Powershell version of the script if I can find the time.