Запуск Caddy
Хотя Caddy можно запустить напрямую с помощью его командной строки, использование диспетчера служб для его запуска имеет множество преимуществ, таких как автоматический запуск при перезагрузке системы и захват логов stdout/stderr.
Служба Linux
Рекомендуемый способ запуска Caddy на дистрибутивах Linux с systemd — использование официальных файлов единиц systemd.
Файлы единиц
Мы предоставляем два разных файла единиц systemd, из которых вы можете выбрать, в зависимости от вашего случая:
-
caddy.service, если вы настраиваете Caddy с помощью файла Caddyfile. Если вы предпочитаете использовать другой адаптер конфигурации или файл конфигурации JSON, вы можете изменить настройки командыExecStartиExecReload. -
caddy-api.service, если вы настраиваете Caddy исключительно через его API. Эта служба использует параметр--resume, который запустит Caddy с использованиемautosave.json, который по умолчанию сохраняется.
Они очень похожи, но различаются в командах ExecStart и ExecReload для адаптации к рабочим процессам.
Если вам нужно переключаться между службами, вы должны отключить и остановить предыдущую, прежде чем включить и запустить другую. Например, для переключения со службы caddy на службу caddy-api:
sudo systemctl disable --now caddy
sudo systemctl enable --now caddy-api Установка вручную
Некоторые способы установки автоматически настраивают Caddy для работы в качестве службы. Если вы выбрали метод, который этого не сделал, вы можете выполнить эти инструкции:
Требования:
-
caddyдвоичный файл, который вы скачали или составили из исходного кода -
systemctl --version232 или более поздняя версия -
sudoправа
Переместите двоичный файл caddy в свой $PATH, например:
sudo mv caddy /usr/bin/ Проверьте, что это сработало:
caddy version Создайте группу с именем caddy:
sudo groupadd --system caddy Создайте пользователя с именем caddy с записываемым домашним каталогом:
sudo useradd --system \
--gid caddy \
--create-home \
--home-dir /var/lib/caddy \
--shell /usr/sbin/nologin \
--comment "Caddy web server" \
caddy Если вы используете файл конфигурации, убедитесь, что он доступен для чтения пользователем caddy, которого вы только что создали.
Далее, выберите файл единицы systemd в зависимости от вашего случая.
Проверьте директивы ExecStart и ExecReload. Убедитесь, что местоположение двоичного файла и аргументы командной строки соответствуют вашей установке! Например: если вы используете файл конфигурации, измените путь к вашему --config, если он отличается от значений по умолчанию.
Обычно файл службы сохраняется в: /etc/systemd/system/caddy.service
После сохранения файла службы вы можете впервые запустить службу с обычным действием systemctl:
sudo systemctl daemon-reload
sudo systemctl enable --now caddy Проверьте, что она запущена:
systemctl status caddy Теперь вы готовы использовать эту службу!
Использование службы
Если вы используете Caddyfile, вы можете редактировать конфигурацию с помощью nano, vi или вашего предпочтительного редактора:
sudo nano /etc/caddy/Caddyfile Вы можете поместить файлы своего статического сайта в /var/www/html или /srv. Убедитесь, что пользователь caddy имеет разрешения на чтение файлов.
Чтобы проверить, что служба запущена:
systemctl status caddy Команда status также покажет расположение текущего файла работающей службы.
При работе с нашим официальным файлом службы вывод Caddy будет перенаправлен в journalctl. Для чтения полных логов и предотвращения обрезки строк:
journalctl -u caddy --no-pager | less +G Если вы используете файл конфигурации, вы можете перезагрузить Caddy после внесения любых изменений:
sudo systemctl reload caddy Вы можете остановить службу командой:
sudo systemctl stop caddy Процесс Caddy будет выполняться как пользователь caddy, у которого установлен $HOME на /var/lib/caddy. Это означает:
- Стандартное расположение хранения данных (для сертификатов и другой служебной информации) будет в
/var/lib/caddy/.local/share/caddy. - Стандартное расположение хранения конфигурации (для автоматически сохраненной конфигурации JSON, в основном полезной для службы
caddy-api) будет в/var/lib/caddy/.config/caddy.
HTTPS для локальной среды
При использовании Caddy для локального разработки с HTTPS вы можете использовать имя хоста, например, localhost или app.localhost. Это включает HTTPS для локальной среды с использованием локального CA для выпуска сертификатов.
Поскольку Caddy запускается как пользователь caddy при работе в качестве службы, у него не будет разрешений на установку сертификата корневого CA в хранилище доверенных сертификатов системы. Для этого запустите sudo caddy trust для установки.
Если вы хотите, чтобы другие устройства подключались к вашему серверу при использовании internal issuer, вам также нужно установить сертификат корневого CA на этих устройствах. Вы можете найти сертификат корневого CA в /var/lib/caddy/.local/share/caddy/pki/authorities/local/root.crt. Многие веб-браузеры теперь используют собственное хранилище доверенных сертификатов (игнорируя хранилище системы), поэтому вам также может потребоваться вручную установить сертификат.
Настройки
Лучший способ изменить аспекты файлов службы — использовать эту команду:
sudo systemctl edit caddy Это откроет пустой файл с вашим текстовым редактором по умолчанию, в котором вы можете изменить или добавить директивы в определение единицы. Этот файл называется файлом «drop-in».
Переменные окружения
Если вам нужно определить переменные окружения для использования в конфигурации, вы можете сделать это так:
[Service]
Environment="CF_API_TOKEN=super-secret-cloudflare-tokenvalue"
Аналогично, если вы предпочитаете хранить переменные окружения в отдельном файле (envfile), вы можете использовать директиву EnvironmentFile следующим образом:
[Service]
EnvironmentFile=/etc/caddy/.env
Тогда ваш файл /etc/caddy/.env может выглядеть так (не используйте " кавычки вокруг значений):
CF_API_TOKEN=super-secret-cloudflare-tokenvalue
run и reload настройка
Если вам нужно изменить файл конфигурации с по умолчанию Caddyfile на файл JSON (обратите внимание, что директивы Exec* должны быть сброшены на пустые строки, прежде чем установить новое значение):
[Service]
ExecStart=
ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/caddy.json
ExecReload=
ExecReload=/usr/bin/caddy reload --config /etc/caddy/caddy.json
Перезапуск при сбое
Если вы хотите, чтобы caddy перезапустился через 5 секунд после непредвиденного сбоя:
[Service]
# Automatically restart caddy if it crashes except if the exit code was 1
RestartPreventExitStatus=1
Restart=on-failure
RestartSec=5s
Затем сохраните файл и выйдите из текстового редактора, и перезапустите службу, чтобы изменения вступили в силу:
sudo systemctl restart caddy Учет SELinux
В системах с включенным SELinux у вас есть два варианта:
-
Установите Caddy с помощью COPR repo. Ваш файл systemd и двоичный файл caddy уже будут созданы и правильно помечены (поэтому вы можете пропустить этот раздел). Если вы хотите использовать пользовательскую сборку Caddy, вам нужно будет пометить исполняемый файл, как описано ниже.
-
Скачайте Caddy с этого сайта или скомпилируйте его с помощью
xcaddy. В любом случае вам нужно будет пометить файлы самостоятельно.
Файлы единиц systemd и их исполняемые файлы не будут запущены, если не помечены systemd_unit_file_t и bin_t соответственно.
Метка systemd_unit_file_t автоматически применяется к файлам, созданным в /etc/systemd/..., поэтому обязательно создайте свой файл caddy.service там, как указано в инструкциях по ручной установке.
Чтобы пометить двоичный файл caddy, вы можете использовать следующую команду:
semanage fcontext -a -t bin_t /usr/bin/caddy && restorecon -Rv /usr/bin/caddy
Служба Windows
Существует два способа запуска Caddy в качестве службы в Windows: sc.exe или WinSW.
sc.exe
Для создания службы выполните:
sc.exe create caddy start= auto binPath= "YOURPATH\caddy.exe run" (замените YOURPATH на фактический путь к вашему caddy.exe)
Для запуска:
sc.exe start caddy Для остановки:
sc.exe stop caddy WinSW
Установите Caddy в качестве службы в Windows с помощью этих инструкций.
Требования:
-
caddy.exeдвоичный файл, который вы скачали или составили из исходного кода - Любая
.exeиз последней версии WinSW оболочки службы (ниже приведённая конфигурация службы написана для релизов v2.x)
Поместите все файлы в каталог службы. В следующих примерах мы используем C:\caddy.
Переименуйте файл WinSW-x64.exe в caddy-service.exe.
Добавьте файл caddy-service.xml в тот же каталог:
<service>
<id>caddy</id>
<!-- Display name of the service -->
<name>Caddy Web Server (powered by WinSW)</name>
<!-- Service description -->
<description>Caddy Web Server (https://caddyserver.com/)</description>
<executable>%BASE%\caddy.exe</executable>
<arguments>run</arguments>
<log mode="roll-by-time">
<pattern>yyyy-MM-dd</pattern>
</log>
</service>
Теперь вы можете установить службу с помощью:
caddy-service install Вы можете запустить консоль служб Windows, чтобы проверить, правильно ли работает служба:
services.msc Обратите внимание, что перезагрузка служб Windows невозможна, поэтому вы должны напрямую указать caddy перезагрузиться:
caddy reload Перезапуск возможен через обычные команды служб Windows, например, через вкладку «Службы» диспетчера задач.
Для настройки оболочки службы см. документацию WinSW
Docker Compose
Самый простой способ начать работу с Docker — использовать Docker Compose. См. документацию на Docker Hub для получения дополнительной информации об официальном образе Caddy Docker.
Настройка
Сначала создайте файл compose.yml (или добавьте эту службу в ваш существующий файл):
services:caddy:image:caddy:<version>restart:unless-stoppedports:- "80:80"- "443:443"- "443:443/udp"volumes:- ./Caddyfile:/etc/caddy/Caddyfile- ./site:/srv- caddy_data:/data- caddy_config:/configvolumes:caddy_data:caddy_config:
Убедитесь, что вы заполнили изображение <version> последним номером версии, который можно найти в разделе «Теги» на Docker Hub.
Что это делает:
- Использует политику перезапуска
unless-stopped, чтобы убедиться, что контейнер Caddy перезапускается автоматически при перезагрузке вашего компьютера. - Привязывает порты
80и443соответственно для HTTP и HTTPS, а также443/udpдля HTTP/3. - Привязывает файл конфигурации
Caddyfile, который является вашей конфигурацией Caddy. - Привязывает директорию
siteдля обслуживания статических файлов вашего сайта из/srv. - Использует объёмы для
/dataи/configдля сохранения важной информации.
Затем создайте файл с именем Caddyfile рядом с compose.yml и запишите в него конфигурацию Caddyfile.
Если у вас есть статические файлы для обслуживания, вы можете поместить их в директорию site/ рядом с конфигурациями, а затем установить root с помощью root * /srv. Если нет, то можно удалить привязку тома /srv.
Если вам нужен пользовательский сборка Caddy с плагинами, следуйте инструкциям сборки Docker по созданию пользовательского образа Docker. Создайте Dockerfile рядом с вашим compose.yml, а затем замените строку image: в вашем compose.yml на build: ..
Использование
Затем вы можете запустить контейнер:
docker compose up -d Для перезагрузки Caddy после внесения изменений в ваш Caddyfile:
docker compose exec -w /etc/caddy caddy caddy reload Чтобы просмотреть последние 1000 логов Caddy и f следить за потоком новых:
docker compose logs caddy -n=1000 -f HTTPS на локальном компьютере с Docker
При использовании Docker для локального разработки с HTTPS вы можете использовать доменное имя, например, localhost или app.localhost. Это позволяет использовать локальный HTTPS с помощью локального CA Caddy для выдачи сертификатов. Это означает, что клиенты HTTP вне контейнера не будут доверять TLS-сертификату, предоставляемому Caddy. Для решения этой проблемы вы можете установить корневой сертификат CA Caddy в хранилище доверия вашей машины-хоста:
docker compose cp \
caddy:/data/caddy/pki/authorities/local/root.crt \
/usr/local/share/ca-certificates/root.crt \
&& sudo update-ca-certificates docker compose cp \
caddy:/data/caddy/pki/authorities/local/root.crt \
/tmp/root.crt \
&& sudo security add-trusted-cert -d -r trustRoot \
-k /Library/Keychains/System.keychain /tmp/root.crt docker compose cp \
caddy:/data/caddy/pki/authorities/local/root.crt \
%TEMP%/root.crt \
&& certutil -addstore -f "ROOT" %TEMP%/root.crt Многие веб-браузеры сейчас используют собственное хранилище доверия (игнорируя хранилище доверия системы), поэтому вам также может потребоваться установить сертификат вручную, используя файл root.crt, скопированный из контейнера в команде выше.
-
Для Firefox перейдите в Настройки > Конфиденциальность и безопасность > Сертификаты > Просмотреть сертификаты > Авторитеты > Импортировать и выберите файл
root.crt. -
Для Chrome перейдите в Настройки > Конфиденциальность и безопасность > Безопасность > Управление сертификатами > Авторитеты > Импортировать и выберите файл
root.crt.
© 2015-2025 Matthew Holt and The Caddy Authors
Licensed under the Apache License 2.0.
Caddy is a registered trademark of Stack Holdings GmbH.
https://caddyserver.com/docs/running