Сьогодні 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