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

Solution 1:

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?

Solution 2:

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