Skip to content

TLS and HTTPS

SimpleDeploy embeds Caddy. TLS is configured globally for the management UI and per-endpoint for each app.

ModeWhen to use
autoPublic domain with DNS pointing at the server. Caddy gets a free cert from Let’s Encrypt.
offBehind Cloudflare, an ALB, nginx, or any proxy that terminates TLS upstream.
customCert issued by a corporate CA, an external Let’s Encrypt manager, or for mTLS.
localHome labs and dev only. Caddy acts as a local CA, devices must trust its root.
  1. A public DNS record (A or AAAA) pointing myapp.example.com at the server.
  2. TCP ports 80 and 443 open from the internet. Port 80 is needed for the ACME HTTP-01 challenge.
  3. A reachable email in tls.email so Let’s Encrypt can warn you about expiry problems.
/etc/simpledeploy/config.yaml
domain: manage.example.com
tls:
mode: auto
email: admin@example.com

Restart after switching modes: sudo systemctl restart simpledeploy.

The endpoint label simpledeploy.endpoints.N.tls overrides per app. The shorthand simpledeploy.tls works for single-endpoint apps.

services:
web:
image: myapp:latest
labels:
simpledeploy.endpoints.0.domain: "myapp.example.com"
simpledeploy.endpoints.0.port: "3000"
simpledeploy.endpoints.0.tls: "auto"

See also: Behind a load balancer, Custom certificates, Configuration reference.