Plex remote access - low quality even with gigabit fiber
Hey all, I'm very new to self-hosting and have no background in anything computer-related. I'll explain in as much detail as I can. I'm running Plex on a Synology DS220+. I'm using the Plex app, i.e. not using Docker (see note below).
The issue: I can watch Plex on my local network in 4K, but outside my local network it barely makes it to 720p. I thought it was an issue with my upload speed, but I got gigabit last week and it hasn't fixed the issue. I have remote access enabled in Plex through a manually-specified port. The issue persists with my own account and any friends who have access to my library.
I appreciate any advice, links or questions you can offer!
NOTE: I understand the benefits of Docker and I promise to transition in the future. I spent many hours learning and troubleshooting, and it was even functional at times, but eventually I needed something that just worked.
EDIT: You all have been so helpful and supportive. Thanks for meeting me where I'm at and sharing some potential issues.
EDIT2: I found the culprit by accident. I had UPnP enabled on my router. I turned it off and my local speeds increased significantly, and my Plex library is available remotely. I don't know how or why UPnP is related, but that's what the solution was for me. Thanks again for all your input and support.
Even if the port is open, Plex can sometimes use the relay server. You might want to explicitly disable that.
Also, you can check if the video is being transcoded on-the-fly by going to quality settings and seeing if it's showing up as transcoded or directplay. Sometimes you might have to force the directplay on your client device (Playback might fail if your device doesn't support the specific format).
I highly recommend setting up Nginx Proxy Manager and using it as a reverse proxy.
I have lots of services, but using a reverse proxy means I only have to expose 2 ports (80 & 443) and then I can serve whatever I want, like Plex, over https without a relay.
I pay for one domain name in Cloudflare (e.g. awesomedomain.com), and have a single "A" record pointing to the public IP of my server, and a single "CNAME" record with a value of * that points to awesomedomain.com.
That way, any subdomain gets directed to the server, and then you setup Nginx Proxy Manager to listen for certain subdomains and where to proxy them. No need to manage any further DNS records in Cloudflare, and any changes made on the proxy don't need any wait time for DNS records to propagate.
Nginx Proxy Manager also handles automatic SSL certs through Let's Encrypt - I really can't recommend it enough.
You said you recently got a gigabit plan, but that's related to your home download speed. Check to see what your upload speed actually is. Depending on your ISP's plans, you might have a speedy download but a slow upload.
If you go to canyouseeme.org and test your Plex port does it show as open?
Your new ISP might have CG-NAT meaning you don't get your own IPv4 address and can't be connected to directly.
Also stream a movie from your phone while connected to cellular data and then check that stream on the Plex admin screen to see what it says. IIRC the Plex Relay is fixed at 1mbps
Remote access is enabled but whether I'm actually able to access the server or library remotely is intermittent. Plex says I may be double-natted but I was pretty sure I'm not. I'll have to investigate again.
Ah, Plex suggested I might be double-natted. Since fiber doesn't need a modem (from my understanding) I have: fiber cable to box, box Ethernet to router, router ethernet to NAS. Maybe it would be better if I did box directly to NAS? Or would that put it on a separate network? I'll look into your double-nat solution. Thank you.
You need to call your isp and request a static ip. Most probably they’ll say its extra but usually around $5. If they say they don’t give static ips to individuals you can request an ipv4 dynamic address and use a ddns. ipv6 only networks also result similarly to double nat
Unfortunately I'm using Nest WiFi and it doesn't have QoS settings. You're making me consider buying a new mesh router system because Nest also doesn't have manual band selection, which I need for some IoT devices.
I have the older "Google WiFi" mesh and I was able to install OpenWRT on them. You might want to see if that's an option for yours before spending money on a new system.
One thing I haven't seen called out that could be a contributing factor is the hardware capabilities of the playback device. Depending on the codecs used in your media, there may not be hardware accelerated decoding support if the playback device is a smartphone. This may cause the plex to decide to transcode your media into a format that is supported by your playback device.
Also, hardware accelerated transcoding is a subscription based feature. Without plex pass active, the transcode will be CPU based only. The dual core CPU will almost certainly not have enough oomph to transcode anything beyond 720p, but the CPU has Intel QSV support so plex should be smart enough to use that.
This is good to look into. I've tried remote streaming on several different devices. Before I bought the NAS I was sure it could handle a few streams, but maybe I was wrong.
I have a similar issue when I am visiting my parents. Despite having 30 mbps upload at my home, I cannot get anywhere near that when trying to access things from my parents house. Not just Plex either, I host a number of services. I've tested their wifi and download, and everything seems fine. I can also stream my Plex just fine from my friends places. I've chalked it up to poor (or throttled) peering between my parents ISP and my ISP. I've been meaning to test it through a VPN next time I go home.
Thanks for sharing your experience. I pay for a static IP through my VPN provider, and I've wondered if there would be a benefit to running my server through the static IP, then using the same IP to access the server remotely. (Not sure if I'm describing that correctly.)
As someone who tried to set up Intercontinental sharing with Plex, I found out two things that could be an issue. One would be the relay option. That's somewhere within your server. You might want to disable that. That should then allow you to directly connect to your home server.
And the second one was that the client device that I was using didn't really support the format that I want to look at and that ended up just making it so that the video was transcoded that is going to degrade your performance. If the second thing is happening, you might want to check your quality settings to see if you're using directplay. If not, Plex might transcode on the fly to a lower quality to mitigate buffering.