Сегодня расскажем о том, как установить и настроить Caddy на Ubuntu, а также использовать Caddy с собственным сертификатом SSL.
Caddy – reverse proxy (реверс-прокси) и веб-сервер, написанный на языке Go, отличительными особенностями которого являются простота конфигурации и автоматическое получение сертификатов SSL без необходимости настройки дополнительного ПО.
Установка Caddy на Ubuntu
В этой статье мы будем рассматривать установку Caddy на дистрибутив Linux Ubuntu. Caddy на Ubuntu 24.04 доступен для установки из репозиториев Ubuntu.
Обновите базу данных apt командой:
sudo apt updateПосле чего установите сервер Caddy:
sudo apt install caddyЗатем проверьте успешность установки, выполнив команду проверки версии:
caddy versionПример корректного вывода:
2.6.2Настройка Caddy
Два основных метода для настройки прокси-сервера Caddy – Caddyfile+CLI и JSON+API. Caddyfile+CLI хорошо подходит для ручной настройки и покрывает большую часть функционала Caddy, позволяя легко решать рядовые задачи, но сложнее автоматизируется. В то же время использование JSON+API позволяет легко автоматизировать и масштабировать конфигурацию, а также более тонко ее настраивать.
В рамках данной статьи мы будем использовать Caddyfile в приведенных примерах, поскольку его достаточно для решения рядовых задач и он проще в освоении.
Настройку можно производить как в основном файле Caddyfile, так и создавая отдельные файлы для каждого сайта. В рамках данной статьи все изменения будут производиться в основном файле Caddyfile.
Статический сайт
В качестве примера рассмотрим развертывание статического сайта на домене static.betutorial.ru. Архив с примером статического сайта доступен по ссылке.
Создайте директорию под сайт:
sudo mkdir -p /var/www/mysiteПосле чего перейдите в нее командой:
cd /var/www/mysiteЗагрузите архив с файлами сайта в директорию командой:
wget https://cp.beget.com/shared/mSEkKCH1S2dHZhnBnUNhVGod5JXQUJHB/static_site_sample.tgzРаспакуйте и удалите архив:
tar xf static_site_sample.tgz --strip 1
rm static_site_sample.tgzСкорректируйте владельца директории /var/www:
sudo chown -R www-data:www-data /var/wwwЗатем перейдите в директорию /etc/caddy/:
cd /etc/caddyОткройте файл конфигурации удобным вам текстовым редактором, например, vim:
sudo vim CaddyfileПосле чего добавьте в него следующий блок:
domain {
# Директория сайта
root * /var/www/mysite
# Включение отдачи статики
file_server
}domain в конфигурации измените на используемое вами доменное имя.
Затем сохраните файл и закройте редактор. Выполните команду проверки конфигурации:
sudo caddy validateЕсли ошибок не возникло, обновите конфигурацию Caddy командой:
sudo caddy reloadПосле чего проверьте работу сайта по указанному домену – если вы использовали файлы из примера, должна отобразиться следующая страница:

