Як встановити веб-сервер Caddy на Linux

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 готовий до використання на вашому сервері.