2024-11-08

Konfiguracja Caddy na Linuxie: web server, który próbuje zrobić robotę za ciebie

Prosty i humorystyczny poradnik instalacji Caddy na Linuxie, serwowania podstawowej strony HTML, używania Caddyfile i pozwolenia automatycznemu HTTPS na małą, cichą magię.

Konfiguracja Caddy na Linuxie: web server, który próbuje zrobić robotę za ciebie

A więc chcesz skonfigurować web server.

Świetnie.

To znaczy, że jesteś gotowy wejść do starożytnego świata:

  • plików konfiguracyjnych,
  • portów,
  • logów,
  • uprawnień,
  • i tajemniczych błędów, które pojawiają się tylko wtedy, kiedy jesteś zmęczony.

Ale dzisiaj nie wybieramy cierpienia jako głównego modelu pracy.

Dzisiaj używamy Caddy.

Caddy to nowoczesny web server, który potrafi serwować pliki statyczne, działać jako reverse proxy i automatycznie obsługiwać HTTPS, kiedy używasz prawdziwej domeny.

Innymi słowy, robi za ciebie wiele nudnych rzeczy.

Nie wszystkie, oczywiście.
To nadal Linux.
Nie jesteś całkowicie wolny.

Ale jesteś bardzo blisko.

Dlaczego Caddy?

Caddy jest popularny, ponieważ sprawia, że typowe zadania web servera stają się zaskakująco proste.

Z Caddy możesz:

  • serwować prostą stronę statyczną,
  • zrobić reverse proxy dla aplikacji,
  • używać czystej i czytelnej konfiguracji,
  • mieć automatyczne HTTPS z prawdziwą domeną,
  • przeładować konfigurację bez zamieniania wieczoru w dramatyczny dokument techniczny.

Jeśli Nginx czasami przypomina czytanie dokumentów prawnych napisanych przez bardzo poważnego robota, Caddy brzmi bardziej jak:

“Powiedz mi, jaką stronę chcesz, a ja spróbuję nie robić z tego dziwnej historii.”

Bardzo odświeżające.


Instalacja Caddy na Linuxie

Zainstalujemy Caddy na Arch Linux, Fedora i Ubuntu.

Wybierz swoją dystrybucję i wykonaj odpowiednie komendy.

Żadna ceremonia duchowa nie jest wymagana.

Prawdopodobnie.


Arch Linux: droga odważnych

Na Arch Linux instalacja jest pięknie prosta.

Uruchom:

sudo pacman -Syu caddy

I tyle.

Użytkownicy Archa kochają, kiedy rzeczy są proste, bo wtedy mają więcej czasu, żeby tłumaczyć, dlaczego używają Archa.

Sprawdź, czy Caddy został zainstalowany:

caddy version

Jeśli widzisz numer wersji, Caddy jest gotowy.

Twój terminal zatwierdził tę operację.

Na razie.


Fedora: czysto, nowocześnie i lekko poważnie

Na Fedorze zainstaluj Caddy poleceniem:

sudo dnf install caddy

Potem sprawdź wersję:

caddy version

Fedora zwykle sprawia wrażenie dopracowanej i profesjonalnej, jak stacja robocza, która pije espresso i czyta dokumentację przed śniadaniem.

Caddy pasuje tutaj bardzo dobrze.


Ubuntu: kilka kroków więcej, bo tradycja

Na Ubuntu najpierw dodamy oficjalne repozytorium Caddy.

Zainstaluj potrzebne pakiety:

sudo apt update
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl

Dodaj klucz 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

Dodaj repozytorium Caddy:

curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list

Nadaj odczyt dla klucza i listy repozytorium:

sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
sudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list

Zaktualizuj listę pakietów i zainstaluj Caddy:

sudo apt update
sudo apt install caddy

Teraz sprawdź wersję:

caddy version

Jeśli odpowiada, gratulacje.

Ubuntu i Caddy zaczęły ze sobą rozmawiać.

To już więcej komunikacji niż w niektórych systemach produkcyjnych.


Tworzymy prostą stronę internetową

Zanim skonfigurujemy coś poważnego, stwórzmy małą stronę HTML.

Bez dramatu.

Tylko tyle, żeby udowodnić, że serwer żyje i nie ocenia nas po cichu.

Utwórz folder:

mkdir my_website
cd my_website

