Caddy

Проект Caddy (caddyserver) · лицензия Apache-2.0

Веб-сервер, который раздаёт собранный сайт из папки. По документации сам получает HTTPS-сертификат для домена, если DNS указывает на сервер и порты 80 и 443 открыты.

macOS · Windows · LinuxНа сервере, на компьютере и в контейнереБесплатно, Apache-2.0

✓ Проверено 13.10.2026: Ubuntu 24.04 (x86_64) в одноразовом контейнере Docker на сервере, от root, без systemd: Caddy 2.11.7 из репозитория apt проекта. Что именно проверяли

Установить агентом ↓

Какую задачу решает

Веб-сервер, который показывает собранный сайт из папки и сам получает HTTPS-сертификат. Агент ставит Caddy на сервер с доменом и пишет короткий Caddyfile с адресом сайта и папкой, дальше по документации Caddy сам берёт сертификат у Let's Encrypt или ZeroSSL и продлевает его. Для проверки на своём компьютере ту же папку можно открыть по адресу localhost, тогда сертификат выдаёт локальный центр сертификации Caddy.

  • Командой caddy file-server раздаёт папку с готовым сайтом без файла настройки, в нашем прогоне страницы пришли без изменений, на несуществующую страницу ответ 404.
  • По Caddyfile из нескольких строк включает HTTPS, сжатие gzip и свои заголовки ответа. В прогоне localhost открылся по HTTPS с сертификатом, который выдал локальный центр сертификации Caddy, файл CSS пришёл сжатым с 11 600 до 129 байт.
  • Запросы по HTTP переводит на HTTPS: в прогоне запрос к странице blog по HTTP получил ответ 308 с тем же путём на HTTPS.
  • Для домена в интернете по документации получает и продлевает сертификат сам, если записи DNS указывают на сервер и порты 80 и 443 открыты. Этот случай мы не проверяли: в песочнице нет домена.
  • Настройку проверяет до запуска командой caddy validate, ошибка в Caddyfile дала код 1 и номер строки.

Пример результата

Говоришь агенту

Собранный сайт лежит в папке site. Покажи его по HTTPS на localhost, порт 8443, со сжатием gzip и заголовком X-Test, корневой сертификат Caddy в систему не ставь. Сначала проверь настройку, потом запусти и убедись, что страницы открываются.

Что получится

Мы прогнали этот сценарий на тестовой папке из трёх файлов. caddy validate ответил «Valid configuration». Через 372 мс после запуска главная страница пришла по HTTPS/2 с кодом 200 и совпала с файлом байт в байт, заголовок X-Test на месте. Сертификат выдал локальный центр сертификации Caddy, его корневой сертификат называется «Caddy Local Authority - 2026 ECC Root». Без доверия к нему curl отказал с кодом 60. Файл CSS пришёл в gzip, после распаковки совпал с исходным. Хранилище доверенных сертификатов Ubuntu осталось прежним, файлы сайта после работы совпали по sha256.

Паспорт

Кто делает
Проект Caddy (caddyserver)
Исходный код
github.com/caddyserver/caddy
Инструкция
caddyserver.com/docs/install
Лицензия
Apache-2.0
Версия
2.11.7 на 13.10.2026
Системы
macOS · Windows · Linux
Где работает
На сервере, на компьютере и в контейнере
Цена
Бесплатно
Проверка
Проверено 13.10

Установить агентом

Для Claude Code, Codex, Hermes и любого агента с терминалом
Установи программу «Caddy». Работай по шагам и после каждого коротко говори, что сделал.

Что это за программа (каталог smyslokod.ru, официальные источники сверены 13.10.2026):
- официальный сайт: https://caddyserver.com/
- исходный код: https://github.com/caddyserver/caddy
- инструкция по установке: https://caddyserver.com/docs/install
- актуальная версия на 13.10.2026: 2.11.7
- лицензия: Apache-2.0
- для работы нужно (в отдельных случаях): Свой домен и открытые порты 80 и 443 - нужны только для сертификата, которому доверяют все браузеры: по документации записи DNS домена должны указывать на сервер до запуска Caddy

