TL;DR - don't do this. Plex on Cloudflare is a bad idea. Read my last notes. Get the Plex Remote Watch Pass instead.
So, regular Cloudflare DNS is not the answer here. Your homelab is almost always natted. As in, there's a public IP assigned to your home, but your internal network (192.168..) is... internal. Cloudflare doesn't know of it.
One solution is to expose a port on your router. That would mean that if you go to plex.mydomain.xyz, Cloudflare DNS will send it to your home's public IP and your router will send it to your internal computer based on that port request. This is NOT recommended. For one, your home's public IP can change at any time. It's your ISP's choice what IP they want to assign to you. They can and will change it when they want to. Second, this opens up your internal network to a barrage of attacks.
Seriously, don't do this.
A separate alternative is to use something like DynDNS (only if your router supports it). Then folks will go to yourplex.dyndns.io (or something) and that will send them to your router's public IP, no matter how many times it changes. But if you want to use plex.mydomain.xyz then DynDNS charges you money and, afaik, it's expensive. So no real point.
The better alternative is Cloudflared and Cloudflare Tunnels. This sits under https://one.dash.cloudflare.com/ → Networks → Tunnels.
Hit "Create a Tunnel" and select Cloudflared. Give it a name. Let's call it "homeserver" (it doesn't matter).
Once it's created, click on the name and click Edit. (or maybe the instructions vary if you're running it the first time).
Select Docker, and it'll give you instructions to run cloudflared as a docker container. The command will look like -
docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token CLOUDFLARE_ASSIGNED_TOKEN
Then, you'll have a tunnel. Once you have it up and running, go to Public Hostnames under the same "homeserver" tunnel edit option.
Add a Public hostname. Subdomain would be plex and domain would be mydomain.xyz (from the dropdown). No path.
For the "service" - type is HTTP mostly (unless you're running SSL inside your home). And the URL is the internal IP address and port for you. So for Plex it'll be
192.168.x.y:32400 (internal IP of the computer running Plex)
Once it's saved and Cloudflare has propagated the change (usually a few seconds), you can go to plex.mydomain.xyz and it'll show your application 🙂
What's going on here?
Cloudflare's Tunnel solution sidesteps the Cloudflare DNS feature. You still need your domain attached to your Cloudflare account. Cloudflare gets the request, realizes it's a Tunnel request, finds the cloudflared container which you're running inside your network, establishes a secure connection all the way to it. From there, the connection is inside your home, from your cloudflared docker container to your Plex installation and back.
NOTE: Once you do this, everyone who can go to plex.mydomain.xyz (basically the entire internet) will be able to see your Plex setup. Make sure to include strong login credentials. If you do not have any login credentials, you can easily end up with complete strangers streaming your Plex library.
ALSO: This is against Cloudflare TOS. If you're just using it once in a while, you might get away with it. But if not, Cloudflare will find out and boot your domain and might even close your account.
So...
If you are building this for friends and family, get the Plex Remote Watch Pass. It's $20/year and one possible way for you to give Plex access to people. In this method, you do not need to use cloudflare tunnels or expose a port. Everyone creates a free account on Plex (or you create one account for everyone, and they create their own profiles, whatever) and you grant them access to your libraries. Then they go to app.plex.tv instead of plex.mydomain.xyz, login, and get to your content.
Last Note: I use cloudflare tunnels a LOT. I use it for everything from RSS feeds to Calibre Web. All of my usecases are low traffic scenarios. Cloudflare is chill with those. Video streaming through their network is a whole different ballgame. Do NOT risk it.
Showing your ID at the store and sending a copy of your ID to an entity that will most likely not have the best cybersecurity are very different things.
Sure, many people are concerned about what you mentioned. But plenty of them are concerned that the idea that you have to give personally identifiable information to these companies is what’s the worst thing about these laws.
I bought a miniPC from AliExpress last year expecting 8GB RAM and Intel N100. The vendor sent an Intel N5095 with 4 GB RAM. I clawed most of my money back, but kept the machine for experimentation. Upped the RAM with the money I got back.
Alpine seems to work best for that machine. Though, I'm tempted to just put Debian on there so I can make docker and portainer agent work on it easily.
Didn’t it happen that people in LA started calling the cops one time during the pandemic because they saw the Milky Way for the first time in their lives?
Oh, you mean e.g. always using the tailscale IP? Sure, I can do that. But it sure would be a pain since at home I use the .local domain very comfortably...
pretty cheap to get a domain name through Cloudflare too - nine bucks a year for a .com , I think? Just get something completely personal or completely random! :D
They even have a way to get emails routed to your general inbox. It's fugly, but it works!
TL;DR - don't do this. Plex on Cloudflare is a bad idea. Read my last notes. Get the Plex Remote Watch Pass instead.
So, regular Cloudflare DNS is not the answer here. Your homelab is almost always natted. As in, there's a public IP assigned to your home, but your internal network (192.168..) is... internal. Cloudflare doesn't know of it.
One solution is to expose a port on your router. That would mean that if you go to plex.mydomain.xyz, Cloudflare DNS will send it to your home's public IP and your router will send it to your internal computer based on that port request. This is NOT recommended. For one, your home's public IP can change at any time. It's your ISP's choice what IP they want to assign to you. They can and will change it when they want to. Second, this opens up your internal network to a barrage of attacks.
Seriously, don't do this.
A separate alternative is to use something like DynDNS (only if your router supports it). Then folks will go to yourplex.dyndns.io (or something) and that will send them to your router's public IP, no matter how many times it changes. But if you want to use plex.mydomain.xyz then DynDNS charges you money and, afaik, it's expensive. So no real point.
The better alternative is Cloudflared and Cloudflare Tunnels. This sits under https://one.dash.cloudflare.com/ → Networks → Tunnels.
Hit "Create a Tunnel" and select Cloudflared. Give it a name. Let's call it "homeserver" (it doesn't matter).
Once it's created, click on the name and click Edit. (or maybe the instructions vary if you're running it the first time). Select Docker, and it'll give you instructions to run cloudflared as a docker container. The command will look like -
docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token CLOUDFLARE_ASSIGNED_TOKENThen, you'll have a tunnel. Once you have it up and running, go to Public Hostnames under the same "homeserver" tunnel edit option.
Add a Public hostname. Subdomain would be
plexand domain would bemydomain.xyz(from the dropdown). No path.For the "service" - type is HTTP mostly (unless you're running SSL inside your home). And the URL is the internal IP address and port for you. So for Plex it'll be
192.168.x.y:32400 (internal IP of the computer running Plex)
Once it's saved and Cloudflare has propagated the change (usually a few seconds), you can go to
plex.mydomain.xyzand it'll show your application 🙂What's going on here? Cloudflare's Tunnel solution sidesteps the Cloudflare DNS feature. You still need your domain attached to your Cloudflare account. Cloudflare gets the request, realizes it's a Tunnel request, finds the cloudflared container which you're running inside your network, establishes a secure connection all the way to it. From there, the connection is inside your home, from your cloudflared docker container to your Plex installation and back.
NOTE: Once you do this, everyone who can go to
plex.mydomain.xyz(basically the entire internet) will be able to see your Plex setup. Make sure to include strong login credentials. If you do not have any login credentials, you can easily end up with complete strangers streaming your Plex library.ALSO: This is against Cloudflare TOS. If you're just using it once in a while, you might get away with it. But if not, Cloudflare will find out and boot your domain and might even close your account.
So... If you are building this for friends and family, get the Plex Remote Watch Pass. It's $20/year and one possible way for you to give Plex access to people. In this method, you do not need to use cloudflare tunnels or expose a port. Everyone creates a free account on Plex (or you create one account for everyone, and they create their own profiles, whatever) and you grant them access to your libraries. Then they go to app.plex.tv instead of
plex.mydomain.xyz, login, and get to your content.Last Note: I use cloudflare tunnels a LOT. I use it for everything from RSS feeds to Calibre Web. All of my usecases are low traffic scenarios. Cloudflare is chill with those. Video streaming through their network is a whole different ballgame. Do NOT risk it.
This took me way too long to write. Cheers!