// Engineering Log
Что такое Caddy: веб-сервер с автоматическим HTTPS простыми словами
Опубликовано 22.09.2026
// Быстрый маршрут
Эта статья относится к теме Деплой и стабильная работа.
Что такое Caddy
Caddy — веб-сервер и обратный прокси, который сам получает и продлевает TLS-сертификаты для ваших доменов. Достаточно указать в конфигурации имя сайта, и Caddy откроет его по HTTPS: без certbot, заданий cron и ручной настройки шифрования.
Проект написан на Go и распространяется под лицензией Apache 2.0. Актуальная версия на сентябрь 2026 года — 2.11.4 (июнь 2026). Caddy поставляется одним исполняемым файлом без внешних зависимостей; есть официальный репозиторий пакетов для Debian и Ubuntu и образ Docker caddy.
Как работает автоматический HTTPS
Для публичного домена Caddy получает сертификат сам, если выполнены три условия: DNS-записи A или AAAA домена указывают на сервер, порты 80 и 443 доступны из интернета, а у Caddy есть право их слушать. По умолчанию используются два центра сертификации с протоколом ACME — Let’s Encrypt и ZeroSSL: если Let’s Encrypt не выдал сертификат, Caddy пробует ZeroSSL. Продление происходит заранее и без участия администратора.
Сертификаты и ключи хранятся в каталоге данных Caddy. Он должен быть постоянным и доступным для записи: если каталог теряется, например при пересоздании контейнера без тома, Caddy запрашивает сертификаты заново и может упереться в лимиты центра сертификации.
Для имён, которые не могут получить публичный сертификат, — localhost, внутренних адресов — Caddy выпускает сертификаты собственным локальным центром сертификации и пытается добавить его корневой сертификат в системное хранилище доверенных. Если прав на это не хватает (в контейнере или под непривилегированным пользователем), корневой сертификат устанавливают командой caddy trust или копируют вручную.
Установка
На Debian и Ubuntu Caddy ставится из официального репозитория:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
sudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddyПосле установки Caddy работает как служба systemd caddy, конфигурация лежит в /etc/caddy/Caddyfile. Изменения применяются командой sudo systemctl reload caddy без разрыва текущих соединений.
Caddyfile: обратный прокси за три строки
Приложение слушает порт 3000 на том же сервере, и его нужно открыть по адресу app.example.ru:
app.example.ru {
reverse_proxy localhost:3000
}Этого достаточно: Caddy получит сертификат, будет перенаправлять HTTP на HTTPS и передавать запросы приложению. Несколько сервисов описываются отдельными блоками:
app.example.ru {
reverse_proxy localhost:3000
}
api.example.ru {
reverse_proxy localhost:8000
}
www.example.ru {
redir https://example.ru{uri} permanent
}Статический сайт со сжатием ответов:
example.ru {
root * /var/www/example
file_server
encode gzip zstd
}Балансировка между несколькими экземплярами приложения задаётся в той же директиве:
app.example.ru {
reverse_proxy 10.0.0.11:8080 10.0.0.12:8080 {
lb_policy round_robin
health_uri /health
}
}Перед применением конфигурацию полезно проверить командой caddy validate --config /etc/caddy/Caddyfile, а привести к единому виду — caddy fmt.
HTTPS при локальной разработке
Для разработки на своём компьютере используйте localhost:
localhost {
reverse_proxy localhost:3000
}Caddy выдаст сертификат локального центра сертификации, и браузер откроет https://localhost без предупреждений, если корневой сертификат установлен. Для собственных внутренних имён в блок сайта добавляют строку tls internal.
Не придумывайте для тестов имена в публичных зонах вроде app.dev: .dev — настоящий домен верхнего уровня, сертификат для чужого имени не выпустится, а браузеры требуют для всей зоны .dev только HTTPS.
Caddy в Docker и CI/CD
Образ caddy удобно подключать к проекту через Docker Compose: Caddyfile хранится в репозитории вместе с приложением, а каталог данных выносится в именованный том, чтобы сертификаты переживали пересоздание контейнера. В пайплайне сборки нет шагов для получения сертификатов: достаточно проверить конфигурацию caddy validate и перезагрузить её после выкладки.
Типичные ошибки
- Закрыт порт 80. Даже если сайт работает только по HTTPS, порт 80 нужен для проверки владения доменом и перенаправления. Закрыв его межсетевым экраном, вы остановите выпуск и продление сертификатов.
- DNS указывает не на тот сервер. Пока A-запись ведёт на старый хостинг или на CDN, сертификат не выпустится. Сначала переключите DNS, потом запускайте Caddy.
- Потерянный каталог данных. Контейнер без тома при каждом пересоздании запрашивает сертификаты заново.
- Порты заняты другим сервером. Если на машине уже работает nginx или Apache на 80 и 443, Caddy не запустится; два веб-сервера на одних портах не уживаются.
- Ожидание встроенной защиты от всего. Ограничение частоты запросов и защита от ботов в стандартную сборку не входят и добавляются сторонними модулями.
Когда выбирать Caddy
Caddy хорош, когда на одном сервере нужно быстро опубликовать несколько сайтов или сервисов по HTTPS и не хочется обслуживать certbot и длинные конфигурации. Если нужна сложная балансировка с проверками и ограничениями или TCP-прокси, смотрите HAProxy; если инфраструктура уже построена на nginx и его модулях — Nginx; если сервисы постоянно появляются и исчезают в контейнерах — Traefik. Сравнение всех пяти серверов — в статье «Caddy vs. Traefik vs. HAProxy vs. Nginx vs. Apache».
// Похожая задача
Если у вас похожая ситуация
Эта статья относится к одной из рабочих тем. Можно продолжить чтение по теме, перейти на главную, чтобы понять, чем я занимаюсь, или сразу открыть услуги.
Тема статьи
Деплой и стабильная работа
Docker, CI/CD, релизы, мониторинг, observability и разбор инцидентов.
Часто с этим приходят
- Настроить деплой без ручных действий и хаоса
- Подключить мониторинг, алерты и базовую observability
- Разобрать инциденты и стабилизировать production
// Следующий шаг
Если вам нужна не только статья, а помощь по этой теме, удобнее сразу перейти в услугу. Главная и подборка материалов остаются рядом.
Открыть услуги// Reviews
Отзывы по теме
Михаил - великолепный исполнитель! Чувствуется, что человек с огромным опытом. Работа была сделано четко, в срок. Пришлось повозиться из-за неидеальности проекта, который устанавливали на сервер, но Михаил внимательно и вдумчиво подсказывал как и что сделать. В итоге все заработало! Всем рекомендую для кого, важно качество работы!
Михаил - великолепный исполнитель! Чувствуется, что человек с огромным опытом. Работа была сделано четко, в срок. Пришлось повозиться из-за неидеальности проекта, который устанавливали на сервер, но Михаил внимательно и …
// Contact
Нужна помощь?
Свяжись со мной и я помогу решить проблему
Написать в TelegramОтвечаю в течение рабочего дня (03:00–13:00 GMT)
Или оставьте заявку здесь:
// Related