I have a few things that I host from my house. I have read that it’s better practice to route stuff through a VPS to not expose your home IP.
Here’s what I’ve done so far: VPN setup on VPS with successful routing of containers. Confirmed by using a CLI IP check within the container which returned the VPS IP. I used PiVPN because I know it and it’s easy to set up.
Where I got stuck: I pointed Nginx to the supposed IP:port of the connection, but couldn’t get it to load.
What should I do next?
I’m assuming that you are trying to proxy an http web server. If not, you’re going to have a hard time with nginx. Can you post your nginx config? Are you getting any response from nginx at all?
Nginx was already set up and working before. I have some sites hosted directly on the VPS as well.
I’m just not sure how to make a http request go to a VPN client
By using its ip:port
If you have homeserver1 running stuff and that’s connected to the vps through vpn you make sure your homeserver1 service that you want to proxy runs on the homeserver1’s vpn ip.
For docker this is done by specifying that ip when you expose ports or use 0.0.0.0
I assume you can already ping homeserver1 from the vps by using the vpn address of homeserver1
Assuming your local service is accessible from the nginx server, you can proxy the request to it:
server { listen 80; location / { proxy_pass http://10.100.100.2:3000/; } }
…where
10.100.100.2
is your local IP on the VPN and3000
is the local port your service is listening on, and80
is the public port your nginx server listens on. Everything that hits your nginx server athttp://yourserver.com:80/
will proxy back to your local service athttp://10.100.100.2:3000/
. Depending on what you’re hosting, you may need to add some things to the config.