Skip Navigation

Which reverse proxy do you use/recommend?

I have been self-hosting for a while now with Traefik. It works, but I'd like to give Nginx Proxy Manager a try, it seems easier to manage stuff not in docker.

Edit: btw I'm going to try this out on my RPI, not my hetzner vps, so no risk of breaking anything

74 comments
  • Nginx from day one. Well documented, it works. If something doesn’t work chances are you are a quick googlefu away from the solution.

  • Stick with Traefik if you've figured it out. It's much more powerful than NPM in my opinion. If you insist on using NPM, you might want to try NPMPlus, it has more bells and whistles and is more actively maintained.

  • I'll throw in another recommendation for Caddy. I've been using it for years and the few problems/feature suggestions I had got implemented by the developers pretty quickly. They're super active on their forums and I haven't yet run into an issue where I couldn't either figure it out myself or with help from their community forums (usually from a dev.) They're very friendly and won't berate you for simple mistakes like other devs.

  • Caddy is the only reverse proxy I have ever managed to successfully make use of. I failed miserably with Nginix and Traefik.

    Caddy has worked very well for me for several years now. It gets the SSL certificate from my domain name provider and all.

  • I use Traefik at home. The initial setup was more complex than others but now it's set up it's by far the easiest to add new routes than any other I've tried, just by virtue of being right there in the compose/k8s files I'm already writing. Static routes are manual of course, but so are every other proxy so that's no different, and they're not exactly complicated (I see another comment has examples). The config files are the same markup language as your Compose/k8s files so you're not learning a whole new syntax and having to switch languages mentally as you switch between them.

    Caddy is super easy, but the fact that the Docker labels thing was a plugin is a con to me, I'd prefer it being first party. It also isn't as performant as Traefik, higher CPU usage while also having higher latency.

    As far as I'm aware, Nginx and Nginx Proxy Manager support no such thing, you have to manually write those routes every time you create a new service. Personally I think Nginxs config syntax annoying, I'm very comfortable with it now but I much prefer TOML/YAML.

    Nginx Proxy Manager is a lot like Portainer. It's useful for people who don't want to learn Nginx and/or just want to click a few buttons. But anything complex you're suddenly going to be thrown into the deep end.

    You've already set up Traefik, you've already done the complex bit. IMO there's no reason to change, from this point everything else is more complicated.

    We use Nginx at work but are currently in the process of switching to Traefik.

  • I use NPM in a docker container. It could not be easier in my opinion but then again, I did not use any of the alternatives so I might be missing out on something, who knows. I did manage a couple of proxy servers in the past based on Apache and I can tell you that NPM is much easier and logical to me than that.

    Just create a compose file and start it. Create DNS records pointing to your NPM IP address/exposed IP and make a host in NPM sending traffic to the right container IP:port. The compose file is super simple, could not be easier. Here's mine for example:

     bash
        
    services:
      nginx-proxy-manager:
        container_name: nginx-proxy-manager
        image: 'jc21/nginx-proxy-manager:latest'
        restart: always
        ports:
          - '80:80'
          - '443:443'
        volumes:
          - ./data:/data
          - ./letsencrypt:/etc/letsencrypt
    
      
      

    I just make sure ports 443 and 80 are exposed on my router so DNS records can point to that IP adrdess. All traffic on port 80 gets re-routed to 443.

    I'm probably stating all the obvious things here 😀

    • I mean yes, that seems obvious now that I've learned this.

      But I wish I read this comment 3 years ago when I was starting to dive into self hosting. Would have saved me a bunch of time. So always assume some piece of knowledge is not obvious for someone out there and share ᕕ( ᐛ )ᕗ

      • So always assume some piece of knowledge is not obvious for someone out there and share

        You just described a thing of mine I cannot help but do; explain the ever loving crap out of things
        I need to be careful with that though as relatives start to complain and push back on me telling things over and over.
        Thing is, until I see a full comprehension on the other side on what I try to convey I just keep explaining in variations, keep finding metaphors and keep pestering you until you 'get it'. Some say it is a virtue, some say it is a hindrance.

        I have had therapy on this... 😂

  • but I’d like to give Nginx Proxy Manager a try, it seems easier to manage stuff not in docker.

    NPM is pretty agnostic. If it receives a request for a specific address and port combination it just forwards the traffic to another specific address and port combination. This can be a docker container, but also can be a physical machine or any random URL.

    It also has Let's Encrypt included (but that should be a no-brainer).

  • For a while now I've been using either haproxy or nginx depending on my needs. I've hit instances with both where the functionality I want is in the paid version.

  • I've been mostly using Nginx Proxy Manager, but I recently set up Bunkerweb as a WAF for a couple of public services I'm hosting and I kind of like it. It does reverse proxy along with a bunch of other things (bad behavior blocking, geographic blocking, SSL cert handling, it does a lot).

    Mentioning it because I didn't see any other mention of it yet.

    NPM is easy to use. Caddy sounds like something I'd like to try too now.

  • I had a poor experience with NPM which turned me to SWAG, it worked, but was a tad slow. Moved to Traefik and haven’t looked back.

  • I've been using nginx forever. It works, I can do almost everything I want, even if more complex things sometimes require some contortions. I'm not sure I would pick it again if starting from scratch, but I have no problems that are worth switching for.

  • I use Synology integrated reverse proxy, stupidly simple and always works for me (only if IPv6 doesn't fuck up itself, I can't fallback to IPv4 because that is CGNATED), if I am missing features that other options have I would like to know :)

    • I've looked at it but never actually given the Synology proxy a go despite using their DNS server. Does it do auto certificate renewal?

      Have you considered using a Cloudflare tunnel to bypass the CGNAT? You can do that into a proxy or straight into the service.

      • Does it do auto certificate renewal?

        Yes.

        Have you considered using a Cloudflare tunnel to bypass the CGNAT?

        I did before when I had some free domain over there, but I don't think there are any worthy free domains out there anymore, and even when they are cheap, I really don't need it and don't feel comfortable to pay for something that I can't use in its fullest (due to CGNAT).

        For example, I am aware cloudflare tunnels can't be used for a Plex/Video streaming and that is the number 1 service that I want to be exposed to the Internet.

        For now I am living with my IPv6 address and the Synology DDNS with the reverse proxy features... My personal fallback are Tailscale and Zerotier.

  • I use nginx as the internet facing proxy, write my own config and manage it with source control. Also use traefik in docker land with service labels to configure it

  • I like Zoraxy it has a lot of features, like Zerotier integration, status monitoring etc and a clean UI

    Runs fine for my needs and fully replaced NPM for me 😊

    You can run it in docker or as a single binary directly

  • I use and love nginx.

    Maybe a bit more old fashioned than more modern solutions, but steady solid and versatile. I use it as reverse proxy ad well as proxy for php stuff and more.

74 comments