Generator Caddyfile
Prosta konfiguracja serwera Caddy
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator Caddyfile — konfiguracja bez bólu
Caddy to serwer WWW, który domyślnie obsługuje HTTPS — automatycznie pobiera i odnawia certyfikaty Let's Encrypt. Konfiguracja jest wyjątkowo krótka w porównaniu z Nginx czy Apache.
Tryby konfiguracji
| Tryb | Zastosowanie |
|---|---|
| Reverse proxy | przekierowanie ruchu do aplikacji (np. kontenera) |
| Strona statyczna | serwowanie plików HTML, CSS, JS z katalogu |
| PHP-FPM | aplikacje PHP, np. Laravel czy WordPress |
Dlaczego Caddy?
- HTTPS jest włączone domyślnie — bez ręcznej konfiguracji certyfikatów.
- Konfiguracja jest krótka i czytelna.
- Automatyczny HTTP/2 i HTTP/3.
- Prosta kompresja i przepisywanie adresów.
Uruchomienie
Zapisz wynik jako Caddyfile, a następnie uruchom caddy run lub użyj obrazu caddy:alpine w Dockerze, montując plik do /etc/caddy/Caddyfile.
Jak działa generator Caddyfile
Generator zbiera dane z formularza i składa z nich tekstowy plik Caddyfile. Każdy wpis trafia do bloku witryny, którego adresem jest domena albo localhost. Wewnątrz bloku pojawiają się dyrektywy zależne od wybranego trybu: reverse_proxy z adresem backendu, root i file_server przy statyce, php_fastcgi przy PHP. Narzędzie nie łączy się z serwerem — zwraca wyłącznie gotowy tekst do skopiowania.
Caddy czyta Caddyfile przez adapter, który zamienia go na konfigurację JSON. Dzięki temu ta sama treść działa zarówno w CLI (caddy run, caddy reload), jak i w obrazie Docker. Adres witryny w pierwszej linii decyduje o tym, czy Caddy uruchomi automatyczne HTTPS — dla domen publicznych próbuje pobrać certyfikat ACME, dla localhost wystawia certyfikat lokalny.
Kolejność dyrektyw w bloku ma znaczenie, ale Caddy normalizuje część zachowań, np. reverse_proxy jest terminalny i kończy przetwarzanie żądania. Generator ustawia je w bezpiecznej kolejności: najpierw reguły obowiązujące w całym bloku, takie jak kompresja i nagłówki, potem obsługa żądań. Dzięki temu nie trzeba znać wszystkich szczegółów składni, żeby dostać działającą bazę.
Przykład krok po kroku: reverse proxy dla aplikacji na porcie 3000
- Wpisz domenę app.example.com. To 1 adres w pierwszej linii Caddyfile. Zakładamy, że rekord DNS wskazuje na serwer i porty nasłuchu HTTP oraz HTTPS są osiągalne.
- Wybierz tryb Reverse proxy. Generator przygotuje 1 blok witryny.
- Podaj adres backendu 127.0.0.1:3000. To 1 dyrektywa reverse_proxy z 1 adresem upstream.
- Zaznacz kompresję. Dochodzi 1 dyrektywa encode gzip.
- Dodaj 2 nagłówki bezpieczeństwa: X-Frame-Options i Strict-Transport-Security. Powstaje 1 blok header z 2 liniami.
- Wygeneruj plik. Policzmy: 1 linia otwierająca blok, 3 dyrektywy najwyższego poziomu (encode, header, reverse_proxy), 2 linie nagłówków wewnątrz header oraz 2 klamry zamykające — razem 8 linii. Taki plik wystarczy, aby Caddy przyjął ruch na app.example.com i przekazał go do aplikacji na porcie 3000.
Dyrektywy Caddyfile według zastosowania
| Tryb lub funkcja | Dyrektywa | Kiedy używać |
|---|---|---|
| Reverse proxy | reverse_proxy | Gdy aplikacja działa na innym porcie lub w kontenerze i potrzebuje przekazania nagłówka Host oraz obsługi WebSocket. |
| Strona statyczna | root + file_server | Dla plików HTML, CSS, JS i obrazów leżących w katalogu; file_server domyślnie szuka index.html. |
| PHP-FPM | php_fastcgi | Dla WordPressa, Laravela i innych aplikacji PHP; skrót ustawia też obsługę plików statycznych. |
| Automatyczne HTTPS | adres w pierwszej linii | Wystarczy wpisać domenę; Caddy sam pobierze i odnowi certyfikat. |
| Kompresja | encode | Dla odpowiedzi tekstowych; najczęściej wystarcza gzip lub zstd. |
| Nagłówki bezpieczeństwa | header | Do dodania HSTS, X-Frame-Options i X-Content-Type-Options. |
| Przekierowanie | redir | Gdy chcesz przenieść ruch z jednej domeny na inną lub wymusić HTTPS. |
| Logi | log | Gdy potrzebujesz dziennika dostępu do debugowania lub analityki. |
Praktyczne wskazówki
- Trzymaj Caddyfile w repozytorium — plik jest tekstowy, więc łatwo go wersjonować i przeglądać zmiany przed wdrożeniem.
- Testuj konfigurację przed restartem — użyj caddy validate, aby sprawdzić składnię bez zatrzymywania działającej usługi.
- Nie mieszaj trybów bez potrzeby — jeśli aplikacja obsługuje wszystko sama, wybierz reverse proxy zamiast dokładać file_server i php_fastcgi.
- Pamiętaj o nagłówku Host — przy reverse proxy Caddy domyślnie przekazuje oryginalny Host; jeśli backend tego nie oczekuje, sprawdź zachowanie aplikacji.
- Zacznij od jednej domeny — kolejne wpisy dodawaj po sprawdzeniu, czy certyfikat i przekierowanie działają poprawnie.
Ograniczenia narzędzia
- Nie wdraża pliku — generator zwraca tylko tekst. Zapis, uprawnienia i restart usługi wykonujesz samodzielnie.
- Nie sprawdza DNS ani dostępności portów — automatyczne HTTPS zadziała tylko wtedy, gdy domena wskazuje na serwer, a wymagane porty są osiągalne z internetu.
- Nie zna Twojej aplikacji — nie wykryje, czy backend potrzebuje WebSocketów, niestandardowych nagłówków, limitów ciała żądania czy przekierowań wewnętrznych.
- Nie zastępuje dokumentacji Caddy — obsługiwane są typowe scenariusze; zaawansowane moduły, matchery i importy wymagają ręcznej edycji.
Najczęstsze pytania
Czy Caddy działa lokalnie bez domeny?
Tak — dla localhost Caddy wystawi certyfikat lokalny. Dla domen publicznych potrzebny jest publiczny adres IP i otwarte porty 80/443.
Czym różni się od Nginx?
Caddy jest prostszy w konfiguracji i sam zarządza certyfikatami. Nginx bywa wydajniejszy w bardzo dużych wdrożeniach i ma więcej gotowych przykładów.
Jak dodać nagłówki bezpieczeństwa?
W bloku domeny dodaj sekcję header { ... } z nagłówkami, np. X-Frame-Options i Strict-Transport-Security.
Gdzie zapisać plik Caddyfile?
Domyślnie Caddy szuka pliku o nazwie Caddyfile w katalogu roboczym. W Dockerze najczęściej montuje się go do /etc/caddy/Caddyfile i uruchamia obraz z tą samą ścieżką.
Jak obsłużyć wiele domen w jednym Caddyfile?
Każda domena to osobny blok z własnymi klamrami. Możesz też wypisać kilka adresów w jednej linii, oddzielając je przecinkami — wtedy podzielą jedną konfigurację.
Jak przekierować HTTP na HTTPS w Caddy?
Nie musisz tego robić ręcznie. Gdy w bloku podasz domenę, Caddy automatycznie przekierowuje ruch z portu HTTP na HTTPS. Osobna dyrektywa redir jest potrzebna tylko przy niestandardowych scenariuszach.
Jak włączyć kompresję w Caddyfile?
Dodaj dyrektywę encode z wybranym algorytmem, np. gzip lub zstd, wewnątrz bloku witryny. Caddy sam zdecyduje, które odpowiedzi warto kompresować.
Czy generator obsługuje WordPressa?
Tak, w trybie PHP-FPM generuje blok z php_fastcgi. Nadal musisz wskazać poprawny adres gniazda lub hosta PHP oraz katalog główny z plikami WordPressa.