Отже, ти хочеш налаштувати вебсервер.
Чудово.
Це означає, що ти готовий увійти в древній світ:
- конфігураційних файлів,
- портів,
- логів,
- прав доступу,
- і загадкових помилок, які з’являються тільки тоді, коли ти вже втомлений.
Але сьогодні ми не обираємо страждання як основну робочу модель.
Сьогодні ми використовуємо 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="uk">
<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 і спокійно працювати у фоні.
І, чесно кажучи, це вже дуже багато.
Насолоджуйся своїм новим вебсервером.
І пам’ятай:
Найкраща серверна конфігурація — це та, яку ти все ще розумієш через три місяці.