Правила:
1. Ничего не устанавливай и не меняй, пока я не скажу «да» на твой план.
2. Ставь только способами из этого промпта. Сторонние сборки, скрипты с форумов и из чужих репозиториев не бери.
3. Мои проекты не трогай: не меняй их файлы, виртуальные окружения и списки зависимостей (package.json, requirements.txt, pyproject.toml).
4. Команды с sudo, правку профиля оболочки (~/.zshrc, ~/.bashrc) и переменной PATH делай только после моего отдельного «да» на каждую.
5. Не проси у меня пароли и ключи и не выводи их. Если нужен пароль администратора, дай команду, я выполню её сам.
6. Ставь Caddy на сервер только по «да» и предупреди: при работающем systemd пакет сразу включает и запускает службу caddy, а стандартный Caddyfile слушает порт 80.
7. В root указывай только папку собранного сайта. Папку пользователя целиком и корень проекта с файлами .env и ключами не раздавай.
8. Перед запуском с доменом покажи человеку домен, папку и Caddyfile и проверь, что запись DNS домена указывает на этот сервер.
9. caddy trust, caddy upgrade и apt purge caddy запускай отдельным «да» на каждую: первая меняет хранилище доверенных сертификатов компьютера, вторая заменяет файл программы, третья стирает сертификаты службы.
10. Адрес админки на внешний интерфейс не переноси.

Шаги:
0. Определи, где ты работаешь: мой компьютер, сервер или контейнер. Какая система и процессор, какие менеджеры пакетов есть (Homebrew, apt, winget, uv, pipx). Ставить нужно туда, где ты сам запускаешь команды.
   - на сервере: основное место: сайт на своём сервере с доменом. Пакет apt по документации сразу запускает службу caddy от отдельного пользователя caddy.
   - на компьютере: показать собранный сайт по адресу localhost, в том числе по HTTPS. По документации при первом выпуске локального сертификата Caddy сам пытается поставить свой корневой сертификат в хранилище доверенных сертификатов, без прав может спросить пароль. Чтобы хранилище не трогать, заранее задай в Caddyfile skip_install_trust, как в нашем прогоне.
   - в контейнере: мы проверяли в контейнере Ubuntu 24.04 от root, без systemd: служба после установки не запустилась, Caddy запускали командами. У проекта есть официальный образ Docker caddy, его мы не запускали.