Utwórz plik index.html:

nano index.html

Dodaj ten HTML:

<!DOCTYPE html>
<html lang="pl">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Cześć od Caddy</title>
</head>
<body>
  <h1>Cześć, świecie!</h1>
  <p>Ta prosta strona działa przez Caddy.</p>
</body>
</html>

Zapisz plik.

Masz teraz stronę internetową.

Małą, tak.

Ale Rzym też podobno zaczął się od jednego podejrzanie położonego kamienia.


Testowanie Caddy bez Caddyfile

Teraz uruchomimy serwowanie tego folderu bezpośrednio.

Upewnij się, że jesteś w folderze my_website:

pwd

Następnie uruchom:

caddy file-server --listen :8080

Otwórz przeglądarkę i przejdź pod adres:

http://localhost:8080

Jeśli widzisz swoją stronę, Caddy działa.

To piękny moment, kiedy przeglądarka coś pokazuje, a ty przez chwilę czujesz się jak administrator systemu.

Ciesz się tym.

To uczucie może nie trwać wiecznie.


Tworzenie Caddyfile

Uruchamianie Caddy z linii poleceń jest przydatne do testów.

Ale do prawdziwej konfiguracji zwykle potrzebujesz Caddyfile.

Caddyfile to plik konfiguracyjny Caddy.

Mówi Caddy, co ma serwować, skąd ma to serwować i jak dramatyczny ma być wieczór.

W folderze my_website utwórz plik o nazwie Caddyfile:

nano Caddyfile

Dodaj to:

localhost:8080 {
  root * .
  file_server
}

To mówi Caddy:

  • nasłuchuj na localhost:8080,
  • użyj aktualnego folderu jako root strony,
  • serwuj pliki z tego folderu.

Teraz uruchom Caddy używając Caddyfile:

caddy run

Otwórz:

http://localhost:8080

Jeśli strona pojawia się ponownie, wszystko działa.

Caddy przeczytał twoje instrukcje i zachował się jak odpowiedzialny dorosły.

Rzadkie, ale piękne.


Formatowanie Caddyfile

Caddy potrafi sam sformatować swój plik konfiguracyjny.

To przydatne, bo komputery często formatują lepiej niż ludzie, którzy próbują konfigurować serwer po kolacji.

Uruchom:

caddy fmt --overwrite Caddyfile

To uporządkuje formatowanie.

Schludny Caddyfile to szczęśliwy Caddyfile.

Albo przynajmniej mniej podejrzany.


Walidacja konfiguracji

Zanim użyjesz konfiguracji na poważnie, sprawdź ją:

caddy validate --config Caddyfile

Jeśli Caddy mówi, że konfiguracja jest poprawna, dobrze.

Jeśli narzeka, przeczytaj błąd uważnie.

Błędy Caddy zwykle są bardziej uprzejme niż błędy wielu innych web serverów.

To nie znaczy, że zawsze są przyjemne.

Ale przynajmniej próbują.


Używanie prawdziwej domeny z HTTPS

Tutaj Caddy robi się naprawdę ciekawy.

Jeśli masz prawdziwą domenę wskazującą na twój serwer, możesz napisać coś takiego:

example.com {
  root * /var/www/example.com
  file_server
}

Z prawdziwą domeną Caddy może automatycznie obsługiwać certyfikaty HTTPS.

To oznacza brak ręcznej walki z certyfikatami.

Brak długiego rytuału z losowymi plikami.

Brak emocjonalnej bitwy z odnowieniem certyfikatu o 01:13 w nocy.

Po prostu czysta konfiguracja i automatyczne HTTPS.

Prawie zbyt miłe, żeby nie było podejrzane.


Bardziej realistyczna konfiguracja strony statycznej

Na prawdziwym serwerze raczej nie chcesz trzymać strony w losowym folderze w katalogu domowym.

Typowe miejsce na strony internetowe to /var/www.

Utwórz folder dla swojej strony:

sudo mkdir -p /var/www/example.com

Skopiuj tam plik HTML:

sudo cp index.html /var/www/example.com/index.html

Teraz edytuj systemowy Caddyfile:

sudo nano /etc/caddy/Caddyfile

Użyj tej konfiguracji:

example.com {
  root * /var/www/example.com
  file_server
}

Zamień example.com na swoją prawdziwą domenę.

Następnie przeładuj Caddy:

