Caddy — веб-сервер с авто TLS, обзор и настройка | Глоссарий FREEHOSTING

Caddy

Caddy Web Server
Caddy — Современный веб-сервер на Go с автоматическим выпуском Let's Encrypt сертификатов и лаконичным конфигом Caddyfile. Совмещает функции HTTP-сервера, reverse-proxy и менеджера TLS из коробки.

Определение простыми словами

Caddy — это HTTP/HTTPS-сервер, который из коробки получает и продлевает TLS-сертификаты по протоколу ACME. Не нужно отдельно ставить certbot, писать cron-задачи и руками править конфиг — достаточно указать домен. Внутри: Go-биндинги, HTTP/2 и HTTP/3 (QUIC) включены по умолчанию, reverse-proxy на каждый upstream, сжатие, кэш, базовая авторизация. Работает похоже на nginx, но с упором на простоту, а не на максимальную производительность под высокой нагрузкой.

Конфигурация описывается в Caddyfile — текстовом формате с минимумом синтаксиса, либо в JSON через Admin API. Поддержка TLS 1.3, OCSP-stapling, On-Demand TLS для мультидоменных проектов, а также интеграция с DNS-провайдерами для wildcard-сертификатов.

Сравнение

Сервер Авто-TLS HTTP/3 Конфиг
Caddy Из коробки Да, по умолчанию Caddyfile / JSON
Nginx Через certbot С 1.25, нужна сборка nginx.conf
Traefik Из коробки Да YAML / labels Docker
Apache Через mod_md Нет httpd.conf

Кейсы использования

  • Reverse-proxy для нескольких контейнеров с автоматическими сертификатами на каждый домен.
  • Локальный HTTPS для разработки — Caddy сам выпускает локальный CA через mkcert.
  • Раздача статики и SPA с поддержкой fallback на index.html.
  • Площадка для пользовательских доменов (whitelabel) — On-Demand TLS выпустит сертификат при первом запросе.
  • Негативный сценарий: на десятках тысяч запросов в секунду Caddy уступает nginx по чистой производительности и потреблению CPU. На крупных продакшен-инсталляциях с большим RPS лучше связка nginx + HAProxy.

Технические детали

Установка и минимальный Caddyfile с reverse-proxy и автоматическим TLS:

apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' > /etc/apt/sources.list.d/caddy-stable.list
apt update && apt install caddy
cat > /etc/caddy/Caddyfile <<EOF
example.com {
    encode zstd gzip
    reverse_proxy localhost:3000
    log {
        output file /var/log/caddy/access.log
    }
}
EOF
systemctl reload caddy

После reload Caddy сам выпустит сертификат через Let’s Encrypt и будет продлевать его за 30 дней до истечения. Логи DNS-валидации и ACME-челленджей пишутся в journalctl -u caddy.

Частые вопросы

Чем Caddy лучше nginx?

Главное преимущество — автоматический выпуск и продление TLS-сертификатов без сторонних утилит. Конфиг короче, HTTP/3 включён по умолчанию. Проигрывает nginx на сверхвысоких RPS.

Можно ли использовать Caddy с Docker?

Да, есть официальный образ caddy. Конфиг монтируется через volume, либо генерируется динамически через Caddy API. Часто связку Caddy + Docker предпочитают для лёгких микросервисов.

Где Caddy хранит сертификаты?

По умолчанию в /var/lib/caddy/.local/share/caddy/certificates. При переустановке имеет смысл сохранить эту папку, чтобы не упереться в rate-limit Let's Encrypt.