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

Сьогодні HTTPS є ключовим під час розміщення веб-сайту. Без цього ваші користувачі можуть витікати дуже особисті дані з вашого веб-сайту в світ. Щоб вирішити цю проблему, багато веб-майстрів Linux почали використовувати інструменти LetsEncrypt, оскільки вони дуже легко генерують сертифікат. Тим не менш, оскільки LetsEncrpyt так просто, увімкнути його на Nginx або Apache в Linux все ще може бути клопіткою. На щастя, є кращий спосіб. Представляємо веб-сервер Caddy. Це веб-сервер, на якому за замовчуванням увімкнено HTTPS. Якщо вам набридло клопоти з сертифікатами SSL, Caddy може бути саме тим, що вам потрібно.

Встановлення Caddy

Встановлення веб-сервера Caddy працює майже однаково незалежно від того, яку операційну систему сервера ви використовуєте. Причина, по якій Caddy так легко встановити, полягає в тому, що розробник вирішив використовувати сценарій Bash, який можна завантажити, для встановлення програмного забезпечення, замість того, щоб додавати сховища програмного забезпечення сторонніх розробників або встановлювати його через двійкові файли.

У цьому підручнику ми будемо використовувати Ubuntu Server, хоча запуск веб-сервера Caddy буде добре працювати на більшості інших ОС Linux, навіть на настільних. Для початку переконайтеся, що у вас є програма Curl на вашому ПК з Linux. Якщо ви цього не зробите, відкрийте термінал, знайдіть у диспетчері пакетів «curl» і встановіть його.

Примітка: визначте, чи у вас уже є curl, запустивши curl у терміналі. Якщо для програми з’явиться діалогове вікно «довідка», у вас є Curl на вашому комп’ютері з Linux.

curl https://getcaddy.com | bash -s personal

Веб-сервер Caddy можна безкоштовно використовувати для особистого користування, але його потрібно вказати. Плануєте використовувати Caddy на підприємстві? Виконайте команду встановлення за допомогою:

curl https://getcaddy.com | bash -s commercial

Запуск Curl переведе його через Bash і автоматично розпочне процес встановлення. Програмі встановлення Caddy знадобиться час, щоб завантажити двійковий файл веб-сервера та розмістити його в каталозі /usr/local/bin/. Якщо інсталяція пройшла успішно, ви побачите повідомлення «Успішно встановлено».

На цьому етапі вам потрібно буде змінити двійковий файл Caddy. Виконайте наступну команду в терміналі з привілеями sudo.

sudo setcap cap_net_bind_service=+ep /usr/local/bin/caddy

Налаштування Caddy

Caddy встановлено на сервері. Наступним кроком у цьому процесі є налаштування структури каталогів. Почніть з отримання кореневого терміналу. Це зробить змінення папок у файловій системі набагато швидшим, оскільки вам не потрібно буде вводити sudo для кожної команди, а потім і пароль.

У більшості систем користувачі можуть входити безпосередньо в кореневий обліковий запис за допомогою:

su

Однак на сервері Ubuntu обліковий запис Root заблоковано з міркувань безпеки. Щоб обійти це, отримайте кореневу оболонку за допомогою sudo.

sudo -s

Тепер, коли у нас є root-доступ, створіть необхідні каталоги для коректної роботи сервера Caddy.

mkdir /etc/caddy

mkdir /etc/ssl/caddy

Примітка. Якщо на вашому сервері вже є каталог /var/www/, пропустіть останню команду mkdir.

mkdir /var/www

Далі створіть новий «Caddyfile» всередині /etc/caddy/.

touch /etc/caddy/Caddyfile

За допомогою команди chmod оновіть дозволи для підтеки Caddy всередині /etc/ssl/.

chmod 0770 /etc/ssl/caddy

Нарешті, перейдіть до каталогу /var/www/:

chown www-data: /var/www

Файл Caddy Systemd

Більшість серверів, особливо сервер Ubuntu, інтенсивно використовують систему ініціалізації systemd. Однак, оскільки веб-сервер встановлюється за допомогою сценарію Bash, файл systemd відсутній. Замість цього нам потрібно буде зробити свої власні. Використовуйте команду touch, щоб створити новий, порожній службовий файл.

touch /lib/systemd/system/caddy.service

Відкрийте новий файл caddy.service і вставте в нього наступний код:

[Unit]
Опис=Веб-сервер Caddy HTTP/2
Документація=https://caddyserver.com/docs
Після=network-online.target
Хоче=network-online.target

[Service]
Перезапуск = у разі відмови
StartLimitInterval=86400
StartLimitBurst=5

Користувач=www-data
Група=www-дані
; Сертифікати, видані Letsencrypt, будуть записані в цей каталог.
Середовище=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
МежаNPROC=64

PrivateTmp=true
PrivateDevices=true
ProtectHome=true
ProtectSystem = повний
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. Вийдіть з редактора за допомогою Ctrl + X.

systemctl enable caddy.service

systemctl start caddy.service

Після налаштування systemd все має бути готове до роботи.

Налаштування доменів

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, щоб зберегти зміни. Коли служба завершить перезапуск, Caddy готовий до використання на вашому сервері.

systemctl restart caddy.service