Skip to content
Proxy · head-to-head

Caddy vs Nginx Proxy Manager

Updated Sep 2026prices checked · Jul 2026
We earn commissions when you shop through the links below. Full disclosure →
The verdict

Pick Caddy if you are comfortable editing a short text file and want the smallest moving part — one Go binary, automatic HTTPS for every domain it names, and a config you can keep in git. Pick Nginx Proxy Manager if you never want to open a config file and would rather manage proxy hosts, certificates, access lists and users from a web UI on port 81.

Side by side

Caddy
Nginx Proxy Manager
Category
Caddy: Reverse proxyNginx Proxy Manager: Reverse proxy
Stack
Caddy: GoNginx Proxy Manager: Node.js · Nginx
License
Caddy: Apache-2.0Nginx Proxy Manager: MIT
Config
Caddy: Caddyfile (text)Nginx Proxy Manager: Web UI
Automatic HTTPS
Caddy: On by default for every named domainNginx Proxy Manager: Let's Encrypt or custom certificates, requested per host in the UI
Access control
Caddy: basic_auth and other directives in the CaddyfileNginx Proxy Manager: Access lists and basic auth from the UI
Admin surface
Caddy: Admin API on localhost:2019Nginx Proxy Manager: Web UI on port 81
Min RAM
Caddy: 256 MB (our estimate)Nginx Proxy Manager: 512 MB (our estimate)
Difficulty
Caddy: 2 / 5Nginx Proxy Manager: 1 / 5

Caddy and Nginx Proxy Manager both exist to answer the same beginner question: how do I put my self-hosted apps on real domains with valid HTTPS, without learning how certificates work? Both get you there in minutes. They just ask you to do it in different places — Caddy in a two-line text file, Nginx Proxy Manager (NPM) in a web form.

A file versus a form

Caddy is a single Go binary configured with a Caddyfile. Name the domain, name the backend, and Caddy obtains the certificate, renews it and redirects HTTP to HTTPS on its own:

app.example.com {
  reverse_proxy app:3000
}

Adding an app means adding a block and reloading, which Caddy does with zero downtime. Our automatic HTTPS with Caddy guide covers the full setup, including the volume you must persist so certificates survive a restart.

Nginx Proxy Manager wraps a real Nginx server in a web admin UI on port 81. You add a proxy host in a form — domain, forward address and port — and request a free Let's Encrypt certificate (or upload your own) from the same screen. NPM writes the Nginx config for you; you never see it unless you want to add custom Nginx settings.

What each one is good at

  • Caddy: portable, reviewable config. The Caddyfile is plain text, so it goes in git, gets copied to a new server, and shows up in a diff when it changes. The reverse proxy itself is capable — load balancing, active and passive health checks, WebSockets — and Caddy is also a full static-file web server. HTTP/3 is on by default.
  • NPM: nothing to write. Proxy hosts, redirections, streams and 404 hosts are all forms. It also handles access lists and basic HTTP authentication per host, and multiple users with permissions — useful if more than one person manages the proxy.

Neither discovers Docker containers on its own; every route is something you add deliberately. (Traefik is the proxy that does — see Caddy vs Traefik.)

Certificates

For the common case — one domain or subdomain per app, HTTP challenge on port 80 — both are fully automatic after the first step. The difference is where the step happens: Caddy manages a certificate for every domain in the Caddyfile with no separate step, while in NPM requesting the certificate is part of setting up the proxy host in the UI. Caddy uses Let's Encrypt and ZeroSSL by default. Wildcard certificates need a DNS challenge; for Caddy that means building in a DNS provider module, which the official image supports through its builder variant.

Setup effort and resources

NPM is one of the easiest proxies to stand up: one container, open port 81, create the admin, add a host. We rate it 1 / 5. Caddy is a 2 / 5 — equally quick, but you edit a file rather than a form, and you need to know where it lives inside the container.

Neither project publishes a RAM minimum. Caddy's single binary is the smaller footprint; our estimates are 256 MB for Caddy and 512 MB for NPM, which runs Node.js and Nginx together. Both fit on the smallest VPS.

One operational difference is worth knowing: NPM's admin UI on port 81 is protected only by its login, so keep it off the public firewall or proxy it through NPM itself behind an access list. Caddy has no web UI to expose; its admin API listens on localhost:2019 by default.

Which should you self-host?

Pick Caddy if…

  • You are comfortable editing a short text file and want the config in git.
  • You want the smallest moving part: one binary with no external dependencies and no admin UI.
  • You also need a static-file web server, or HTTP/3, from the same process.

Pick Nginx Proxy Manager if…

  • You never want to open a config file, and a web form is the right interface for you (or for whoever else manages the server).
  • You want access lists, basic auth and multiple admin users managed from a UI.
  • You are new to reverse proxies and want the most guided path to HTTPS.

Running either on a VPS

Either will put valid HTTPS in front of your apps on the smallest server you can rent. If your stack is Docker-heavy and you want routes to appear from container labels instead, compare Nginx Proxy Manager vs Traefik. The step-by-step setups are linked below.

Common questions

Caddy vs Nginx Proxy Manager — which is easier?

Nginx Proxy Manager, if you never want to see a config file: everything is a form in its web UI on port 81. Caddy is nearly as quick — a reverse proxy with HTTPS is two lines of Caddyfile — but you are editing a text file rather than clicking.

Do both get Let's Encrypt certificates automatically?

Yes. Caddy manages a certificate for every domain in its Caddyfile by default, using Let's Encrypt or ZeroSSL, and redirects HTTP to HTTPS on its own. Nginx Proxy Manager requests a free Let's Encrypt certificate when you set one up for a proxy host in its UI, and also accepts your own custom certificates.

Which uses less memory?

Neither project publishes a RAM minimum. Caddy is a single Go binary with no external dependencies; Nginx Proxy Manager runs Node.js and Nginx together. Our estimates are 256 MB for Caddy and 512 MB for NPM — either fits the smallest VPS.

Where to host itaffiliate disclosure
Kamateratrial either on
The entry tier is a free trial — fine for a first look. Size it up (or run the 2 vCPU / 4 GB box the cost figures above assume) once you're keeping it.1 vCPU · 1 GB RAM · 20 GB SSD · $4.00/mo
Start free on Kamatera → (opens in new tab)
DigitalOceanalso works on
From $6/mo · 1 vCPU / 1 GB / 25 GB · US + EU + Asia
Deploy on DigitalOcean → (opens in new tab)

Paid link — we earn a commission if you shop through it.

Other comparisons with these apps

We use analytics cookies (Google Analytics, PostHog) to see which guides are useful. No ad networks, no cross-site tracking. See our privacy policy.