Skip to content

Caddy

Automatic HTTPS with Caddy, through the installer or by hand.

Caddy gets and renews the Let's Encrypt certificate on its own. It's the simplest option and the one the installer sets up.

With the installer

If you installed with install.sh, give it your domain (you can run it again whenever you like; your data is kept):

curl -fsSL https://kumoyami.com/install.sh | sudo bash -s -- --domain nube.example.com --email you@example.com

The installer checks that ports 80 and 443 are free and that DNS points at the server, then creates in /opt/kumoyami:

  • A Caddyfile with your domain, which forwards requests to the web container.
  • A docker-compose.override.yml with the caddy service (caddy:2 image, ports 80, 443 and 443/udp for HTTP/3). Docker Compose merges it with docker-compose.yml automatically.

The first certificate can take a few minutes: DNS has to point at the server already and ports 80 and 443 have to reach it. To keep an eye on it:

cd /opt/kumoyami && sudo docker compose logs -f caddy

To remove Caddy (to switch to your own proxy, say), run the installer with --no-caddy: it stops the service and sets its configuration aside with a .disabled-DATE suffix.

By hand, with Caddy on the server

If Caddy is already installed on the server (as a system package), add this to your Caddyfile:

Caddyfile
nube.example.com {
	encode zstd gzip
	reverse_proxy 127.0.0.1:4890
}

And reload Caddy:

sudo systemctl reload caddy

That's all it takes, including for the WebDAV network drive and large uploads.