Гид по технологиям

Установка и настройка Caddy на Ubuntu 22.04

4 min read Веб-серверы Обновлено 23 Nov 2025
Caddy на Ubuntu 22.04 — установка и настройка
Caddy на Ubuntu 22.04 — установка и настройка

Логотип Caddy или общий скриншот интерфейса

Caddy — современный веб‑сервер, написанный на языке Go. Он прост в использовании, лёгкий, поддерживает HTTP/2 и экспериментальный HTTP/3, не требует внешних зависимостей и расширяется плагинами. Главное преимущество — автоматическое получение и обновление TLS‑сертификатов (HTTPS) по умолчанию. Caddy проектируют с акцентом на безопасность и удобство хостинга сайтов.

Во всплывающем руководстве ниже вы найдёте пошаговые команды, проверки и рекомендации по отладке для развёртывания Caddy на Ubuntu 22.04.

Требования

  • Сервер с Ubuntu 22.04.
  • Доменное имя, указывающее на IP сервера (A/AAAA запись).
  • Доступ root или учётная запись с sudo.

Important: убедитесь, что порты 80 и 443 открыты в облачном/сетевом фаерволе и на самом хосте (ufw/iptables).

Установка Caddy

Пакет Caddy отсутствует в дефолтном репозитории Ubuntu 22.04, поэтому добавим официальный репозиторий.

Сначала установите зависимости:

apt-get install -y curl debian-keyring debian-archive-keyring apt-transport-https

Добавьте GPG‑ключ репозитория:

curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg

Добавьте сам репозиторий APT:

curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list

Обновите индекс и установите Caddy:

apt-get update
apt-get install caddy -y

Проверьте версию:

caddy version

Пример вывода:

v2.6.2 h1:wKoFIxpmOJLGl3QXoo6PNbYvGW4xLEgo32GPBEjWL8o=

Разрешите бинарнику Caddy слушать привилегированные порты (80/443):

setcap 'cap_net_bind_service=+ep' /usr/bin/caddy

Откройте в браузере http://your-server-ip — должна отображаться страница по умолчанию Caddy:

Страница по умолчанию Caddy (веб-сервер)

Управление сервисом Caddy

Caddy управляется через systemd. Основные команды:

systemctl start caddy
systemctl stop caddy
systemctl enable caddy
systemctl status caddy

Пример статуса (сокращённый):

