Итак, ты хочешь настроить веб-сервер.
Отлично.
Это значит, что ты готов войти в древний мир:
- конфигурационных файлов,
- портов,
- логов,
- прав доступа,
- и загадочных ошибок, которые появляются только тогда, когда ты уже устал.
Но сегодня мы не выбираем страдание как основную рабочую модель.
Сегодня мы используем Caddy.
Caddy — это современный веб-сервер, который может отдавать статические файлы, работать как reverse proxy и автоматически управлять HTTPS, если ты используешь настоящий домен.
Другими словами, он делает много скучной работы за тебя.
Не всю, конечно.
Это всё ещё Linux.
Ты не полностью свободен.
Но уже очень близко.
Почему Caddy?
Caddy популярен потому, что делает типичные задачи веб-сервера удивительно простыми.
С Caddy ты можешь:
- запускать простой статический сайт;
- делать reverse proxy для приложения;
- использовать чистую и понятную конфигурацию;
- получить автоматический HTTPS с настоящим доменом;
- перезагружать конфигурацию без превращения вечера в драматический технический сериал.
Если Nginx иногда похож на чтение юридических документов, написанных очень серьёзным роботом, то Caddy звучит примерно так:
“Скажи мне, какой сайт ты хочешь, и я постараюсь не делать из этого странную историю.”
Очень освежает.
Установка Caddy на Linux
Установим Caddy на Arch Linux, Fedora и Ubuntu.
Выбери свой дистрибутив и выполни соответствующие команды.
Никакая духовная церемония не требуется.
Скорее всего.
Arch Linux: путь смелых
На Arch Linux установка прекрасна своей простотой.
Запусти:
sudo pacman -Syu caddy
И всё.
Пользователи Arch любят, когда всё просто, потому что тогда у них остаётся больше времени объяснять, почему они используют Arch.
Проверь, установлен ли Caddy:
caddy version
Если видишь номер версии — Caddy готов.
Твой терминал одобрил эту операцию.
Пока что.
Fedora: чисто, современно и немного серьёзно
На Fedora установи Caddy командой:
sudo dnf install caddy
Потом проверь версию:
caddy version
Fedora обычно выглядит отполированной и профессиональной, как рабочая станция, которая пьёт эспрессо и читает документацию перед завтраком.
Caddy здесь очень хорошо подходит.
Ubuntu: несколько шагов больше, потому что традиция
На Ubuntu сначала добавим официальный репозиторий Caddy.
Установи нужные пакеты:
sudo apt update
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
Добавь GPG-ключ Caddy:
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
Добавь репозиторий Caddy:
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
sudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list
Обнови список пакетов и установи Caddy:
sudo apt update
sudo apt install caddy
Теперь проверь версию:
caddy version
Если он отвечает — поздравляю.
Ubuntu и Caddy начали общаться.
Это уже больше коммуникации, чем в некоторых production-системах.
Создаём простой сайт
Перед тем как настраивать что-то серьёзное, создадим маленькую HTML-страницу.
Без драмы.
Просто достаточно, чтобы доказать: сервер живой и не осуждает нас молча.
Создай папку:
mkdir my_website
cd my_website
Создай файл index.html:
nano index.html
Добавь этот HTML:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Привет от Caddy</title>
</head>
<body>
<h1>Привет, мир!</h1>
<p>Этот простой сайт работает через Caddy.</p>
</body>
</html>
Сохрани файл.
Теперь у тебя есть сайт.
Маленький, да.
Но и Рим, говорят, начинался с одного подозрительно положенного камня.
Тестирование Caddy без Caddyfile
Теперь запустим отдачу этой папки напрямую.
Убедись, что ты внутри папки my_website:
pwd
Потом запусти:
caddy file-server --listen :8080
Открой браузер и перейди по адресу:
http://localhost:8080
Если видишь свою страницу — Caddy работает.
Это прекрасный момент, когда браузер что-то показывает, а ты на несколько секунд чувствуешь себя системным администратором.
Наслаждайся.
Это чувство может длиться недолго.
Создание Caddyfile
Запускать Caddy из командной строки удобно для тестов.
Но для реальной конфигурации обычно нужен Caddyfile.
Caddyfile — это конфигурационный файл Caddy.
Он говорит Caddy, что отдавать, откуда отдавать и насколько драматичным должен быть вечер.
В папке my_website создай файл с названием Caddyfile:
nano Caddyfile
Добавь это:
localhost:8080 {
root * .
file_server
}
Это говорит Caddy:
- слушать на
localhost:8080; - использовать текущую папку как root сайта;
- отдавать файлы из этой папки.
Теперь запусти Caddy с использованием Caddyfile:
caddy run
Открой:
http://localhost:8080
Если страница снова появляется — всё работает.
Caddy прочитал твои инструкции и ведёт себя как ответственный взрослый.
Редко, но красиво.
Форматирование Caddyfile
Caddy может сам форматировать свой конфигурационный файл.
Это полезно, потому что компьютеры часто форматируют лучше, чем люди, которые пытаются настроить сервер после ужина.
Запусти:
caddy fmt --overwrite Caddyfile
Это приведёт форматирование в порядок.
Аккуратный Caddyfile — счастливый Caddyfile.
Или хотя бы менее подозрительный.
Проверка конфигурации
Перед тем как использовать конфигурацию серьёзно, проверь её:
caddy validate --config Caddyfile
Если Caddy говорит, что конфигурация правильная — хорошо.
Если жалуется — внимательно прочитай ошибку.
Ошибки Caddy обычно вежливее, чем ошибки многих других веб-серверов.
Это не значит, что они всегда приятные.
Но по крайней мере они стараются.
Использование настоящего домена с HTTPS
Вот здесь Caddy становится действительно интересным.
Если у тебя есть настоящий домен, который указывает на твой сервер, можно написать что-то такое:
example.com {
root * /var/www/example.com
file_server
}
С настоящим доменом Caddy может автоматически управлять HTTPS-сертификатами.
Это значит: никакой ручной борьбы с сертификатами.
Никаких длинных ритуалов со случайными файлами.
Никакой эмоциональной битвы с обновлением сертификата в 01:13 ночи.
Просто чистая конфигурация и автоматический HTTPS.
Почти слишком приятно, чтобы не быть подозрительным.
Более реалистичная конфигурация статического сайта
На реальном сервере ты, скорее всего, не захочешь держать сайт в случайной папке в домашней директории.
Типичное место для сайтов — /var/www.
Создай папку для своего сайта:
sudo mkdir -p /var/www/example.com
Скопируй туда HTML-файл:
sudo cp index.html /var/www/example.com/index.html
Теперь отредактируй системный Caddyfile:
sudo nano /etc/caddy/Caddyfile
Используй такую конфигурацию:
example.com {
root * /var/www/example.com
file_server
}
Замени example.com на свой настоящий домен.
Потом перезагрузи Caddy:
sudo systemctl reload caddy
Если по какой-то причине reload не работает, перезапусти сервис:
sudo systemctl restart caddy
Reload — более деликатный.
Restart — это метод “выключить и включить снова”.
Оба имеют своё место в священной истории IT.
Запуск Caddy как системного сервиса
Если ты установил Caddy через пакетный менеджер своего дистрибутива, его можно запускать через systemd.
Включи Caddy, чтобы он стартовал автоматически при запуске системы:
sudo systemctl enable caddy
Запусти его сейчас:
sudo systemctl start caddy
Или сделай обе вещи сразу:
sudo systemctl enable --now caddy
Проверь статус:
sudo systemctl status caddy
Если видишь:
active (running)
Caddy живой и работает.
Теперь у твоего сервера есть маленький работник, который никогда не спит.
Относись к нему лучше, чем многие компании относятся к стажёрам.
Перезагрузка Caddy после изменений
Когда изменяешь /etc/caddy/Caddyfile, перезагрузи Caddy:
sudo systemctl reload caddy
Это применит новую конфигурацию без полной остановки сервиса.
Перед reload можно также проверить системный Caddyfile:
sudo caddy validate --config /etc/caddy/Caddyfile
Это хорошая привычка.
Не захватывающая.
Но многие хорошие привычки скучные.
Именно поэтому они спасают нас от будущих страданий.
Просмотр логов Caddy
Если что-то не работает, проверь логи:
sudo journalctl -u caddy -f
Это показывает логи Caddy в реальном времени.
Это немного похоже на то, как твой сервер шепчет:
“Вот точная причина, почему я отказываюсь сотрудничать.”
Иногда логи полезные.
Иногда обучающие.
Иногда выглядят как личная атака, написанная техническим языком.
Всё равно читай их.
Полезные команды Caddy
Вот несколько удобных команд.
Проверить версию Caddy
caddy version
Запустить Caddy в текущей папке
caddy file-server --listen :8080
Запустить Caddy с Caddyfile
caddy run
Форматировать Caddyfile
caddy fmt --overwrite Caddyfile
Проверить Caddyfile
caddy validate --config Caddyfile
Перезапустить системный сервис
sudo systemctl restart caddy
Перезагрузить системный сервис
sudo systemctl reload caddy
Посмотреть логи
sudo journalctl -u caddy -f
Маленькая заметка о портах
Для локальных тестов порт 8080 очень удобен.
Обычно он не требует специальных прав и не конфликтует с другими веб-серверами.
Для настоящих сайтов обычно используют:
- порт
80для HTTP; - порт
443для HTTPS.
Если другой сервис уже использует эти порты, Caddy может отказаться запускаться.
Чтобы проверить, что слушает порты, запусти:
sudo ss -tulpn
Потом ищи :80 или :443.
Если найдёшь там другой веб-сервер — поздравляю.
У тебя теперь есть маленькая серверная дискуссия, которую нужно решить.
Финальные мысли
Готово.
Ты установил Caddy, создал простую HTML-страницу, запустил её локально, написал Caddyfile и научился запускать Caddy как системный сервис.
Неплохо.
Caddy — один из тех инструментов, которые делают настройку сервера менее похожей на древнюю магию и больше похожей на разговор с очень практичным помощником.
Он не построит сайт за тебя.
Не исправит твой CSS.
Не объяснит, почему JavaScript работает только после двух обновлений страницы.
Но он может отдавать твой сайт, управлять HTTPS и спокойно работать в фоне.
И, честно говоря, это уже очень много.
Наслаждайся своим новым веб-сервером.
И помни:
Лучшая серверная конфигурация — это та, которую ты всё ещё понимаешь через три месяца.
