Сегодня расскажем о том, как установить и настроить 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.