MAATRIX / Блог / Caddy с авто-SSL на Ubuntu 24.04: пошаговая установка

Caddy с авто-SSL на Ubuntu 24.04: пошаговая установка

Caddy с авто-SSL на Ubuntu 24.04: пошаговая установка

MAATRIX

Если не хочется возиться с certbot, путями к сертификатам и таймерами продления, есть веб-сервер, который делает всё это сам. Установить Caddy с авто-SSL на Ubuntu 24.04 — самый быстрый способ получить HTTPS из коробки: сервер сам выпускает сертификат Let's Encrypt при первом запросе и сам продлевает его. Ниже — пошаговая установка с готовыми командами. Главная идея Caddy — безопасность по умолчанию. Там, где Nginx требует отдельно поставить certbot, выпустить сертификат и вручную дописать блок с путями к нему, Caddy делает всё сам: при первом обращении к домену он проходит проверку ACME, получает сертификат и поднимает HTTPS. Автопродление встроено в сам сервер и происходит заблаговременно, поэтому классическая ситуация «сайт лёг ночью, потому что протух сертификат» с Caddy практически исключена. Второе достоинство — лаконичность: рабочий HTTPS-сайт или реверс-прокси умещается в несколько строк конфига, тогда как эквивалент на Nginx займёт пару десятков. Чем короче конфиг, тем меньше мест, где можно ошибиться, — а на свежей Ubuntu 24.04 весь процесс от установки до рабочего HTTPS занимает считаные минуты.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Шаг 1. Подготовка сервера Ubuntu 24.04

Начните с чистого VPS с root-доступом и публичным IP. Для роли веб-сервера и реверс-прокси Caddy нетребователен: 1 ядро и 1 ГБ RAM с запасом покрывают отдачу статики и проксирование, а ресурсы наращивают под то, что стоит за Caddy.

Обновите систему до актуального состояния:

apt update && apt upgrade -y

Критично для авто-SSL, чтобы время на сервере было точным, — иначе проверка сертификатов может сбоить. В Ubuntu 24.04 синхронизация обычно уже включена через systemd-timesyncd, но убедиться стоит:

timedatectl status

Локацию выбирайте по аудитории: для российских посетителей ниже пинг с RU-площадки, для доступа к зарубежным сервисам удобнее US, для Европы — UK. У MAATRIX доступны все три локации с оплатой из России картой, СБП или криптой, поэтому сервер можно разместить ближе к пользователям без иностранных платёжных средств.

Шаг 2. Настройка домена и фаервола

Авто-SSL в Caddy работает только при выполнении двух условий: домен указывает на сервер, а порты 80 и 443 открыты снаружи. Сначала убедитесь, что A-запись домена ведёт на IP вашего VPS:

dig +short example.com

Команда должна вернуть публичный IP сервера. Если запись меняли недавно, учтите задержку распространения DNS. Затем откройте порты в ufw, оставив снаружи только веб и SSH:

ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Порт 80 нужен, даже если весь сайт будет работать по HTTPS: через него идёт HTTP-проверка ACME при выпуске сертификата и редирект на HTTPS. Проверьте итоговые правила командой ufw status — без открытых 80 и 443 авто-SSL не пройдёт.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS

Шаг 3. Установка Caddy из официального репозитория

Caddy ставят из официального репозитория — так вы получаете свежую версию и готовый systemd-юнит. Подключите репозиторий и установите пакет:

apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list
apt update && apt install caddy -y

После установки сервис уже запущен и работает под своим systemd-юнитом, а значит, поднимается сам после перезагрузки VPS. Проверьте статус и версию:

systemctl status caddy
caddy version

Основной конфиг лежит в /etc/caddy/Caddyfile — именно его мы будем править. Все изменения применяются мягкой перезагрузкой, которая не рвёт активные соединения.

Шаг 4. Первый Caddyfile с авто-SSL

Теперь настроим отдачу сайта по HTTPS с автоматическим сертификатом. Для статического сайта достаточно нескольких строк. Отредактируйте /etc/caddy/Caddyfile:

example.com {
    root * /var/www/example
    file_server
    encode gzip
}

