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

Установка Caddy на Debian 11

4 min read Linux, DevOps Обновлено 24 Nov 2025
Установка Caddy на Debian 11 — шаг за шагом
Установка Caddy на Debian 11 — шаг за шагом

Логотип Caddy

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

В этом руководстве показано, как установить Caddy на Debian 11 и настроить простую поддержку PHP.

Требования

  • Сервер под управлением Debian 11.
  • Действительное доменное имя, указывающее на IP сервера.
  • Установлённый root‑доступ или привилегии sudo.

Установка Caddy на Debian 11

Пакет Caddy по умолчанию отсутствует в репозиториях Debian 11, поэтому добавим официальный репозиторий Caddy.

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

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' | apt-key add -

Добавьте репозиторий Caddy в 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:

caddy version

Вы должны увидеть строку версии, например:

v2.4.5 h1:P1mRs6V2cMcagSPn+NWpD+OEYUYLIf6ecOa48cFGeUg=

Чтобы двоичный файл caddy мог привязываться к привилегированным портам 80 и 443, выполните:

setcap 'cap_net_bind_service=+ep' /usr/bin/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 Sat 2021-10-16 14:34:44 UTC; 2min 30s ago
       Docs: https://caddyserver.com/docs/
   Main PID: 2370 (caddy)
      Tasks: 7 (limit: 2341)
     Memory: 17.5M
        CPU: 30ms
     CGroup: /system.slice/caddy.service
             ??2370 /usr/bin/caddy run --environ --config /etc/caddy/Caddyfile

Oct 16 14:34:44 debian11 caddy[2370]: JOURNAL_STREAM=8:16308
Oct 16 14:34:44 debian11 caddy[2370]: {"level":"info","ts":1634394884.658216,"msg":"using provided configuration","config_file":"/etc/caddy/Ca>"
Oct 16 14:34:44 debian11 caddy[2370]: {"level":"info","ts":1634394884.6623824,"logger":"admin","msg":"admin endpoint started","address":"tcp/l>"
Oct 16 14:34:44 debian11 caddy[2370]: {"level":"info","ts":1634394884.6626618,"logger":"http","msg":"server is listening only on the HTTP port>"
Oct 16 14:34:44 debian11 caddy[2370]: {"level":"info","ts":1634394884.663054,"msg":"autosaved config (load with --resume flag)","file":"/var/l>"
Oct 16 14:34:44 debian11 systemd[1]: Started Caddy.
Oct 16 14:34:44 debian11 caddy[2370]: {"level":"info","ts":1634394884.6655433,"msg":"serving initial configuration"}
Oct 16 14:34:44 debian11 caddy[2370]: {"level":"info","ts":1634394884.6656897,"logger":"tls","msg":"cleaning storage unit","description":"File>"
Oct 16 14:34:44 debian11 caddy[2370]: {"level":"info","ts":1634394884.6657932,"logger":"tls","msg":"finished cleaning storage units"}
Oct 16 14:34:44 debian11 caddy[2370]: {"level":"info","ts":1634394884.6694443,"logger":"tls.cache.maintenance","msg":"started background certi>"

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

Установите PHP‑FPM и распространённые модули:

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

Отредактируйте пул PHP‑FPM, чтобы процессы работали от пользователя caddy:

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

Найдите и замените значения пользователя и группы с www-data на caddy:

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

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

systemctl restart php7.4-fpm

Важно: если у вас другая версия PHP, измените путь и имя службы соответственно (например, php8.0-fpm).

Конфигурация виртуального хоста 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/php7.4-fpm.sock
}

Перезапустите Caddy, чтобы применить изменения:

systemctl restart caddy

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

nano /usr/share/caddy/info.php

Добавьте:

Сохраните файл.

Доступ к сайту

Откройте в браузере: http://caddy.example.com/info.php

Страница phpinfo

Вы должны увидеть страницу с информацией о PHP.

Рекомендации и лучшие практики

Безопасность

  • Настройте брандмауэр (ufw/iptables) и разрешите только нужные порты (80, 443, SSH).
  • Используйте встроенное управление TLS Caddy (Let’s Encrypt) для публичных доменов.
  • Ограничьте доступ к административным интерфейсам и файлам конфигурации.
  • Регулярно обновляйте Caddy и PHP‑пакеты через apt.

Настройки производительности

  • Включайте gzip/zstd с учётом используемого трафика.
  • Используйте кэширование и CDN для статического контента.
  • Для высоких нагрузок разверните несколько фронтендов Caddy за балансировщиком.

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

  • Если сертификат не выдаётся, проверьте DNS‑запись и доступность 80/443 извне.
  • При ошибках PHP проверьте логи PHP‑FPM и права доступа к сокету (/run/php/*.sock).
  • Если Caddy не привязывается к портам — убедитесь, что setcap применён и нет другого процесса на 80/443.

Быстрая методология проверки после установки

  1. Убедитесь, что служба запущена: systemctl status caddy
  2. Проверьте ответ HTTP: curl -I http://localhost
  3. Зайдите на ваш домен из браузера
  4. Просмотрите логи systemd и Caddy при ошибках: journalctl -u caddy -e

Резервные варианты установки

  • Установка из официального .deb пакета, скачанного с релизов Caddy — полезно при ограниченном доступе к репозиторию.
  • Сборка кастомного билда caddy с нужными плагинами (xcaddy) — когда нужны нестандартные модули.
  • Использование docker‑образа Caddy — удобно в контейнеризированных средах.

Проверки для ролей

  • Операторы: проверить статус службы, автоматический рестарт и мониторинг (Prometheus/exporter).
  • Девелоперы: убедиться, что phpinfo и доступ к статике работают корректно.
  • Безопасность: убедиться в наличии TLS и закрытии лишних портов.

Краткий план отката при ошибках

  1. Восстановить предыдущую версию /etc/caddy/Caddyfile из резервной копии.
  2. Перезапустить сервис: systemctl restart caddy
  3. При необходимости временно выключить Caddy и вернуть старый веб‑сервер (например, nginx) до устранения проблемы.

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

  • Caddy установлен и запущен: systemctl status caddy показывает active (running).
  • Домен возвращает HTTP 200 для статической страницы и вывод phpinfo() при обращении к info.php.
  • PHP‑FPM запущен от пользователя caddy и сокет доступен.

Краткий глоссарий

  • Caddy: веб‑сервер на Go с автоматическим управлением TLS.
  • PHP‑FPM: FastCGI Process Manager для запуска PHP‑приложений.
  • systemd: система инициализации и менеджер служб в Linux.

Итог

Поздравляю — вы установили и настроили Caddy на Debian 11 с поддержкой PHP. В следующих шагах можно добавить HTTPS, настроить логирование, ротацию логов и интеграцию с системой мониторинга.

Важно: адаптируйте примеры путей и версий PHP под вашу систему.

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

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

Firefox: перетаскивание не работает — что делать
Браузеры

Firefox: перетаскивание не работает — что делать

Как зарегистрироваться в ESPN+ без провайдера
Техническая поддержка

Как зарегистрироваться в ESPN+ без провайдера

Windows 11 Enterprise VM в VirtualBox — установка и устранение проблем
Виртуализация

Windows 11 Enterprise VM в VirtualBox — установка и устранение проблем

ESPN+ просит TV‑провайдера — что делать
Стриминг

ESPN+ просит TV‑провайдера — что делать

Ярлык Windows Tools в Windows 11: все способы
Windows

Ярлык Windows Tools в Windows 11: все способы

Комментирование строк в Vim — быстрые способы
Редакторы

Комментирование строк в Vim — быстрые способы