Caddy − веб-сервер и реверс-прокси с автоматической настройкой HTTPS. По умолчанию он использует Let’s Encrypt для выдачи и обновления сертификатов. При этом настройка веб-сервера проста благодаря удобному формату основного файла конфигурации − Caddyfile. Caddy часто выбирают за безопасность, надёжность и минимальные требования к настройке. В настоящем руководстве разберём, как установить веб-сервер Caddy на CentOS Stream 9 и запустить на Caddy простейший статический сайт.
Как установить Caddy на CentOS Stream 9
Поскольку Caddy недоступен для установки из стандартного репозитория CentOS Stream, его инсталляцию можно произвести через сторонний репозиторий COPR − сервис для сторонних репозиториев пакетов в Fedora и CentOS/Red Hat. Чтобы воспользоваться данным сервисом, установите модуль для работы с ним:
$ sudo dnf install 'dnf-command(copr)'
Затем подключите репозиторий COPR, в котором лежит готовый RPM-пакет Caddy:
$ sudo dnf copr enable @caddy/caddy
После чего установите непосредственно Caddy:
$ sudo dnf install caddy
В процессе инсталляции пакетный менеджер создаёт службу caddy.service
, которую необходимо запустить по окончании установки:
$ sudo systemctl start caddy
Также включите автозапуск службы Caddy при старте системы:
$ sudo systemctl enable caddy
Чтобы удостовериться в работоспособности службы, выведите на экран её состояние:
$ systemctl status caddy
Если служба работает корректно, в выводе команды не будет сообщений об ошибках, но при этом будут присутствовать записи о том, что служба запущена и установлена в автозагрузку:

Чтобы разрешить входящие HTTP-запросы, добавьте соответствующее правило в брандмауэр firewalld:
$ sudo firewall-cmd --permanent --add-service=http
Затем перезагрузите брандмауэр:
$ sudo firewall-cmd --reload
После чего откройте браузер и в строке навигации укажите IP-адрес вашей виртуальной машины, чтобы убедиться в работоспособности Caddy.

В результате в браузере должна открыться дефолтная страница Caddy с сообщением о работоспособности веб-сервера.
Настройка статического веб-сайта на Caddy
При установке дефолтная страница Caddy помещается в /usr/share/caddy
. В нашем примере мы оставим её без изменений и создадим новый каталог для нового веб-сайта:
$ sudo mkdir -p /var/www/html
Затем нужно будет изменить владельца и группу данного каталога на пользователя caddy
и группу caddy
, чтобы служба Caddy имела доступ к нему:
$ sudo chown caddy:caddy /var/www/html
Далее, используя текстовый редактор, создайте и откройте файл стартовой страницы сайта:
$ sudo vi /var/www/html/index.html
После чего добавьте в него html-разметку стартовой страницы сайта:
<html>
<head>
<title>
Your Site on Caddy
</title>
</head>
<body>
<h1>
Your-site-name.ru Works On Caddy!!!
</h1>
</body>
</html>
Затем измените основной конфигурационный файл Caddy:
$ sudo vi /etc/caddy/Caddyfile
В данном случае укажите корневую директорию создаваемого веб-сайта в качестве значения для параметра root
:
root * /var/www/html
После чего перезапустите службу Caddy:
$ sudo systemctl restart caddy
Далее на локальной рабочей станции снова запустите браузер и проверьте работоспособность вашего сайта, для чего перейдите на его стартовую страницу, используя либо IP-адрес VPS, либо доменное имя вашего сайта, направленное на этот IP с помощью A-записи.

Настройка HTTPS-доступа к сайту
Для настройки доступа к сайту с применением протокола HTTPS достаточно будет внести некоторые изменения в конфигурационный файл Caddy. По умолчанию Caddy устанавливает для настраиваемого веб-сайта шифрование при помощи TLS-сертификатов, получаемых через Let’s Encrypt, хотя может использовать для этого и другого провайдера. При этом, чтобы ваш сайт был доступен по HTTPS, он должен иметь A-запись, привязанную к IP-адресу вашей виртуальной машины. Другими словами, для дальнейшей настройки необходимо наличие у сайта доменного имени.
Чтобы настроить HTTPS-доступ, откройте конфигурационный файл Caddy:
$ sudo vi /etc/caddy/Caddyfile
В нашем примере содержимое данного файла будет выглядеть следующим образом:
your-site-name.ru {
root * /var/www/html
file_server
tls your-email@your-site-name.ru
}
Здесь:
- блок
your-site-name.ru {...}
говорит о том, что веб-сервер Caddy будет обслуживать запросы, приходящие на доменyour-site-name.ru
; root * /var/www/html
− корневая директория сайта;- параметр
file_server
активирует встроенный файловый сервер, который отвечает за выдачу статических файлов, таких как HTML, CSS, JS и другие, по запросам пользователей; tls your-email@your-site-name.ru
− данный параметр указывает веб-серверу на необходимость использования HTTPS с TLS-сертификатом, по умолчанию получаемым через Let’s Encrypt, а также задаёт e-mail для регистрации TLS-сертификата.
Закройте файл конфигурации с сохранением внесённых изменений и перезагрузите службу Caddy:
$ sudo systemctl restart caddy
При перезапуске Caddy запустит процедуру получения и установки сертификата от Let’s Encrypt для указанного домена. В результате будет настроен доступ через HTTPS и автоматическое обновление TLS-сертификата.
Затем добавьте в брандмауэр правило, которое разрешает доступ к виртуальному серверу по протоколу HTTPS:
$ sudo firewall-cmd --permanent --add-service=https
После чего перезапустите брандмауэр:
$ sudo firewall-cmd --reload
И, наконец, для проверки доступа откройте браузер и перейдите по ссылке вида https://your-site-name.ru
. Естественно, вместо your-site-name.ru
укажите доменное имя вашего сайта.
