Caddy: Веб-сервер з автоматичним HTTPS
У сучасну епоху, наявність HTTPS є невід’ємною вимогою для будь-якого веб-сайту. Без належного шифрування, дані користувачів можуть бути легко перехоплені, що ставить під загрозу їхню конфіденційність. Для вирішення цієї проблеми, багато адміністраторів Linux-серверів використовують LetsEncrypt, зручний інструмент для генерації SSL-сертифікатів. Проте, навіть з простотою LetsEncrypt, налаштування HTTPS на Nginx або Apache може виявитися складним завданням. На щастя, існує простіший варіант – веб-сервер Caddy. Цей сервер має вбудовану підтримку HTTPS “з коробки”. Якщо ви втомилися від проблем з SSL, Caddy може стати ідеальним рішенням.
Інсталяція Caddy
Процес встановлення Caddy є майже ідентичним на різних операційних системах Linux. Розробники Caddy вирішили використовувати скрипт Bash для автоматизації інсталяції, що робить його дуже зручним та простим. Вам не потрібно буде додавати сторонні репозиторії або встановлювати бінарні файли вручну.
У цьому посібнику ми будемо використовувати Ubuntu Server, але Caddy чудово працює на більшості інших дистрибутивів Linux, включаючи настільні версії. Перш за все, переконайтеся, що на вашій системі встановлено інструмент Curl. Якщо його немає, відкрийте термінал та встановіть його за допомогою менеджера пакетів.
Примітка: Щоб перевірити, чи встановлено Curl, просто введіть `curl` в терміналі. Якщо з’явиться довідка, значить інструмент вже є на вашій системі.
Для інсталяції Caddy для особистого користування, скористайтеся наступною командою:
curl https://getcaddy.com | bash -s personal
Caddy безкоштовний для особистого використання, але це потрібно вказати. Для комерційного використання скористайтесь цією командою:
curl https://getcaddy.com | bash -s commercial
Скрипт Curl завантажить та встановить Caddy на ваш сервер. Процес інсталяції може зайняти деякий час. Після успішного встановлення, бінарний файл буде розміщено у каталозі /usr/local/bin/, і ви побачите повідомлення “Successfully installed”.
Після встановлення необхідно надати бінарному файлу Caddy відповідні права. Виконайте наступну команду в терміналі з правами sudo:
sudo setcap cap_net_bind_service=+ep /usr/local/bin/caddy
Конфігурація Caddy
Після встановлення Caddy, необхідно налаштувати структуру каталогів для його коректної роботи. Для початку, перейдіть до кореневого терміналу. Це прискорить процес налаштування, оскільки вам не потрібно буде постійно вводити `sudo` та пароль.
На більшості систем, користувач може увійти в root-обліковий запис за допомогою:
su
Проте, на Ubuntu Server, root-доступ заблоковано з міркувань безпеки. Для отримання root-оболонки скористайтесь командою `sudo`:
sudo -s
Тепер, маючи root-доступ, створіть необхідні каталоги для роботи Caddy:
mkdir /etc/caddy mkdir /etc/ssl/caddy
Примітка: Якщо на вашому сервері вже існує каталог /var/www/, пропустіть наступну команду.
mkdir /var/www
Далі створіть файл `Caddyfile` у каталозі /etc/caddy/.
touch /etc/caddy/Caddyfile
Змініть права доступу до підкаталогу Caddy в /etc/ssl/:
chmod 0770 /etc/ssl/caddy
Нарешті, змініть власника каталогу /var/www/:
chown www-data: /var/www
Файл Systemd для Caddy
Більшість серверів, особливо Ubuntu Server, використовують систему ініціалізації systemd. Оскільки Caddy встановлюється через Bash-скрипт, необхідний файл systemd відсутній. Тому нам потрібно створити його вручну. Скористайтесь командою `touch` для створення порожнього файлу:
touch /lib/systemd/system/caddy.service
Відкрийте новостворений файл `caddy.service` та вставте наступний конфігураційний код:
[Unit]
Description=Веб-сервер Caddy HTTP/2
Documentation=https://caddyserver.com/docs
After=network-online.target
Wants=network-online.target
[Service]
Restart=on-failure
StartLimitInterval=86400
StartLimitBurst=5
User=www-data
Group=www-data
; Сертифікати, видані Letsencrypt, будуть записані в цей каталог.
Environment=CADDYPATH=/etc/ssl/caddy
ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp
ExecReload=/bin/kill -USR1 $MAINPID
LimitNOFILE=1048576
LimitNPROC=64
PrivateTmp=true
PrivateDevices=true
ProtectHome=true
ProtectSystem=full
ReadWriteDirectories=/etc/ssl/caddy
; Наступні додаткові директиви безпеки працюють лише з systemd версії 229 або новішої.
; Крім того, вони обмежують привілеї, які можна отримати за допомогою кедді. Розкоментуйте, якщо хочете.
; Зауважте, що вам, можливо, доведеться додати можливості, необхідні для будь-яких використовуваних плагінів.
;CapabilityBoundingSet=CAP_NET_BIND_SERVICE
;AmbientCapabilities=CAP_NET_BIND_SERVICE
;NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
Код для файлу `caddy.service` може здатися об’ємним, тому переконайтеся, що все введено правильно. Після збереження змін, закрийте редактор, натиснувши комбінацію клавіш Ctrl + X.
Активуйте та запустіть службу Caddy:
systemctl enable caddy.service systemctl start caddy.service
Тепер Caddy має бути налаштовано та готове до роботи.
Налаштування Доменів
Caddy, як і будь-який інший веб-сервер, потребує додаткової конфігурації для роботи з доменами. Спочатку створіть каталог для вашого домену.
Примітка: Замініть “test-domain.org” на ваше доменне ім’я.
mkdir -p /var/www/test-domain.org/
Відкрийте для редагування файл `Caddyfile`:
nano /etc/caddy/Caddyfile
Вставте наступний код для активації нового домену:
my-domain.com {
root /var/www/test-domain.org
}
Перезапустіть службу Caddy systemd, щоб зміни набули чинності:
systemctl restart caddy.service
Після перезапуску служби, Caddy готовий до використання на вашому сервері.