1. Проверь, не стоит ли программа уже: caddy version ; which -a caddy. Если стоит и запускается, ничего не ставь и переходи к шагу 5.
2. Обязательных зависимостей у программы нет, то, что нужно в отдельных случаях, перечислено выше. Проверь свободное место на диске: нужно apt в прогоне скачал пакет caddy размером 18,1 МБ и написал «52.0 MB of additional disk space will be used», сам файл /usr/bin/caddy 51 953 826 байт. В архиве для Mac на Apple Silicon файл caddy 50 195 026 байт, в архиве для Windows x64 caddy.exe 53 159 936 байт. Сертификаты и ключи Caddy хранит в своей папке данных, после локального сертификата в прогоне она заняла 3 524 байт..
3. Составь план: каким одним способом из списка ниже будешь ставить, что появится на диске и сколько места займёт, что поменяется в системе и как потом удалить. Покажи план и жди моего «да».
   Способы из официальных источников:
   - macOS, готовый файл с GitHub: mkdir -p ~/.local/bin && curl -fsSL -o /tmp/caddy.tgz https://github.com/caddyserver/caddy/releases/download/v2.11.7/caddy_2.11.7_mac_arm64.tar.gz && echo "68f592df8f0ec058fbdb9b137b64e9a0aa792d28c06e1e3b9ec12d0e7fb371683a54e73ef6d8e6d0dd70dc6b941a5b5d5b73faedd3f89de119ad2eb78bdc668e  /tmp/caddy.tgz" | shasum -a 512 -c - && tar -xzf /tmp/caddy.tgz -C ~/.local/bin caddy && rm /tmp/caddy.tgz (это архив для Apple Silicon, для Intel на странице выпуска лежит caddy_2.11.7_mac_amd64.tar.gz, суммы SHA-512 в файле caddy_2.11.7_checksums.txt. Способ «готовый файл» официальный по странице установки. Команда кладёт один файл caddy в ~/.local/bin, эта папка должна быть в PATH. Homebrew страница установки называет способом, который поддерживает сообщество. На Mac мы не проверяли)
   - Windows, готовый файл с GitHub: Invoke-WebRequest -Uri https://github.com/caddyserver/caddy/releases/download/v2.11.7/caddy_2.11.7_windows_amd64.zip -OutFile caddy.zip; if ((Get-FileHash caddy.zip -Algorithm SHA512).Hash -ne 'c308154504e53755958ffc62d8a2657ab17eefd6dd25c45dbb2c3d93d29519971f77ca652f7d0f2bcb7f980b9ba3822478865e29969d0272d7613550a43152b1') { throw 'sum mismatch' }; Expand-Archive caddy.zip -DestinationPath $env:LOCALAPPDATA\caddy; Remove-Item caddy.zip (архив для x64, сумму SHA-512 мы взяли из caddy_2.11.7_checksums.txt и сверили со скачанным файлом. caddy.exe окажется в папке %LOCALAPPDATA%\caddy, её нужно добавить в PATH или звать программу полным путём. Chocolatey и Scoop страница установки называет способами сообщества. На Windows мы не проверяли)
   - Linux, apt, репозиторий проекта: sudo apt install --yes debian-keyring debian-archive-keyring apt-transport-https curl && curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg && curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list && sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg /etc/apt/sources.list.d/caddy-stable.list && sudo apt update && sudo apt install caddy (так на странице установки для Debian, Ubuntu и Raspbian, мы ставили ровно этими командами от root, установка заняла 23 секунды. Пакет создаёт пользователя caddy, папку /var/log/caddy и файл /etc/caddy/Caddyfile, при работающем systemd включает и запускает службу caddy. Для Fedora и RHEL на той же странице команды dnf copr, их мы не проверяли)
4. Установи по согласованному плану. Если что-то идёт не так, как в плане, остановись и спроси.
5. Проверь результат:
   - caddy version: программа запускается без ошибки;
   - Сделай папку site с двумя страницами HTML и файлом CSS. Раздай её командой caddy file-server на 127.0.0.1:8080 и сверь страницы с файлами и ответ 404. Потом напиши Caddyfile для localhost:8443 с skip_install_trust, encode gzip, заголовком X-Test и file_server, проверь его caddy validate, запусти caddy run и сверь страницу по HTTPS с корневым сертификатом Caddy, сжатие CSS, перенаправление с HTTP и то, что хранилище доверенных сертификатов системы осталось прежним. Остановись командой caddy stop и проверь, что ошибка в Caddyfile даёт код 1. Делай это во временной папке и не трогай мои файлы.
     caddy version
     caddy file-server --root site --listen 127.0.0.1:8080
     caddy fmt --overwrite Caddyfile
     caddy validate --config Caddyfile
     caddy adapt --config Caddyfile --pretty
     caddy run --config Caddyfile
     caddy stop
     caddy validate --config Broken --adapter caddyfile
   - если ты работаешь в папке моего проекта, покажи git status: от установки в проекте не должно появиться изменений.
6. Итог одним сообщением: что установлено, какой версии и куда, сколько места заняло, что поменялось в системе и как всё удалить (macOS, готовый файл с GitHub: rm -f ~/.local/bin/caddy; Windows, готовый файл с GitHub: Remove-Item -Recurse $env:LOCALAPPDATA\caddy; Linux, apt, репозиторий проекта: sudo apt purge caddy && sudo rm -f /etc/apt/sources.list.d/caddy-stable.list /usr/share/keyrings/caddy-stable-archive-keyring.gpg).

Если на любом шаге ошибка, не чини наугад: покажи текст ошибки и скажи, что, по-твоему, случилось. Частые проблемы: https://smyslokod.ru/cli/caddy#problemy

Промпт собран из официальных инструкций, сверенных 13.10.2026. Агент сначала проверит, что уже стоит, покажет план с местом на диске и способом удаления и без твоего «да» ничего не поставит.

