By exposed you basically mean that I can reach them using my browser? I can reach my homeassistant web ui on port 8123 but when I try to forward to that port with the servers IP I get a 400 Bad Request error. I’m not sure if this is caused by nginx being unable to forward or by homeassistant not accepting the connection somehow
Someone below mentioned adding some more IPs to the trusted_proxies list so I tried that as well without result. The IP I used for the reverse-proxy is the IP listed in portainer under the network for the proxy container. Just to reiterate, the container is running on a different device than homeassistant (technically same device but different VM but that shouldn’t make a difference).
<span style="color:#63a35c;">http</span><span style="color:#323232;">:
</span><span style="color:#323232;"> </span><span style="color:#63a35c;">use_x_forwarded_for</span><span style="color:#323232;">: </span><span style="color:#0086b3;">true
</span><span style="color:#323232;"> </span><span style="color:#63a35c;">trusted_proxies</span><span style="color:#323232;">:
</span><span style="color:#323232;"> - </span><span style="color:#0086b3;">192.168.208.2 </span><span style="font-style:italic;color:#969896;"># IP of reverse-proxy in its network
</span><span style="color:#323232;"> - </span><span style="color:#183691;">192.168.208.0/20 </span><span style="font-style:italic;color:#969896;"># Subnet of proxy docker network
</span><span style="color:#323232;"> - </span><span style="color:#0086b3;">192.168.1.103 </span><span style="font-style:italic;color:#969896;"># HA IP
</span>
My NPM window looks the same as yours. Im not sure mate, I would try disabling firewall just to see is that the problem. Im not expert in that area and nothing else comes to my mind sorry. Im also running everything under one host
If you have any kind of firewall on your network, you might make sure it’s not blocking that port with a rule. Here’s a couple screenshots from my setup in case that helps.
Thanks for the configuration example. Unfortunately it doesn’t seem to work for me. I’ve replied to someone above with screenshots of what my configuration now looks like. The base_url option you use there wasn’t available to me because it apparently has been deprecated and replaced with internal_url and external_url.
The older IDE drives with the 5.25" platters and smaller ones make great wind chimes. The laptop ones are a bit .ore fragile due to thinner material. Years ago, we used to do this with a few of them.
I used to make clocks with the platters and give them to friends and family. Michael’s used to sell inexpensive clock mechanisms that looked really cool against the platter background. I haven’t seen them lately, but I’m sure someone sells them online.
That’s not too easy methinks. You get kvm vm-s though gui/shell/api with proxmox, but no docker (they use lxc). Unless you set up a podman or similar inside it.
Other than that I’d say go with a xen (xcp-ng). Proxmox or esxi host, and spin up a vm as docker host.
I ditched docker in my latest setup, just running 2 machines in a proxmox cluster. I like lxc - as it’s got the footprint of docker and behaves like a vm
If you wind a 2 or 3 layer pancake coil the size of the platter out of 12 or 14AWG magnet wire and dump a couple kJ through it from a capacitor bank, the platter will launch into the air. Don’t try it indoors unless you want a platter embedded in the ceiling.
Look, this is a large puzzle you’re trying to solve all at once. I’ll try to answer at least some of it. I’d advise you take these things step by step. DM me if you need some more help, I may have time to help you figure things out.
I paid for and installed mullvad (app) but it crashes a lot (for over a minute every 20 seconds), so it looks like I need to configure something like gluetun to do it instead.
Check the error logs and see what’s wrong with it instead. How is it crashing? Did you check stdout and stderr (use docker attach or check the compose logs)?
If I want to watch them on my TV I need to connect something to my TV that talks to the raspberry pi, so I have an NVIDIA shield with Jellyfin installed on it - but in order for the NVIDIA-Jellyfin to connect to the RaspberryPi-Jellyfin it needs to go through the internet (if this is not the case, how does one point the NVIDIA-Jellyfin at the Raspberry Pi jellyfin?)
Technically not. You can use the Jellyfin web UI to stream directly from the RPi. You may need the shield if the RPi does not have enough resources for streaming, but I’d try it out first. Try to get the IP the Raspberry is listening on on your local network and put that in a web browser on a computer first. IF you get the web UI and can watch stuff, then try a web browser on your TV, or cast your computer to the TV or something. As long as you have a web browser you should be fine.
First of all, is that all correct or have I misunderstood something?
You should look a bit into how the internet, DNS and IP addresses work on the public internet and private networks. You can absolutely set it up so that traffic from your local network hitting your domain never leaves your home, while if you try the same from somewhere else, you get an encrypted connection to your home. You’re a bit all over the place with these terms so it’s hard to give you a straight answer.
How does mysubdomain.mydomain.com know it’s me and not some random or bot?
If the question is whether how the domain routes to your IP, look up how DNS works. If you are asking how to make sure you can access your domain while others can’t look up the topic of authentication (basically anything from a username/password to a VPN and network rules).
How do I tell Cloudflare to switch from web:443 to local:443 (assuming I’ve understood this correctly)
If I remember correctly, Cloudflare forwards HTTP/S traffic only, so don’t worry about the ports, that’s all it will do. About the domains, you need to have a fixed public IP address for that, and you have to give Cloudflare by setting a DNS A record for an IPv4 address and/or an AAAA record for an IPv6 address.
So something like this: A myhost.mydomain.com 123.234.312.45
Is this step “port forwarding” or “opening ports” or “exposing ports” or either or both?
Nope. Port forwarding is making sure that your router knows what machine should answer when something on the Internet comes knocking. So if the RPi port 8096 is “forwarded” to the router, then if something from the internet connects to the router’s 8096 port, it will get to your RPi instead of something else. Opening ports has to deal with firewalls. Firewalls drop all connections on all ports that are not open, for security reasons. By opening a port you are telling the firewall what entities outside your device can connect to a service like Jellyfin listening on that port. Exposing ports is Docker terminology, it is the same as port forwarding except instead of “moving” a port from your machine to your router you “move” a port from a container to your machine.
If my browser when accessing mysubdomain.mydomain.com is always going to port 80/443, does it need to be told it’s going to talk to cloudflare - if so how? - and does cloudflare need to be told it’s going to talk to NGINX on my local machine - if so how?
The DNS server you are hosting the domain from will propagate that info through the DNS network. Look up how DNS works for more info. If your domain is managed by Cloudflare, it should “just work”. Cloudflare knows it talks to your router by you setting up a DNS record in their UI that points to your router, where your RPi’s port should be forwarded, which directs traffic to your RPi, on which your NGINX should be listening and directing traffic to your services.
How do I tell NGINX to switch from local:443 to local:8096 (assuming I’ve understood this correctly)
Look up NGINX virtual servers and config file syntax. You need to configure a virtual server listening on 443 with a proxy_pass block to 8096.
Is there a difference between an SSL cert and a public and private key - are they three things, two things or one thing?
Yes, SSL certs are the “public keys” of an X509 pair, while what you know as “public and private keys” are RSA or ED25519 key pairs. The former is usually used to make sure that the server you are accessing is indeed who it claims to be and not a fake copy, it’s what drives HTTPS and the little lock icon in your browser. RSA or ED25519 keys are used for authentication as in instead of a username and password, you give a public key to a service, then you can use a private key to encrypt a message to auth yourself. One service you might know that it uses it is SSH.
Doesn’t a VPN add an extra step of fuckery to this and how do I tell the VPN to allow all this traffic switching without blocking it and without showing the world what I’m doing?
A VPN like Mullvad is used for your outgoing traffic. All traffic is encrypted, the reason you want a VPN is not so that others can’t see your messages, it’s so that your ISP and the other people forwarding your messages don’t know who you’re talking to (they’ll only know you’re talking to your VPN), and so that the people you’re talking to don’t know who you are (they are talking to your VPN). You need this so your ISP doesn’t see you going to pirate sites, and so that other pirates, and copyright trolls acting as pirates don’t know who you are when you talk to them and exchange files using torrents.
Gluetun just looks like a text document to me (compose.yml) - how do I know it’s actually protecting me?
I don’t know shit about Gluetun, sorry.
From nginxproxymanager.com : "Add port forwarding for port 80 and 443 to the server hosting this project. I assume this means to tell NGINX that traffic is coming in on port 80 and 443 and it should take that traffic and send it to 8096 (Jellyfin) and 5000 (ombi) - but how?
Again, look up virtual servers in NGINX configuration. You need a virtual server listening on 80 and 443 proxying traffic to 8096 and 5000, separating on hostnames I guess.
Also from that site: “Configure your domain name details to point to your home, either with a static ip or a service like DuckDNS or Amazon Route53” - I assume this is what Cloudflare is for instead of Duck or Amazon? I also assume it means "tell Cloudflare to take traffic on port 80 and 443 and send it to NGINX’s 80 and 443 as per the previous bullet) - but how?
Check the error logs and see what’s wrong with it instead. How is it crashing? Did you check stdout and stderr (use docker attach or check the compose logs)?
“Crash” is the wrong word. The app is running, it says “Connected” for about 15-20 seconds, then it says “Internet blocked” for about 20 seconds, then it says “Reconnecting” for 30-90 seconds, repeat indefinitely.
Using the CLI for logging, it says something along the lines of “Timeout… Hyper time out”
You should look a bit into how the internet, DNS and IP addresses work on the public internet and private networks.
Do you have any recommendations on how to learn this?
Also, thank you for explaining that “configuring a domain name” is adding an A record. I’ve added TXT records and similar for Google analytics and I’ve added mail records to set up my own domain’s email before - but this is helpful, thanks.
So first, I’m not really looking to change operating systems. I’ve got my system set up the way I like it, where it closely matches the production systems I run for my company.
Second, why do you say the answer is Proxmox? What benefit does that have over other solutions that can be more easily integrated into my existing operating system?
[Sorry for my not really well written reply, you really need to try different options, and in my opinion proxmox is like the only choice because of how many cool things you can do there]
Proxmox I just really good, and if you want to spin up VMs easily you will need to reshape your setup anyway
With proxmox you can do like everything with VMs, containers, etc. Not just managing only containers, or just showing status of the VMs
Also, proxmox is not really an operating system, it’s a service on top of Debian (in many cases you start installing proxmox by installing Debian)
Yo dawg, I put most of my services in a Docker container inside their own LXC container. It used to bug me that this seems like a less than optimal use of resources, but I love the management - all the VM and containers on one pane of glass, super simple snapshots, dead easy to move a service between machines, and simple to instrument the LXC for monitoring.
I see other people doing, and I’m interested in, an even more generic system (maybe Cockpit or something) but I’ve been really happy with this. If OP’s dream is managing all the containers and VM’s together, I’d back having a look at Proxmox.
I use Docker LXCs. Really just a Debian LXC with Docker and then Portainer as a UI. I have separate LXCs for common services. Arrs on one LXC, Nextcloud, Immich and SearXNG on another, Invidious on a third. I just separate them so I don’t need to kill all services if I need to restart or take down the LXC for whatever reason.
Thanks. I did check it out and it looks like it’s got some really cool benefits, like being able to cluster across two machines and take one down if it needs servicing, with zero down time.
I’m thinking about buying some rack mount servers and bringing everything I’m currently doing in the cloud for my business to on-premises servers. The one thing I was wary about was how I was going to handle hardware maintenance, and this looks like it would solve that issue nicely.
Proxmox does VMs and containers (LXC). You can run any docker / podman manager you want in a container.
Benefits of having Proxmox as the base is ZFS / snapshoting and easy setup of multiple boot drives, which is really nice when one drive inevitably fails 😏
If you get a reverse proxy setup all you need is port 80 and 443 and configure it it’ll expose the services that you want to be exposed through the subdomain Personally I’ve got Traefik service sitting on my media server and anything I want to expose goes through it .it has the details for the connection to cloudflare and so long as I direct it properly both on the container side and Traefik it’ll run as expected. The idea is if you go to say jellyfin.example.com cloudflare will direct that at at your reverse proxy(nginx in this case) which then redirects to the right machine/container because you entered from “jellyfin” .
The VPN gluten it is another container that will have the login details to your provider .
selfhosted
Hot
This magazine is from a federated server and may be incomplete. Browse more on the original instance.