This page is about Caddy 2, which is currently in beta. Click here for the old Caddy 1 site. Thank you for your patience as we transition!
Caddy 2 is beta software. It is used in production, but some things will change; check the release notes before upgrading.


Caddy is available for every platform as a static binary (it has no dependencies). You can also build from source to customize your build.

Official packages

We maintain official distributions for the following platforms:

Manually installing as a Linux service


  • A Caddy binary that you downloaded or built from source
  • Systemd version 232 or newer
  • Superuser rights

Move the caddy binary into your $PATH, for example:

sudo mv caddy /usr/bin/

Test that it worked:

caddy version

Create a group named caddy:

groupadd --system caddy

Create a user named caddy, with a writeable home folder:

useradd --system \
	--gid caddy \
	--create-home \
	--home-dir /var/lib/caddy \
	--shell /usr/sbin/nologin \
	--comment "Caddy web server" \

Next, take this systemd unit file and save it to /etc/systemd/system/caddy.service. Double-check the ExecStart and ExecReload directives---make sure the binary's location and command line arguments are correct for your installation.

Double-check that both your systemd and Caddy configs are correct before continuing.

To start the service for the first time, do the usual systemctl dance:

sudo systemctl daemon-reload
sudo systemctl enable caddy
sudo systemctl start caddy

Verify that it is running:

systemctl status caddy

When running with our official service file, Caddy's output will be redirected to journalctl:

journalctl -u caddy

To gracefully apply any changes to your config file (if using one):

sudo systemctl reload caddy

You can stop the service with:

sudo systemctl stop caddy

Building from source


Download the v2 branch source code:

git clone -b v2 ""


cd caddy/cmd/caddy/
go build