Примените конфигурацию:

systemctl reload caddy

При первом обращении к домену Caddy сам пройдёт ACME-проверку, получит сертификат Let's Encrypt, включит HTTPS и настроит редирект с 80. Никаких путей к сертификатам, таймеров продления и отдельных блоков для 80 и 443 прописывать не нужно — всё это Caddy берёт на себя. Директива encode gzip попутно включает сжатие ответов.

Разберём логику формата Caddyfile, чтобы дальше вы могли править его осознанно. Каждый блок начинается с адреса сайта — домена, для которого действуют правила. Внутри фигурных скобок перечисляются директивы: root задаёт корневую папку с файлами, file_server включает отдачу статики, encode — сжатие, reverse_proxy — проксирование на приложение. Порядок директив внутри блока Caddy определяет сам по разумным умолчаниям, поэтому думать о нём, как в Nginx, почти не приходится. Полученные сертификаты Caddy хранит в своём каталоге данных /var/lib/caddy и управляет ими сам — трогать эти файлы руками не нужно. Такая модель делает конфигурацию предсказуемой: вы описываете, что хотите отдать, а всю рутину с TLS сервер берёт на себя.

Шаг 5. Реверс-прокси на приложение

Если вместо статики нужно отдавать приложение, конфиг почти такой же короткий. Допустим, приложение слушает localhost на порту 3000:

app.example.com {
    reverse_proxy 127.0.0.1:3000
}

Эти две строки дают полноценный HTTPS-прокси с автоматическим сертификатом. Заголовки X-Forwarded-For, X-Forwarded-Proto и Host Caddy проставляет сам, в отличие от Nginx, где их прописывают руками. WebSocket тоже работает без дополнительной настройки — Caddy определяет апгрейд соединения автоматически. Не забудьте, что приложение должно слушать только localhost, чтобы снаружи к нему нельзя было подключиться в обход прокси. Примените конфиг перезагрузкой:

systemctl reload caddy

Один Caddyfile спокойно держит десятки таких блоков — по одному на каждый домен или поддомен, и каждый получает свой сертификат независимо. Поэтому добавить ещё один сайт — это ещё пара строк, а не отдельная возня с сертификатами.

Шаг 6. Проверка выпуска и обслуживание

Убедитесь, что сертификат действительно выпустился. Быстрее всего заглянуть в логи Caddy, где виден весь процесс ACME:

journalctl -u caddy --no-pager | tail -n 40

Проверьте, что сайт открывается по HTTPS и отдаёт валидный сертификат:

curl -I https://example.com

Если выпуск не прошёл, причина почти всегда в одном из трёх: домен не указывает на этот сервер, закрыт порт 80 или 443, либо вы упёрлись в недельный лимит Let's Encrypt. Последнее лечится отладкой на тестовом центре сертификации.

Обслуживание минимально. Обновляйте пакет вместе с системой через apt upgrade, держите порты закрытыми фаерволом кроме нужных, а сертификаты не трогайте — продление полностью автоматическое и происходит заблаговременно. По сути, после первичной настройки о Caddy можно забыть на месяцы. Если проект вырастет, тот же короткий Caddyfile легко масштабируется добавлением новых блоков, и всё это спокойно живёт на недорогом VPS с чистым IP, который у MAATRIX доступен с оплатой из России картой или криптой.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

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

Правда ли Caddy с авто-SSL на Ubuntu 24.04 не требует certbot?

Да, выпуск и продление сертификатов Let's Encrypt встроены в сам сервер, отдельные утилиты и таймеры не нужны.

Что нужно, чтобы сертификат выпустился с первого раза?

Домен должен A-записью указывать на IP сервера, а порты 80 и 443 — быть открыты снаружи для ACME-проверки.

Как настроить реверс-прокси в Caddy?

Достаточно блока с директивой reverse_proxy 127.0.0.1:ПОРТ — заголовки и WebSocket Caddy обрабатывает автоматически.

Как оплатить VPS под Caddy из России?

У MAATRIX доступна оплата картой российского банка, по СБП, криптовалютой или токеном MAAT, иностранная карта не потребуется.

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.