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.

