Установка Caddy на сервер как обратного прокси: термины и чек-лист
Подробности, цифры, термины и чек-лист по теме «Установка Caddy на сервер как обратного прокси». Страница справочника целиком: Установка Caddy.
Коротко о теме
Установка Caddy на VPS: Caddyfile из трёх строк, сертификат Let's Encrypt без Certbot, образ caddy:2 для Docker и разбор ошибки 502 за прокси.
Подробности по разделам
Что делает Caddy перед приложением в контейнере
Если в конфиге есть публичное доменное имя, Caddy получает сертификат у Let's Encrypt или ZeroSSL, продлевает его и отправляет HTTP-запросы на HTTPS. Программа вроде Certbot рядом не нужна.
Установка Caddy в Docker: compose-файл и Caddyfile
Без Docker Caddy ставится пакетом из официального репозитория (инструкция для Debian и Ubuntu на caddyserver.com/docs/install). Конфиг лежит в /etc/caddy/Caddyfile, а sudo systemctl reload caddy применяет правки без остановки сайта. Приложение тогда публикуют на локальном адресе, 127.0.0.1:3000:3000, и в Caddyfile пишут reverse_proxy 127.0.0.1:3000.
Как Caddy выпускает и продлевает сертификат для домена
Продление Caddy делает в фоне сам, а при сбое пробует снова: сначала другой тип проверки, потом второго издателя (Let's Encrypt, затем ZeroSSL), затем с нарастающей паузой до 30 дней. Пока вы отлаживаете настройку, переключите Caddy на тестовый сервер Let's Encrypt, у которого нет жёстких лимитов. Браузер покажет такой сертификат как недоверенный, это нормально: Том caddy_data нельзя терять В нём лежат сертификаты и ключи.
Ошибки Caddy: 502, неверный Host и закрытый порт 80
Заголовок Host Caddy передаёт приложению в том виде, в каком его прислал браузер. Если внешний сервис за прокси требует свой адрес, добавьте строку header_up Host {upstream_hostport} внутри блока reverse_proxy. Заголовки X-Forwarded-For и X-Forwarded-Proto Caddy выставляет сам.
Несколько сайтов и пароль на панель в одном Caddyfile
Если контейнеров много и они меняются каждый день, ручной список надоест: тогда подойдёт Traefik, который берёт маршруты из меток контейнеров.
Ключевые цифры
- Если порт 80 закрыт, но 443 открыт, сертификат всё равно может выпуститься через TLS-ALPN, а вот переход с HTTP на HTTPS работать не будет.
- Caddy сам запрашивает сертификат у Let's Encrypt или ZeroSSL и продлевает его, пока работает и видит порты 80 и 443.
- Да, но порты 80 и 443 займёт только один из них.
- Второй переведите на другой порт, например 8080, и пустите к нему трафик через первый.
- Источники цифр на этой странице: VPS и VDS серверы Таймвеб Клауд, timeweb.cloud/services/vds-vps, проверено 14 октября 2026; Маркетплейс приложений Таймвеб Клауд, timeweb.cloud/marketplace, проверено 14 октября 2026; Документация Caddy: Automatic HTTPS, caddyserver.com/docs/automatic-https, проверено 15 октября 2026.
Термины на странице
- Let's Encrypt
- Let's Encrypt выпускает бесплатные DV-сертификаты на 90 дней с автоматическим продлением.
- Certbot
- Certbot это программа, которая получает и продлевает сертификаты Let's Encrypt на сервере.
- Nginx
- Nginx это веб-сервер и обратный прокси. Его часто ставят перед приложением, чтобы раздавать статику и держать HTTPS.
- Apache
- Apache это веб-сервер. На хостинге с ним работают файлы .htaccess.
- A-запись
- A-запись связывает домен с IPv4-адресом сервера.
- TLS
- TLS это протокол шифрования, на котором работает HTTPS. Название SSL осталось по привычке.
- Трафик
- Трафик это объём переданных данных. У одних тарифов он безлимитный, у других платный сверх пакета.
- Debian
- Debian это дистрибутив Linux, на котором основана Ubuntu. Его ценят за стабильность.
Что проверить
- Выпустите сертификат после того, как домен указывает на сервер.
- Проверьте, что установлена вся цепочка сертификатов.
- Включите перенаправление с HTTP на HTTPS.
- Храните данные контейнеров в томах.
- Закрепляйте версии образов, а не latest.
- Ограничьте ресурсы контейнеров, чтобы один не съел весь сервер.