Как ставят вручную

Способы из официальных источников, у каждого ссылка на первоисточник.

  • macOS · готовый файл с GitHub · источник

    mkdir -p ~/.local/bin && curl -fsSL -o /tmp/caddy.tgz https://github.com/caddyserver/caddy/releases/download/v2.11.7/caddy_2.11.7_mac_arm64.tar.gz && echo "68f592df8f0ec058fbdb9b137b64e9a0aa792d28c06e1e3b9ec12d0e7fb371683a54e73ef6d8e6d0dd70dc6b941a5b5d5b73faedd3f89de119ad2eb78bdc668e /tmp/caddy.tgz" | shasum -a 512 -c - && tar -xzf /tmp/caddy.tgz -C ~/.local/bin caddy && rm /tmp/caddy.tgz

    это архив для Apple Silicon, для Intel на странице выпуска лежит caddy_2.11.7_mac_amd64.tar.gz, суммы SHA-512 в файле caddy_2.11.7_checksums.txt. Способ «готовый файл» официальный по странице установки. Команда кладёт один файл caddy в ~/.local/bin, эта папка должна быть в PATH. Homebrew страница установки называет способом, который поддерживает сообщество. На Mac мы не проверяли

  • Windows · готовый файл с GitHub · источник

    Invoke-WebRequest -Uri https://github.com/caddyserver/caddy/releases/download/v2.11.7/caddy_2.11.7_windows_amd64.zip -OutFile caddy.zip; if ((Get-FileHash caddy.zip -Algorithm SHA512).Hash -ne 'c308154504e53755958ffc62d8a2657ab17eefd6dd25c45dbb2c3d93d29519971f77ca652f7d0f2bcb7f980b9ba3822478865e29969d0272d7613550a43152b1') { throw 'sum mismatch' }; Expand-Archive caddy.zip -DestinationPath $env:LOCALAPPDATA\caddy; Remove-Item caddy.zip

    архив для x64, сумму SHA-512 мы взяли из caddy_2.11.7_checksums.txt и сверили со скачанным файлом. caddy.exe окажется в папке %LOCALAPPDATA%\caddy, её нужно добавить в PATH или звать программу полным путём. Chocolatey и Scoop страница установки называет способами сообщества. На Windows мы не проверяли

  • Linux · apt, репозиторий проекта · источник

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

    так на странице установки для Debian, Ubuntu и Raspbian, мы ставили ровно этими командами от root, установка заняла 23 секунды. Пакет создаёт пользователя caddy, папку /var/log/caddy и файл /etc/caddy/Caddyfile, при работающем systemd включает и запускает службу caddy. Для Fedora и RHEL на той же странице команды dnf copr, их мы не проверяли

Как удалить

  • macOS, готовый файл с GitHub: rm -f ~/.local/bin/caddy
  • Windows, готовый файл с GitHub: Remove-Item -Recurse $env:LOCALAPPDATA\caddy
  • Linux, apt, репозиторий проекта: sudo apt purge caddy && sudo rm -f /etc/apt/sources.list.d/caddy-stable.list /usr/share/keyrings/caddy-stable-archive-keyring.gpg

Что нужно для работы

  • Свой домен и открытые порты 80 и 443 (в отдельных случаях) - нужны только для сертификата, которому доверяют все браузеры: по документации записи DNS домена должны указывать на сервер до запуска Caddy

Системы

  • macOS - готовые архивы для Apple Silicon и Intel на странице выпуска. На Mac мы не проверяли.
  • Windows - готовые архивы для x64 и ARM64 на странице выпуска. На Windows мы не проверяли.
  • Linux - мы проверяли на Ubuntu 24.04 x86-64 через репозиторий apt проекта. Пакеты есть для Debian, Ubuntu, Raspbian, Fedora, RHEL, Arch, готовые архивы на странице выпуска для x86-64, ARM и других архитектур.

Где запускать

