Caddy − удобный и безопасный веб-сервер, «из коробки» поддерживающий автоматическое получение и обновление SSL-сертификатов от Let’s Encrypt. Для настройки в Caddy используется простой конфигурационный файл, который позволяет легко запускать сайты. Чтобы сайт на Caddy заработал, достаточно указать его доменное имя и путь к каталогу с его файлами. Этого хватит для того, чтобы веб-сервер начал обслуживание сайта, используя протокол HTTPS.
В настоящем руководстве рассмотрим, как производится запуск нескольких сайтов при помощи Caddy на виртуальном выделенном сервере, работающем под управлением Debian 12.
В качестве примера мы настроим на сервере два сайта − your-site-name.ru
и your-site-name.store
. Чтобы эти домены были доступны с нашей виртуальной машины, необходимо настроить A-запись каждого из сайтов таким образом, чтобы она содержала IP-адрес сервера, на котором будут располагаться сайты. Сделать это можно либо во вкладке Домены
личного кабинета, либо в панели управления провайдера, где зарегистрированы ваши сайты.
Установка Caddy на Debian 12
Поскольку Caddy не содержится в стандартном репозитории Debian, для его установки необходимо добавить в систему внешний репозиторий Caddy. Чтобы это сделать, во-первых, установите в систему пакеты, которые позволят подготовить систему к добавлению внешних репозиториев:
$ sudo apt install debian-keyring debian-archive-keyring apt-transport-https curl
При помощи данной команды производится инсталляция следующих пакетов:
debian-keyring
− набор доверенных GPG-ключей разработчиков Debian, который используется для проверки подлинности пакетов;debian-archive-keyring
− пакет, содержащий ключи для проверки подлинности репозиториев Debian, без которого нельзя безопасно обновлять систему или добавлять сторонние репозитории;apt-transport-https
− пакет, с помощью которого производится добавление поддержки протокола HTTPS дляapt
, что необходимо для подключения защищённых репозиториев;curl
− утилита для загрузки данных по HTTP, HTTPS или с использованием каких-либо других протоколов.
Чтобы система могла доверять пакетам из внешнего репозитория Caddy, при помощи следующей команды добавьте GPG-ключ:
$ 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
Затем обновите списки пакетов, чтобы система узнала о том, что новый репозиторий добавлен:
$ sudo apt update
И наконец, установите непосредственно Caddy:
$ sudo apt install caddy
В результате, в систему будет проинсталлирован веб-сервер Caddy и создана служба под именем caddy
, которая будет автоматически запущена и установлена в автозагрузку. Проверить состояние службы можно командой:
$ systemctl status caddy

Запуск нескольких сайтов на Caddy
Для запуска нескольких сайтов на Cadd необходимо создать каталоги для каждого из них. В нашем примере мы используем две команды для создания двух каталогов для двух наших доменов:
$ sudo mkdir -p /var/www/your-site-name.ru
$ sudo mkdir -p /var/www/your-site-name.store
Затем в первом из этих каталогов создайте файл стартовой страницы первого сайта:
$ sudo nano /var/www/your-site-name.ru/index.html
После чего добавьте в него HTML-разметку страницы, например, такую:
<!DOCTYPE html>
<html>
<head>
<title>Caddy Page</title>
</head>
<body>
<h1>This is your-site-name.ru</h1>
</body>
</html>
Закройте файл, сохранив внесённые в него изменения, и произведите аналогичные действия для следующего домена. А именно, создайте HTML-файл:
$ sudo nano /var/www/your-site-name.store/index.html
И наполните его соответствующим содержимым:
<!DOCTYPE html>
<html>
<head>
<title>Caddy Page</title>
</head>
<body>
<h1>This is your-site-name.store</h1>
</body>
</html>
Далее, внесите необходимые изменения в конфигурацию веб-сервера. Для чего откройте для редактирования файл Caddyfile
:
$ sudo nano /etc/caddy/Caddyfile
И приведите его к подобному виду:
your-site-name.ru {
root * /var/www/your-site-name.ru
file_server
}
your-site-name.store {
root * /var/www/your-site-name.store
file_server
}
В нашем случае данный файл состоит из двух блоков − your-site-name.ru
и your-site-name.store
. Каждый из этих блоков содержит полный путь к директории, в которой расположены файлы сайта, а также параметр file_server
, который включает отдачу статических файлов, таких как HTML, CSS или JS. Таким образом, оба наших сайта имеют собственную корневую директорию и будут доступны с использованием протокола HTTPS благодаря встроенной поддержке Let’s Encrypt. Сам же веб-сервер Caddy будет слушать порты 80 и 443, а также самостоятельно выпустит и будет обновлять сертификаты.
Для того, чтобы внесённые в Caddyfile
изменения настроек были применены, перезапустите конфигурацию сервиса Caddy:
$ sudo systemctl reload caddy
При этом, если ваша система защищена брандмауэром UFW, добавьте в него правило, разрешающее доступ к вашему серверу по протоколу HTTPS:
$ sudo ufw allow https
В результате оба наших сайта теперь будут доступны, в чём можно убедиться, перейдя в браузере по соответствующей ссылке.

В нашем примере мы проверяем доступность настраиваемых доменов, переходя на https://your-site-name.ru
и https://your-site-name.store
.
