I'm trying to stop using a proxy service and expose my home-hosted web apps through a VPS instead, so visitors only see the VPS address. The VPS and my home PC are connected with WireGuard, and the tunnel is established—both hosts can ping each other successfully. Nginx Proxy Manager is running in Docker on the home PC.
The intended path is: VPS → WireGuard → Nginx Proxy Manager → web app. However, HTTP and HTTPS requests from the VPS never seem to reach Nginx. I'm not sure whether the problem is Docker networking, WireGuard routing, port forwarding, or how Nginx is bound to the host. I'd prefer to fix the existing setup rather than rebuild the server and containers. What configuration and routing should I check?
3 Answers
Make sure Nginx Proxy Manager is listening on an address that is reachable from the VPS, not only on 127.0.0.1 or an isolated Docker interface. Test from the VPS with a verbose curl directly to the home machine’s WireGuard IP and port. If that fails, inspect WireGuard routes and firewall rules; if it succeeds but the public request fails, the issue is likely the VPS listener or its forwarding configuration. Docker does not have to run WireGuard inside the same container—the host’s WireGuard interface can be used by the containers as long as the published ports and bindings are correct.
A working WireGuard handshake and ping only prove that the tunnel itself is alive. You still need to route the inbound web ports through it. One straightforward design is to give the home machine a WireGuard address, then run a TCP stream proxy on the VPS that listens on ports 80 and 443 and forwards those connections to the home machine’s WireGuard IP. Nginx Proxy Manager can remain responsible for certificates and host routing at home, while the VPS acts as a simple public-facing relay.
Check the routing direction and AllowedIPs carefully. If the VPS is configured to send all traffic through wg0, it may be disrupting its normal routes. For a reverse-proxy setup, WireGuard on the VPS usually only needs the home network or the specific WireGuard address in AllowedIPs, rather than 0.0.0.0/0. Also verify that IP forwarding and any required firewall rules allow TCP 80 and 443 through the tunnel.

Related Questions
Can't Load PhpMyadmin On After Server Update
Redirect www to non-www in Apache Conf
How To Check If Your SSL Cert Is SHA 1
Windows TrackPad Gestures