? caddy.service - Caddy
     Loaded: loaded (/lib/systemd/system/caddy.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-11-20 11:03:31 UTC; 42s ago
       Docs: https://caddyserver.com/docs/
   Main PID: 2356 (caddy)
      Tasks: 8 (limit: 2242)
     Memory: 7.8M
        CPU: 31ms
     CGroup: /system.slice/caddy.service
             ??2356 /usr/bin/caddy run --environ --config /etc/caddy/Caddyfile

Примечание: для отладки смотрите логи systemd: journalctl -u caddy -b

Включение поддержки PHP

Установите PHP‑FPM и распространённые расширения:

apt-get install php-fpm php-mysql php-curl php-gd php-mbstring php-common php-xml php-xmlrpc -y

По умолчанию PHP‑FPM работает от пользователя www-data; поменяйте владельца пула на caddy, чтобы сокет был доступен веб‑серверу. Отредактируйте файл пула:

nano /etc/php/8.1/fpm/pool.d/www.conf

Найдите и замените значения:

user = caddy
group = caddy
listen.owner = caddy
listen.group = caddy

Сохраните и перезапустите PHP‑FPM:

systemctl restart php8.1-fpm

Important: если ваш сокет отличается (например unix:/run/php/php8.1-fpm.sock), используйте точный путь в конфигурации Caddy.

Конфигурация виртуального хоста Caddy

Файл конфигурации по умолчанию: /etc/caddy/Caddyfile

Отредактируйте его:

nano /etc/caddy/Caddyfile

Пример содержимого (замените caddy.example.com на ваш домен):

caddy.example.com:80 {
    root * /usr/share/caddy/
    encode gzip zstd
    php_fastcgi unix//run/php/php8.1-fpm.sock
}

Сохраните и перезапустите Caddy:

systemctl restart caddy

Создайте тестовый PHP‑файл:

nano /usr/share/caddy/info.php

Добавьте:

Проверка PHP

Откройте в браузере http://caddy.example.com/info.php — вы должны увидеть страницу phpinfo():

Вывод phpinfo, отображаемый через Caddy

Отладка и частые проблемы

  • DNS не указывает на сервер: проверьте A/AAAA запись и дождитесь распространения.
  • Порты заняты: проверьте, что 80/443 свободны (ss -tlnp | grep -E ‘:80|:443’).
  • Файрвол блокирует трафик: ufw status или правила облачного провайдера.
  • Неправильные права сокета php‑fpm: убедитесь, что сокет доступен пользователю caddy.
  • Авто‑TLS не получает сертификат: проверьте доступность 80/443 для Let’s Encrypt и отсутствие прокси, изменяющего заголовки.
  • Логи: journalctl -u caddy -f и /var/log/php8.1-fpm.log помогут найти причину.

Когда Caddy не подойдёт: если вы требуете сложного модульного стека Nginx (специфические модули) или используете интеграции, которые не поддерживаются в Caddy — рассмотрите альтернативы.

Альтернативы

  • Nginx — гибкость, богатая экосистема конфигураций и поддержка обратного прокси.
  • Apache — традиционный выбор с модульной архитектурой.
  • Traefik — удобен для динамических окружений и Kubernetes.

Выбор зависит от команды и требований: Caddy хорош для простых, безопасных развёртываний с автоматическим HTTPS.

Мини‑методология развёртывания (шаги)

  1. Подготовить сервер и DNS — проверить порты и доступ.
  2. Установить Caddy из официального репозитория.
  3. Настроить права и systemd‑сервис.
  4. Установить PHP‑FPM и связать сокет с Caddy.
  5. Проверить работу через тестовую страницу.
  6. Настроить бэкапы конфигурации и мониторинг логов.

Ролевые контрольные списки

Оперативная команда:

  • Проверить открытые порты и правила безопасности.
  • Настроить мониторинг и алёрты на падение сервиса.

Разработчики:

  • Проверить совместимость приложений с PHP‑FPM и версиями PHP.
  • Создать тестовую страницу и проверить phpinfo.

Критерии приёмки

  • Caddy успешно установлен и запущен (systemctl status active).
  • Автоматический TLS работает для домена (порт 443 слушается и сертификат валиден).
  • PHP‑скрипты исполняются через php‑fpm (info.php отображает phpinfo).
  • Логи не содержат критических ошибок за последние 24 часа.

Шпаргалка команд

  • Установить зависимости: apt-get install -y curl debian-keyring debian-archive-keyring apt-transport-https
  • Добавить репозиторий и ключ: команды curl и gpg выше
  • Установка: apt-get update && apt-get install caddy -y
  • Разрешение привилегированных портов: setcap ‘cap_net_bind_service=+ep’ /usr/bin/caddy
  • Перезапуск сервисов: systemctl restart caddy; systemctl restart php8.1-fpm
  • Логи: journalctl -u caddy -f

Безопасность и конфиденциальность

  • Caddy автоматически управляет TLS‑сертификатами. Следите за доступностью 80/443 для выдачи сертификатов.
  • Ограничьте доступ к административному API Caddy (если включён) — по умолчанию админ‑эндпоинт слушает локально.
  • Храните резервные копии /etc/caddy/Caddyfile и каталога с сертификатами.
  • Обработку персональных данных регулируйте в соответствии с локальным законодательством; Caddy сам по себе не отправляет содержимое на внешние сервисы.

Глоссарий

  • php-fpm: FastCGI‑процесс менеджер для PHP.
  • php_fastcgi: директива Caddy для проксирования PHP через сокет или TCP.
  • Auto‑TLS: автоматическое получение и продление TLS‑сертификатов.

Итог

Caddy позволяет быстро и безопасно развернуть веб‑сайт на Ubuntu 22.04 с минимальной конфигурацией и автоматическим HTTPS. Следуйте шагам в статье, проверьте DNS и права на сокеты, а также мониторьте логи после запуска.

Notes: если нужно развернуть несколько сайтов, используйте отдельные блоки в Caddyfile и проверяйте, чтобы каждый домен корректно резолвился.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Не удалось инициализировать Direct3D — решения
Техподдержка

Не удалось инициализировать Direct3D — решения

Исправить Data Retrieval в Diablo 4 на Steam
Игры

Исправить Data Retrieval в Diablo 4 на Steam

Open Graph в WordPress — настройка мета‑тегов
WordPress SEO

Open Graph в WordPress — настройка мета‑тегов

getconf: адаптивные скрипты для разных Linux
Linux

getconf: адаптивные скрипты для разных Linux

Проверка входов в Windows — успешные и неудачные попытки
Безопасность Windows

Проверка входов в Windows — успешные и неудачные попытки

Исправить ошибку DistributedCOM (DCOM) в Windows
Windows

Исправить ошибку DistributedCOM (DCOM) в Windows