
Caddy − лёгкий и быстрый веб-сервер, написанный на Go. Функционал Caddy включает в себя автоматический HTTPS, а также поддержку HTTP/2 и HTTP/3. Кроме того, Caddy обладает возможностью функционировать в качестве как статического сервера, так и реверс-прокси или балансировщика нагрузки. Настройка конфигурации в Caddy производится путём внесения изменений в Caddyfile
, что сильно её упрощает, а встроенный сертификат от Let’s Encrypt избавляет от ручной настройки SSL. В статье рассмотрим, как производится установка веб-сервера Caddy на виртуальный сервер, работающий под управлением Debian 12.
Установка веб-сервера Caddy
Актуальная версия Caddy не входит в стандартные репозитории Debian. Поэтому установить последний стабильный релиз с поддержкой автоматического HTTPS, полной конфигурацией и модульной архитектурой можно только через его официальный репозиторий.
Исходя из этого, во-первых, необходимо установить пакеты, обеспечивающие работу менеджера APT с HTTPS и позволяющие добавлять внешние репозитории с использованием подписей. Чтобы это сделать, запустите команду:
$ sudo apt install debian-keyring debian-archive-keyring apt-transport-https curl
Затем скачайте и установите GPG-ключ репозитория Caddy. Данный ключ нужен, чтобы менеджер APT использовал его для проверки подлинности пакетов из этого репозитория:
$ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
Далее добавьте репозиторий Caddy в вашу систему:
$ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
После чего обновите индекс пакетов APT, чтобы система увидела новый репозиторий Caddy и его содержимое, и установите сам веб-сервер Caddy из только что подключённого официального репозитория:
$ sudo apt update && sudo apt install caddy
В результате установки в системе будет создан и запущен сервис Caddy. Для просмотра его состояния используйте команду:
$ systemctl status caddy
Из вывода команды видно, что служба работает и установлена в автозагрузку.

Чтобы проверить работоспособность веб-сервера, добавьте в брандмауэр UFW правило, которое разрешает подключение к системе по протоколу HTTP:
$ sudo ufw allow http
После чего на своём локальном компьютере откройте браузер и перейдите по ссылке http://vash-domain.ru
, где vash-domain.ru
замените на IP-адрес вашего виртуального сервера или на доменное имя, привязанное к данному IP-адресу через A-запись.

Если веб-сервер работает корректно и у вас есть к нему доступ, в браузере откроется тестовая страница Caddy.
Установка сайта на Caddy
Далее разберём, как запустить свой сайт на веб-сервере Caddy. Для начала создайте каталог, в котором будут содержаться файлы сайта:
$ sudo mkdir -p /var/www/html
Поскольку systemd-сервис Caddy запускается от имени пользователя caddy
, владельцами данного каталога необходимо сделать пользователя caddy
и группу caddy
:
$ sudo chown caddy:caddy /var/www/html/
Затем создайте файл стартовой страницы сайта:
$ sudo nano /var/www/html/index.html
В нашем примере его содержимое будет следующим:
<html>
<head>
<title>Your website on Caddy!</title>
</head>
<body>
<h1>VASH-DOMAIN.RU</h1>
<p>This is the start page of your website.</p>
</body>
</html>
После чего закройте файл index.html
с сохранением изменений и отредактируйте конфигурационный файл Caddy:
$ sudo nano /etc/caddy/Caddyfile
В нём необходимо изменить путь к каталогу, содержащему файлы сайта. В нашем примере это /var/www/html
:
root * /var/www/html
Чтобы применилась новая настройка, сохраните изменения в файле Caddyfile
, закройте его и перезапустите службу Caddy:
$ sudo systemctl restart caddy
Затем проверьте доступность вашего сайта, подключившись к нему из браузера.

Настройка HTTPS
Веб-сервер Caddy предоставляет встроенную поддержку автоматической настройки HTTPS. Данный функционал упрощает процесс получения и обновления TLS-сертификатов. Все настройки конфигурации веб-сервера, включая выбор протокола для доступа, содержатся в файле Caddyfile
, поэтому для включения шифрования достаточно внести соответствующие изменения в данный файл:
$ sudo nano /etc/caddy/Caddyfile
Для обеспечения доступа к сайту по более безопасному протоколу и включения перенаправления HTTP-трафика на HTTPS содержимое файла Caddyfile
должно быть следующим:
vash-domain.ru {
root * /var/www/html
file_server
tls vash-adres@vash-domain.ru
}
В данном случае:
vash-domain.ru
− указывает, что блок применяется ко всем запросам на доменvash-domain.ru
;file_server
− директива говорит веб-серверу раздавать статические файлы из каталога, указанного в срокеroot
;tls vash-adres@vash-domain.ru
− параметр говорит о включении HTTPS для сайта, а именно, об автоматическом получении сертификата от Let’s Encrypt с применением адреса электронной почтыvash-adres@vash-domain.ru
, который будет использоваться для получения уведомлений, например, об обновлении сертификата или о приближающемся истечении срока его действия.
Для применения новой настройки после сохранения изменений в файле Caddyfile
перезапустите сервис caddy
:
$ sudo systemctl restart caddy
Теперь добавьте протокол HTTPS в список разрешённых сервисов брандмауэра UFW:
$ sudo ufw allow https
Чтобы убедиться в том, что правило присутствует в списке межсетевого экрана, используйте команду:
$ sudo ufw status
Удостоверьтесь, что вывод данной команды содержит соответствующую строку, которая указывает на разрешающее правило для порта 443.

И наконец, проверьте доступ по HTTPS, перейдя в браузере по ссылке https://vash-domain.ru
, где укажите доменное имя вашего сайта вместо vash-domain.ru
.
