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 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. Make sure your config file is in the location specified in the command.

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

Build from source


Download the source code:

git clone ""


cd caddy/cmd/caddy/
go build