// 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 ставится из официального репозитория:

bash
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:

caddyfile
app.example.ru {
    reverse_proxy localhost:3000
}

Этого достаточно: Caddy получит сертификат, будет перенаправлять HTTP на HTTPS и передавать запросы приложению. Несколько сервисов описываются отдельными блоками:

caddyfile
app.example.ru {
    reverse_proxy localhost:3000
}

api.example.ru {
    reverse_proxy localhost:8000
}

www.example.ru {
    redir https://example.ru{uri} permanent
}

Статический сайт со сжатием ответов:

caddyfile
example.ru {
    root * /var/www/example
    file_server
    encode gzip zstd
}

Балансировка между несколькими экземплярами приложения задаётся в той же директиве:

caddyfile
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:

caddyfile
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

Отзывы по теме

Михаил - великолепный исполнитель! Чувствуется, что человек с огромным опытом. Работа была сделано четко, в срок. Пришлось повозиться из-за неидеальности проекта, который устанавливали на сервер, но Михаил внимательно и вдумчиво подсказывал как и что сделать. В итоге все заработало! Всем рекомендую для кого, важно качество работы!

Михаил - великолепный исполнитель! Чувствуется, что человек с огромным опытом. Работа была сделано четко, в срок. Пришлось повозиться из-за неидеальности проекта, который устанавливали на сервер, но Михаил внимательно и …

N_Konstantin

Настройка vps, настройка сервера

10.10.2025 · ★ 5/5

Освоившийся покупатель

// Contact

Нужна помощь?

Свяжись со мной и я помогу решить проблему

Написать в Telegram

Отвечаю в течение рабочего дня (03:00–13:00 GMT)

Или оставьте заявку здесь:

Подтвердите, что вы не бот.

Написать и получить быстрый ответ