PHP
Веб-сервер Caddy может выступать в качестве реверс-прокси для различных приложений, в том числе для написанных на PHP – для них есть специальная директива php_fastcgi, упрощающая настройку проксирования. В качестве примера php-приложения рассмотрим процесс развертывания сайта на WordPress. Для этого установите php-fpm и необходимые модули:
sudo apt update
sudo apt install php-fpm
sudo apt install php php-mysql php-mbstring php-bcmath php-zip php-gd php-curl php-xmlТакже потребуется установить сервер MySQL.
sudo apt install mysql-serverСоздайте директорию под сайт командой:
sudo mkdir -p /var/www/wp1Загрузите файлы сайта и дамп базы данных в созданную директорию удобным вам способом, после чего измените владельца файлов командой:
sudo chown -R www-data:www-data /var/www/wp1А также скорректируйте права:
sudo chmod -R 750 /var/www/wp1Сгенерируйте и сохраните в переменную случайный пароль командой:
export PASS=$(openssl rand -base64 20); echo $PASSСкопируйте полученную строку и сохраните ее – она потребуется впоследствии при настройке подключения к базе данных.
Для создания БД с названием wp1 и пользователя wp1 с правами на управление ею выполните следующие команды:
mysql -u root -e 'create database wp1'
mysql -u root -e "create user wp1 identified with mysql_native_password by '$PASS'"
mysql -u root -e "grant all privileges on wp1.* to wp1"После чего загрузите дамп БД вашего сайта на сервер удобным вам способом и импортируйте его в созданную БД командой:
mysql -u wp1 -p$PASS wp1 < путь_до_файла_дампаПосле успешного импорта дамп БД с сервера можно удалить.
rm путь_до_файла_дампаОтредактируйте конфигурационный файл /var/www/wp1/wp-config.php, указав в нем данные для подключения к БД:
DB_NAME– название БД, в примере выше –wp1;DB_USER– имя созданного пользователя БД, в примере выше –wp1;DB_PASSWORD– пароль, сгенерированный для пользователя БД.
Перейдите в директорию /etc/caddy командой:
cd /etc/caddyОткройте конфигурационный файл Caddyfile удобным вам текстовым редактором, например, vim:
sudo vim CaddyfileПосле чего добавьте новый блок следующего вида:
domain.name {
file_server
encode gzip
root * /var/www/wp1
php_fastcgi unix//run/php/php-fpm.sock
# Опциональное логирование
log {
output file /var/log/caddy/access.log
format console
}
@disallowed {
path /xmlrpc.php
path *.sql
path /wp-content/uploads/*.php
}
rewrite @disallowed '/index.php'
}
domain.name потребуется изменить на используемое вами доменное имя.
Сохраните файл и закройте редактор. Проверьте корректность конфигурации командой:
sudo caddy validateЕсли ошибок не возникло – перезагрузите Caddy для использования новой конфигурации командой:
sudo caddy reloadЗатем проверьте работу сайта.
Использование Caddy с собственным сертификатом SSL
В некоторых ситуациях может потребоваться установка собственного сертификата SSL – например, когда сайт находится под защитой Cloudflare и использует режим Full или Full(strict). Для таких случаев в Caddy есть директива tls, позволяющая изменить стандартное поведение для SSL-сертификатов.
Использование самоподписанного сертификата
Caddy поддерживает автоматическую генерацию и использование самоподписанного сертификата, что может быть полезно, например, при использовании режима Full в Cloudflare. Для этого добавьте в блок сайта директиву tls internal. На примере блока domain.name:
domain.name {
tls internal
}После чего перезапустите Caddy, выполнив следующую команду, находясь в директории конфигурационного файла:
sudo caddy reloadУстановка собственного сертификата
Для установки собственного сертификата потребуется загрузить файлы сертификата и ключа на сервер, поместить их в директорию, доступную для чтения Caddy, и настроить сайт на их использование.
Рассмотрим настройку на примере установки сертификата Cloudflare. Сгенерируйте сертификат в личном кабинете Cloudflare:

На следующей странице скопируйте сертификат в формате PEM и сохраните его в файл /etc/ssl/certs/certificate.pem на сервере. Также скопируйте ключ и сохраните его в файл /etc/ssl/private/key.pem на сервере.
Перейдите в директорию /etc/caddy:
cd /etc/caddyОткройте Caddyfile удобным вам текстовым редактором и отредактируйте конфигурацию, добавив в нее следующую строку в блок сайта:
domain.name {
tls /etc/ssl/certs/certificate.pem /etc/ssl/private/key.pem
}После чего перезапустите Caddy, выполнив следующую команду, находясь в директории конфигурационного файла:
sudo caddy reloadИ проверьте работу сайта.
Готово! Caddy – обратный прокси-сервер на Ubuntu – установлен и готов к использованию. В данной статье мы рассмотрели установку reverse proxy, а также несколько примеров использования, однако функционал данного ПО не ограничивается описанным в данной статье. Более подробную информацию о доступных опциях и способах настройки вы можете найти в документации Caddy.
Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить эту статью или наши продукты с коллегами по цеху и сотрудниками Бегета – ждем вас в нашем сообществе в Telegram.