Ставить нужно туда, где работает агент: на твой компьютер, сервер или в контейнер.

  • На сервере - основное место: сайт на своём сервере с доменом. Пакет apt по документации сразу запускает службу caddy от отдельного пользователя caddy.
  • На компьютере - показать собранный сайт по адресу localhost, в том числе по HTTPS. По документации при первом выпуске локального сертификата Caddy сам пытается поставить свой корневой сертификат в хранилище доверенных сертификатов, без прав может спросить пароль. Чтобы хранилище не трогать, заранее задай в Caddyfile skip_install_trust, как в нашем прогоне.
  • В контейнере - мы проверяли в контейнере Ubuntu 24.04 от root, без systemd: служба после установки не запустилась, Caddy запускали командами. У проекта есть официальный образ Docker caddy, его мы не запускали.

Сколько ресурсов нужно

Место на диске
Apt в прогоне скачал пакет caddy размером 18,1 МБ и написал «52.0 MB of additional disk space will be used», сам файл /usr/bin/caddy 51 953 826 байт. В архиве для Mac на Apple Silicon файл caddy 50 195 026 байт, в архиве для Windows x64 caddy.exe 53 159 936 байт. Сертификаты и ключи Caddy хранит в своей папке данных, после локального сертификата в прогоне она заняла 3 524 байт.
Память
Память мы не мерили.
Видеокарта
Прогон шёл в контейнере без видеокарты, вся задача прошла на процессоре.
Сеть
Установка через apt ходит в сеть: в прогоне netwatch записал dl.cloudsmith.io (13.227.173.x и адреса 2600:9000:21f7:..., CloudFront), archive.ubuntu.com и security.ubuntu.com (91.189.91.x, 91.189.92.x, 185.125.190.x) и deb.nodesource.com (104.20.45.190, 172.66.150.169). Последний источник был настроен в образе нашей песочницы заранее, к Caddy он отношения не имеет. Адрес 127.0.0.11:53 принадлежит DNS внутри контейнера. Во время работы с localhost внешних соединений не было, записаны только 127.0.0.1:53 и ::1:53: так Go, на котором написан Caddy, проверяет маршрут к адресу без отправки пакетов. С доменом по документации Caddy обращается к центрам сертификации Let's Encrypt или ZeroSSL, а сайт открыт всем на портах 80 и 443.

Лицензия и платные замены

Лицензия Apache-2.0. Свободная лицензия, текст лежит в репозитории и в архиве выпуска. Официальные пакеты собраны только со стандартными модулями. Текст лицензии

Цена: Бесплатно. Программа бесплатная, лицензия Apache-2.0.

Платные замены

  • NGINX Plus (F5) - Платная версия NGINX от F5, в ней балансировка нагрузки, обратный прокси, API-шлюз и раздача содержимого. По описанию F5 она добавляет к бесплатному NGINX возможности для крупных компаний. Цены на странице продукта нет.

Бесплатные замены

  • python -m http.server - Встроенный в Python простой сервер файлов из текущей папки, командой python -m http.server раздаёт их по HTTP. Документация Python не советует его для работы в интернете.

О чём помнить

  • Безопасность. Агент запускает caddy в терминале сам (exec). Программа читает Caddyfile и файлы из папки root (read) и раздаёт эти файлы по сети (acts): на сервере с доменом всё содержимое папки root увидит любой посетитель. Сертификаты, ключи и последнюю настройку Caddy пишет в свои папки, на Linux ~/.local/share/caddy и ~/.config/caddy (write). Команда caddy fmt --overwrite переписывает Caddyfile, caddy upgrade заменяет сам файл программы, apt purge стирает /etc/caddy и /var/lib/caddy вместе с сертификатами службы (acts). Входа в учётные записи и ключей программа не просит.
  • Пакет apt при работающем systemd сразу включает и запускает службу caddy: по стандартному Caddyfile сервер слушает порт 80. Ставь его на сервер, где этот порт свободен, или останавливай службу после установки.
  • Для localhost Caddy заводит свой центр сертификации и при первом запуске пытается поставить его корневой сертификат в хранилище доверенных сертификатов компьютера, по документации может спросить пароль. В прогоне мы это отключили настройкой skip_install_trust. Хранилище осталось прежним, curl без этого сертификата отказал с ошибкой 60. Снять доверие можно командой caddy untrust.
  • У запущенного Caddy по документации открыта админка на localhost:2019: через неё меняют настройку и останавливают сервер, в прогоне GET /config/ отдал текущую настройку. Документация советует защитить админку, если на сервере выполняется код, которому вы не доверяете. caddy file-server админку не включает.
  • Сертификат для домена мы не получали: в песочнице нет домена и открытых портов. По документации при неудаче Caddy повторяет попытки с растущей паузой до суток между ними, до 30 дней.

