2020-01-24 12:47:52 -07:00
---
title: "Install"
---
# Install
2020-12-30 07:37:15 -07:00
This page describes various methods for installing Caddy on your system.
**Official:**
- [Static binaries ](#static-binaries )
- [Debian, Ubuntu, Raspbian ](#debian-ubuntu-raspbian )
- [Fedora, RedHat, CentOS ](#fedora-redhat-centos )
2021-04-05 21:31:03 +02:00
- [Arch Linux, Manjaro, Parabola ](#arch-linux-manjaro-parabola )
2020-12-30 07:37:15 -07:00
- [Docker ](#docker )
- [DigitalOcean ](#digitalocean )
- [Linux service ](#linux-service )
2020-04-13 19:52:44 -06:00
2020-05-07 13:02:47 -06:00
< aside class = "tip" >
2020-12-30 07:37:15 -07:00
Our < a href = "https://github.com/caddyserver/dist" > official packages</ a > come only with the standard modules. If you need third-party plugins, < a href = "/docs/build #xcaddy " > build from source with < code > xcaddy</ code ></ a > or use < a href = "/download" > our download page</ a > .
2020-05-07 13:02:47 -06:00
< / aside >
2020-01-24 12:47:52 -07:00
2020-12-30 07:37:15 -07:00
**Community-maintained:**
- [Homebrew ](#homebrew )
- [Webi ](#webi )
- [Chocolatey ](#chocolatey )
2021-02-17 11:34:28 -07:00
- [Ansible ](#ansible )
2021-06-30 01:47:26 -04:00
- [Scoop ](#scoop )
2021-06-30 11:16:05 +05:30
- [Termux ](#termux )
2020-12-30 07:37:15 -07:00
## Static binaries
Simply downloading a Caddy binary does not < a href = " #linux -service" > install it as a service</ a > , but can be useful in dev or when upgrading an existing installation.
- [**View releases on GitHub** ](https://github.com/caddyserver/caddy/releases ) (expand "Assets")
- [**Use our download page** ](/download )
## Debian, Ubuntu, Raspbian
2020-12-31 14:01:16 -05:00
Installing this package automatically starts and runs Caddy for you as a systemd service named `caddy` using our official [`caddy.service` ](https://github.com/caddyserver/dist/blob/master/init/caddy.service ) unit file.
This package also comes with a `caddy-api` systemd service using our official [`caddy-api.service` ](https://github.com/caddyserver/dist/blob/master/init/caddy-api.service ) unit file, which is disabled by default. If you plan to configure Caddy solely through its [API ](/docs/api ), then you should disable the `caddy` service, and enable the `caddy-api` service.
Stable releases:
< pre > < code class = "cmd" > < span class = "bash" > sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https< / span >
2021-07-12 18:56:34 +02:00
< span class = "bash" > curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo tee /etc/apt/trusted.gpg.d/caddy-stable.asc< / span >
2021-02-21 02:10:21 -05:00
< span class = "bash" > curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list< / span >
2020-12-31 14:01:16 -05:00
< span class = "bash" > sudo apt update< / span >
< span class = "bash" > sudo apt install caddy< / span > < / code > < / pre >
Testing releases (includes betas and release candidates):
< pre > < code class = "cmd" > < span class = "bash" > sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https< / span >
2021-07-12 18:56:34 +02:00
< span class = "bash" > curl -1sLf 'https://dl.cloudsmith.io/public/caddy/testing/gpg.key' | sudo tee /etc/apt/trusted.gpg.d/caddy-testing.asc< / span >
2021-02-21 02:10:21 -05:00
< span class = "bash" > curl -1sLf 'https://dl.cloudsmith.io/public/caddy/testing/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-testing.list< / span >
2020-12-30 07:37:15 -07:00
< span class = "bash" > sudo apt update< / span >
< span class = "bash" > sudo apt install caddy< / span > < / code > < / pre >
2020-12-31 14:01:16 -05:00
[**View the Cloudsmith repos** ](https://cloudsmith.io/~caddy/repos/ )
2020-12-30 07:37:15 -07:00
2021-05-20 06:25:45 +01:00
If you wish to use the packaged support files (systemd services, bash completion and default configuration) with a custom Caddy build, instructions can be found [here ](https://caddyserver.com/docs/build#package-support-files-for-custom-builds-for-debian-ubuntu-raspbian ).
2020-12-30 07:37:15 -07:00
## Fedora, RedHat, CentOS
Fedora or RHEL/CentOS 8:
< pre > < code class = "cmd" > < span class = "bash" > dnf install 'dnf-command(copr)'< / span >
< span class = "bash" > dnf copr enable @caddy/caddy </ span >
< span class = "bash" > dnf install caddy< / span > < / code > < / pre >
RHEL/CentOS 7:
< pre > < code class = "cmd" > < span class = "bash" > yum install yum-plugin-copr< / span >
< span class = "bash" > yum copr enable @caddy/caddy </ span >
< span class = "bash" > yum install caddy< / span > < / code > < / pre >
[**View the Caddy COPR** ](https://copr.fedorainfracloud.org/coprs/g/caddy/caddy/ )
2021-04-05 21:31:03 +02:00
## Arch Linux, Manjaro, Parabola
< pre > < code class = "cmd" > < span class = "bash" > pacman -Syu caddy< / span > < / code > < / pre >
[**View Caddy in the Arch Linux repositories** ](https://archlinux.org/packages/community/x86_64/caddy/ )
2020-12-30 07:37:15 -07:00
## Docker
< pre > < code class = "cmd bash" > docker pull caddy< / code > < / pre >
[**View on Docker Hub** ](https://hub.docker.com/_/caddy )
## DigitalOcean
[**Deploy a Caddy droplet on DigitalOcean** ](https://marketplace.digitalocean.com/apps/caddy )
2020-04-13 11:42:06 -06:00
## Linux service
2020-01-24 12:47:52 -07:00
2020-12-30 07:37:15 -07:00
Manually install Caddy as a service on Linux with these instructions.
**Requirements:**
2020-01-24 12:47:52 -07:00
2020-12-30 07:37:15 -07:00
- `caddy` binary that you [downloaded ](/download ) or [built from source ](/docs/build )
2020-04-13 11:42:06 -06:00
- `systemctl --version` 232 or newer
- `sudo` privileges
2020-01-24 12:47:52 -07:00
2020-04-13 11:42:06 -06:00
Move the caddy binary into your `$PATH` , for example:
2020-01-24 12:47:52 -07:00
< pre > < code class = "cmd bash" > sudo mv caddy /usr/bin/< / code > < / pre >
Test that it worked:
< pre > < code class = "cmd bash" > caddy version< / code > < / pre >
Create a group named `caddy` :
2020-05-17 14:09:42 -06:00
< pre > < code class = "cmd bash" > sudo groupadd --system caddy< / code > < / pre >
2020-01-24 12:47:52 -07:00
Create a user named `caddy` , with a writeable home folder:
2020-05-17 14:09:42 -06:00
< pre > < code class = "cmd bash" > sudo useradd --system \
--gid caddy \
--create-home \
--home-dir /var/lib/caddy \
--shell /usr/sbin/nologin \
--comment "Caddy web server" \
caddy< / code > < / pre >
2020-01-24 12:47:52 -07:00
2020-05-02 23:26:37 -06:00
If using a config file, be sure it is readable by the `caddy` user you just created.
2020-04-13 11:42:06 -06:00
Next, [choose a systemd service file ](https://github.com/caddyserver/dist/blob/master/init ) based on your use case:
2020-01-24 12:47:52 -07:00
2020-04-13 11:42:06 -06:00
- [**`caddy.service`** ](https://github.com/caddyserver/dist/blob/master/init/caddy.service ) if you configure Caddy with a file.
- [**`caddy-api.service`** ](https://github.com/caddyserver/dist/blob/master/init/caddy-api.service ) if you configure Caddy solely through its API.
2020-05-02 23:26:37 -06:00
They are very similar but have minor differences in the ExecStart and ExecReload commands to accommodate your workflow. Customize the file accordingly.
2020-04-13 11:42:06 -06:00
2020-05-02 23:26:37 -06:00
**Double-check the `ExecStart` and `ExecReload` directives.** Make sure the binary's location and command line arguments are correct for your installation! For example: if using a config file, change your `--config` path if it is different from our example.
2020-01-24 12:47:52 -07:00
2020-04-24 11:05:10 -06:00
The usual place to save the service file is: `/etc/systemd/system/caddy.service`
After saving your service file, you can start the service for the first time with the usual systemctl dance:
2020-01-24 12:47:52 -07:00
< pre > < code class = "cmd" > < span class = "bash" > sudo systemctl daemon-reload< / span >
< span class = "bash" > sudo systemctl enable caddy< / span >
< span class = "bash" > sudo systemctl start caddy< / span > < / code > < / pre >
Verify that it is running:
< pre > < code class = "cmd bash" > systemctl status caddy< / code > < / pre >
When running with our official service file, Caddy's output will be redirected to `journalctl` :
2020-12-31 14:01:16 -05:00
< pre > < code class = "cmd bash" > journalctl -u caddy --no-pager | less< / code > < / pre >
2020-01-24 12:47:52 -07:00
2020-04-13 11:42:06 -06:00
If using a config file, you can gracefully apply any changes:
2020-01-24 12:47:52 -07:00
< pre > < code class = "cmd bash" > sudo systemctl reload caddy< / code > < / pre >
You can stop the service with:
< pre > < code class = "cmd bash" > sudo systemctl stop caddy< / code > < / pre >
2020-04-13 11:42:06 -06:00
< aside class = "advice" >
Do not stop the service to change Caddy's configuration. Stopping the server will incur downtime. Use the reload command instead.
< / aside >
2020-12-30 07:37:15 -07:00
## Homebrew
_Note: This is a community-maintained installation method._
< pre > < code class = "cmd bash" > brew install caddy< / code > < / pre >
[**View the Homebrew formula** ](https://formulae.brew.sh/formula/caddy )
## Webi
_Note: This is a community-maintained installation method._
Linux and macOS:
< pre > < code class = "cmd bash" > curl -sS https://webinstall.dev/caddy | bash< / code > < / pre >
Windows:
< pre > < code class = "cmd" > curl.exe -A MS https://webinstall.dev/caddy | powershell< / code > < / pre >
You may need to adjust the Windows firewall rules to allow non-localhost incoming connections.
[**View on Webi** ](https://webinstall.dev/caddy )
## Chocolatey
_Note: This is a community-maintained installation method._
< pre > < code class = "cmd" > choco install caddy< / code > < / pre >
[**View the Chocolatey package** ](https://chocolatey.org/packages/caddy )
2021-02-17 11:34:28 -07:00
## Ansible
_Note: This is a community-maintained installation method._
< pre > < code class = "cmd bash" > ansible-galaxy install nvjacobo.caddy< / code > < / pre >
[**View the Ansible role repository** ](https://github.com/nvjacobo/caddy )
2021-05-10 13:43:20 -06:00
## Scoop
_Note: This is a community-maintained installation method._
< pre > < code class = "cmd" > scoop install caddy< / code > < / pre >
[**View the Scoop manifest** ](https://github.com/ScoopInstaller/Main/blob/master/bucket/caddy.json )
2021-06-30 11:16:05 +05:30
## Termux
_Note: This is a community-maintained installation method._
< pre > < code class = "cmd" > pkg install caddy< / code > < / pre >
[**View the Termux build.sh file** ](https://github.com/termux/termux-packages/blob/master/packages/caddy/build.sh )