sudo systemctl reload caddy

Jeżeli z jakiegoś powodu reload nie zadziała, zrestartuj usługę:

sudo systemctl restart caddy

Reload jest delikatniejszy.

Restart to metoda “wyłącz i włącz ponownie”.

Obie mają swoje miejsce w świętej historii informatyki.


Uruchamianie Caddy jako usługi systemowej

Jeśli zainstalowałeś Caddy przez menedżera pakietów swojej dystrybucji, możesz uruchamiać go przez systemd.

Włącz Caddy, żeby startował automatycznie przy uruchomieniu systemu:

sudo systemctl enable caddy

Uruchom go teraz:

sudo systemctl start caddy

Albo zrób obie rzeczy jednocześnie:

sudo systemctl enable --now caddy

Sprawdź status:

sudo systemctl status caddy

Jeśli widzisz:

active (running)

Caddy żyje i pracuje.

Twój serwer ma teraz małego pracownika, który nigdy nie śpi.

Traktuj go lepiej niż wiele firm traktuje stażystów.


Przeładowanie Caddy po zmianach

Kiedy zmieniasz /etc/caddy/Caddyfile, przeładuj Caddy:

sudo systemctl reload caddy

To zastosuje nową konfigurację bez pełnego zatrzymywania usługi.

Przed przeładowaniem możesz też sprawdzić systemowy Caddyfile:

sudo caddy validate --config /etc/caddy/Caddyfile

To dobry nawyk.

Nie ekscytujący.

Ale wiele dobrych nawyków jest nudnych.

Właśnie dlatego ratują nas przed przyszłym cierpieniem.


Sprawdzanie logów Caddy

Jeśli coś nie działa, sprawdź logi:

sudo journalctl -u caddy -f

To pokazuje logi Caddy w czasie rzeczywistym.

To trochę jak słuchać, jak twój serwer szepcze:

“Oto dokładnie dlaczego odmawiam współpracy.”

Czasami logi są pomocne.

Czasami edukacyjne.

Czasami wyglądają jak osobisty atak napisany językiem technicznym.

Mimo wszystko czytaj je.


Przydatne komendy Caddy

Oto kilka wygodnych komend.

Sprawdzenie wersji Caddy

caddy version

Uruchomienie Caddy w aktualnym folderze

caddy file-server --listen :8080

Uruchomienie Caddy z Caddyfile

caddy run

Formatowanie Caddyfile

caddy fmt --overwrite Caddyfile

Walidacja Caddyfile

caddy validate --config Caddyfile

Restart usługi systemowej

sudo systemctl restart caddy

Przeładowanie usługi systemowej

sudo systemctl reload caddy

Wyświetlanie logów

sudo journalctl -u caddy -f

Mała uwaga o portach

Do lokalnych testów port 8080 jest wygodny.

Zwykle nie wymaga specjalnych uprawnień i nie kłóci się z innymi web serverami.

Dla prawdziwych stron normalnie używa się:

  • portu 80 dla HTTP,
  • portu 443 dla HTTPS.

Jeśli inna usługa już używa tych portów, Caddy może odmówić startu.

Aby sprawdzić, co nasłuchuje, uruchom:

sudo ss -tulpn

Potem szukaj :80 lub :443.

Jeśli znajdziesz tam inny web server, gratulacje.

Masz teraz małą serwerową dyskusję do rozwiązania.


Końcowe przemyślenia

I gotowe.

Zainstalowałeś Caddy, stworzyłeś prostą stronę HTML, uruchomiłeś ją lokalnie, napisałeś Caddyfile i nauczyłeś się uruchamiać Caddy jako usługę systemową.

Nieźle.

Caddy to jedno z tych narzędzi, które sprawiają, że konfiguracja serwera mniej przypomina starożytną magię, a bardziej rozmowę z bardzo praktycznym asystentem.

Nie zbuduje strony za ciebie.

Nie naprawi twojego CSS.

Nie wyjaśni, dlaczego JavaScript działa tylko po dwukrotnym odświeżeniu strony.

Ale może serwować twoją stronę, obsłużyć HTTPS i spokojnie działać w tle.

I szczerze mówiąc, to już bardzo dużo.

Ciesz się swoim nowym web serverem.

I pamiętaj:

Najlepsza konfiguracja serwera to taka, którą nadal rozumiesz po trzech miesiącach.