Частые проблемы

curl: (60) SSL certificate problem, когда открываешь localhost по HTTPS

Клиент не доверяет локальному центру сертификации Caddy. В прогоне так вышло, когда установку корневого сертификата отключили. Передай клиенту корневой сертификат из ~/.local/share/caddy/pki/authorities/local/root.crt (у curl ключ --cacert) или по «да» поставь его в систему командой caddy trust.

adapting config using caddyfile: Broken:2: unrecognized directive: file_servr

Опечатка в имени директивы Caddyfile. caddy validate вернул код 1 и показал файл и строку. Исправь директиву в указанной строке и снова запусти caddy validate.

Ошибка прав (permissions error) при запуске caddy file-server

file-server по умолчанию слушает порт 80. По документации такая ошибка, вероятно, значит, что система запрещает этому пользователю занимать низкие порты. Задай высокий порт, например caddy file-server --listen :2015.

Проверка

✓ Проверено 13.10.2026: Ubuntu 24.04 (x86_64) в одноразовом контейнере Docker на сервере, от root, без systemd: Caddy 2.11.7 из репозитория apt проекта.

Когда
13.10.2026
Среда
Ubuntu 24.04 (x86_64) в одноразовом контейнере Docker на сервере, от root, без systemd: Caddy 2.11.7 из репозитория apt проекта
Объём
Установили и прогнали задачу на тестовых данных
Что именно сделали
  1. Одноразовый контейнер Ubuntu 24.04 без данных и ключей. Поставили Caddy командами со страницы установки: ключ и список репозитория Cloudsmith, apt update, apt install caddy. caddy version вывел v2.11.7.
  2. Скрипт прогона сам сделал папку site с двумя страницами HTML и файлом CSS и записал их контрольные суммы.
  3. caddy file-server раздал папку на 127.0.0.1:8080: обе страницы совпали с файлами, на несуществующую страницу пришёл ответ 404.
  4. Написали Caddyfile для localhost:8443 с отключённой установкой корневого сертификата, сжатием gzip и заголовком X-Test. caddy validate ответил «Valid configuration».
  5. Запустили caddy run. Через 372 мс главная страница пришла по HTTPS и совпала с файлом, заголовок X-Test на месте, сертификат подписал локальный центр Caddy. CSS пришёл в gzip (129 байт вместо 11 600) и после распаковки совпал с исходным. Без корневого сертификата curl отказал с кодом 60, запрос по HTTP получил перенаправление 308.
  6. Хранилище доверенных сертификатов Ubuntu осталось прежним. Админка на localhost:2019 отдала текущую настройку, caddy stop остановил сервер.
  7. Caddyfile с опечаткой в директиве дал код 1 с номером строки. Файлы сайта после всех шагов совпали по sha256, во время работы внешних соединений не было. Каждый результат скрипт сверил сам и только после этого напечатал TASK_OK.
  8. Удалили пакет командой apt purge caddy, убрали список репозитория и ключ, проверили, что команда caddy больше не находится и пользователя caddy нет. Контейнер после прогона удалён.
ДатаВерсияОбъёмГдеИтог
13.10.20262.11.7задачаконтейнер, Linuxполучилось

«Проверено» ставим, только когда сами поставили программу и прогнали её на задаче. Сверка ссылок и вывод версии так не называются.

Похожие программы

Программу делают её авторы. Мы сверяем официальные источники и описываем, что ей нужно, но код остаётся чужим. Перед установкой посмотри план агента: что он поставит и что поменяет в системе.