Caddy "listen tcp :443: bind: permission denied"

Caddy server would not start and displayed this error after upgrading to v0.9.3:

listen tcp :443: bind: permission denied

I was running caddy with systemd as user caddy. I checked that the binary was, in fact, owned by caddy.


Solution 1:

If you're running systemd v229 or later, you can do this without giving the binary capabilities intrinsically:

AmbientCapabilities=CAP_NET_BIND_SERVICE

Solution 2:

It's not a caddy issue, nor a user-permissions issue. Linux doesn't allow processes to listen on low-level ports by default.

To grant access:

sudo setcap CAP_NET_BIND_SERVICE=+eip $(which caddy)

source: superuser: Allow non-root process to bind to port 80 and 443?