For me it's https://nginxproxymanager.com/ it's just so easy to setup and use. One docker command and you're up and running with a nice webinterface to manage access to your docker instances with ssl. I heard good things about Traefik too but I have no personal experience with that one. NPM does everything I need and if it ain't broken... :)
Yeah seems like I was lucky to find what I needed on the first try. A colleague of mine was using Traefik but switched to NPM because it's so easy to use.
I second that. Amazing easy to use, configure, supports (LetsEncrypt) certificates via DNS-01 challenge and integrates with ease with most DNS providers.
Paired with authentication providers (keycloak, authelia, authentik), the "advanced" textbox lets you do forward proxying really easy, or customize your "basic proxy".
I'm not sure how many of these features are present in Traefik, it would be really nice if any of you know if any of these are easily supported in it:
I've been using NPM for years.. but since 2.10.3 broke SSL certificates and there's been literally no interest from JC21 to fix the problem (there's a PR ready to go) i've been forced to look elsewhere and have settled on caddy for now..
Yes NPM is for basic reverse proxying, so one URL to one server. If you wanted to scale and load balance across multiple servers you'd need regular nginx with a text config file since you literally can't configure a second or third server.
And I'd still find that easier than Traefik, but maybe that's just because I've been using Apache2 and nginx for like a decade at this point so it's what I know.
I used NPM for a very long time, but after I switched to podman, DNS name resolution for containers stopped working in NPM, they work fine in every other container. Switched to caddy and it's okay, it only supports HTTP transports so I can't use it as a gateway for my DoH/DoT server, but that's not a huge deal. Once NPM works properly on podman I may switch back
For me it’s traefik. It’s took me a while to get it working, but it’s actually really easy now.
Setting up container access with labels is very convenient!
I started my self hosted journey over a decade ago and from what I remember most of the guides were for apache so that's what I learned. Over the years Ive added so much that to re-do everything would take down my stuff while I figure it out and I just haven't found it worth it.
Although it's harder to keep it up these days, even setting up my Lemmy instance was a pain because nobody has apache guides anymore so you have to figure it out yourself
Fellow Apachian! It's how I learned how to make a reverse proxy initially and just never saw the point in learning something else (though to be fair haven't had to make a reverse proxy recently).
Of the three I've always used nginx. Easy to setup, and it works. Plus, on a docker based self-hosted instance nginx is preinstalled. The other bonus is it is well documented as a lot of people use it.
Do you know of any tool that can help me look at overall traffic that goes through it?
Right now I am using Mullvad through gluetun to essentially route traffic to my services without opening ports on my router and I am just curious what sort of traffic is hitting my server seeing how (I hope) isolated my address seems to be (servicename.mydomain.tld:<random port recieved from mullvad port forwarding>)
I will soon migrate this reverse proxy setup to a VPS since Mullvad will be sunsetting their port forwarding feature soon but I am still in need of a tool that can show me what sort of traffic goes through Caddy. Something like countries, IPs and services that they are trying to access as well as the request types.
Do you know of any tool that can help me look at overall traffic that goes through it?
I haven't looked in detail at the Monitoring Caddy documentation page and haven't used this myself, but apparently it can be configured to emit a bunch of metrics in Prometheus format.
Something like countries, IPs and services that they are trying to access as well as the request types.
Oh, for that kind of thing you'd need to parse the log files instead. GoAccess maybe?
I made the switch from NGINX to Caddy. For me, configuring Caddy is much more simple than configuring NGINX. Also Caddy automatically obtains and renews SSL certificates.
So, Caddy's simplicity is what won me over. I don't care about speed since I'm the only user of my self-hosted services.
almost everywhere: HAProxy. I like the syntax, ACLs, map files, stick-tables... there's too much to say in a single post, but I use it since 2012 and it never failed me, whatever the need, both at home and at work.
kubernetes: ingress-nginx. Mostly because it's the first one I tried back in the days and it just works :). Although I should try one of the haproxy based ingresses, or Traefik, which seems interesting too.
Let's see.
At work it's a mix between apache (I'm slowly replacing with nginx as services are migrated) and aws's alb ingress controller (while I'm not a fan, it lets me use acm certs).
Every time something has an update I need to remember how I installed it to start with, a script? From source? By some other random method? I've got gitea waiting to update but I really can't remember how I installed it to start with 🤣🤣
So yeh, Apache, because it first works with my tangled mess
nginx because I like how flexible it is, and I'd started using it as a webserver for normal file serving + PHP site hosting with php-fpm a good time ago anyways.
I'd tried Caddy once but the "quirky" flair included even in things like documentation was far too grating for me, plus I honestly just, don't really like using JSON.
Like some others have said, I use NGINX due to it's flexibility and ease of configuration. I want to be able to tweak performance and security settings to be exactly how I want them, and NGINX let's me do that.
I've been using caddy for a while. I've been really happy with it, it is very small learning curve especially for someone brand new to reverse proxies. Config file syntax is very simple.
However I've been thinking of moving to nginx. After I learned about OpenResty and the possibility to script nginx with Lua, nginx is very tempting. Sadly caddy has nothing similar.
When Nginx (and I pushed it hard on others to use) to NPM to Traefik to Caddy. Caddy is just simple, easy setup for Certs, and integrates easily with Authelia.
I used to use Traefik but switched to Caddy. I like how easy it is to configure a new reverse proxy for one of my containers. Literally 3 new lines in my Caddyfile, restart the caddy container and away it goes getting certificates etc.
I'm not a Caddy expert (nor a Traefik one) but with Traefik I didn't even have to add any line to its config. I just use a template docker-compose and set the domain and the port.
Yeah from memory (was a while ago), Traefik hooks into the docker socket to auto-discover containers that have a specific label? Might not be remembering that correctly.
Nginx, more specifically lsio's SWAG container. I like using it because of it's flexibility, relative ease of use and integration with authelia/authentik
In the past I've used SWAG and NPM and then later traefik when I was using Docker, but now that I've switched to Kubernetes I only use Traefik which oddly is an altogether different beast than Traefik for Docker which I find odd. On K8S traefik is pretty straightforward to use while on Docker it's a bit of a mess so much so that I made a github repo about how to set it up
- This somehow got posted even though I had only clicked Preview, don't know how that happened -
so that others in the future could figure out how to get Traefik working in docker because the documentation was kinda terrible.
I also tried Caddy (2 I think) but couldn't get it to work because the documentation was awful and in order to use DNS based authentication for LE certs you have to make your own docker container which is nuts; and there's no documentation for that either (at least none that I could find)