Setting up domain routing with Nginx Proxy Manager and Cloudflare integration

I bought a domain through Namecheap and I’m trying to set it up with Cloudflare and Nginx Proxy Manager. What I want to do is expose different services running on various ports through subdomains. My main use case right now is setting up a CouchDB instance for Obsidian synchronization that my friends can access.

I managed to configure the domain with Cloudflare DNS, but I’m stuck on the next part. The traffic from my domain isn’t getting routed to my home server services through NPM. I’ve been following tutorials but something isn’t clicking.

Has anyone successfully set up this kind of configuration? Am I missing a crucial step in the process? Any guidance would be really helpful since I’m pretty new to this whole self-hosting setup.

Been there with this exact setup mess. You’re manually juggling too many moving parts.

Here’s what happened: Cloudflare records point somewhere, NPM is configured for something else, and port forwarding is set up for a third thing. With multiple services and subdomains, keeping configs in sync becomes a nightmare.

I wasted weekends troubleshooting this until I automated everything. Now I use Latenode to monitor services and auto-update DNS records when things change. It handles NPM API calls to create new proxy hosts when I spin up services.

Game changer is automated health checks that update Cloudflare DNS if your home IP changes or services go down. Instead of debugging traffic flow, you get notifications and automatic fixes.

For CouchDB specifically, Latenode watches container status and keeps your subdomain pointing to the right place. No more guessing if it’s DNS, NPM config, or port forwarding.

Start by double-checking your NPM proxy host config. Make sure you’re using the right internal IP addresses and ports - CouchDB usually runs on port 5984. I ran into this same thing and realized my services weren’t actually reachable from the NPM container. If you’re using Docker, verify NPM can hit your other containers through the network setup. Sometimes it’s not the external routing that’s broken - it’s internal connectivity. Also check if your ISP blocks standard ports. Some residential connections block 80/443 by default. Quick test: set up port forwarding to something like 8080 and try accessing your domain with :8080 at the end.

Check your Cloudflare SSL/TLS settings - I had mine on “flexible” and it broke everything. Switch it to “full” or “full strict” when you’re running npm with SSL certs. Also double-check that your subdomain records point to the actual server IP, not just your root domain.

This appears to be primarily a port forwarding issue. While you have your Cloudflare DNS set up to point to your public IP, it seems that your router isn’t correctly routing that traffic to your Nginx Proxy Manager server. Without the right port forwarding in place, external requests won’t reach your services via NPM.

I faced a similar challenge when starting my self-hosting journey. Ensure that you’ve forwarded both port 80 and port 443 to the internal IP where NPM is hosted. Additionally, do check Cloudflare’s proxy settings; if the orange cloud is activated, it could interfere with your troubleshooting. You might want to switch to DNS only during the debugging phase.

Lastly, consider the firewall settings as well. Even with port forwarding correctly configured, your router or server’s firewall could be blocking incoming traffic.