Hlavní navigace

Web server Caddy: statické weby snadno a rychle

Michal Halenka

Vytvoření jednoduchého webu na vlastním stroji je stále ještě náročnější, než by si někteří představovali. Změnit se to snaží hned několik projektů. Jedním z nich je i webový server Caddy.

minulém článku byly představeny základní vlastnosti netradičního webového serveru Caddy. Ten se od ostatních odlišuje svým zaměřením na jednoduchou konfiguraci a snadné rozšíření. Jedním z těchto rozšíření je například git addon, díky kterému lze snadno Caddyho propojit s repozitářem, a s pomocí některého generátoru statických webů pak tvořit jednoduchý web za pár okamžiků.

CMS a ti druzí

Přestože je v dnešní době moderní používat pro správu webu content management systémy, ani staromódní způsob vytvoření obsahu na jiném stroji a jeho nakopírování na web server ještě neřekl své poslední slovo. V tomto případě se budeme věnovat právě druhému zmíněnému. Konkrétně se tedy pokusíme nastolit model, kdy obsah vytváříme i editujeme na lokálním stroji, a pak prostřednictvím verzovacího systému nahrajeme na správné místo.

Pro účely tohoto článku bude dále použit generátor statických webů Hugo, který generuje statické HTML soubory ze zdrojových dat ve značkovacím jazyce (např. Markdown). Pro reálné nasazení je samotná volba generátoru statických webů natolik nepodstatná, a instalace a používání generátoru Hugo je natolik triviální, že v tomto článku nebude zahrnuta.

Caddyfile

Konfiguraci základního zabezpečení jsme shrnuli v minulém článku. Na tomto základě by tedy konfigurace webu mohla vypadat nějak takto:

http://caddy.halenka.eu {
    redir https://caddy.halenka.eu/
}
https://caddy.halenka.eu {
    header / Strict-Transport-Security "max-age=1814400; includeSubDomains; preload"
    root ./blog/public/
} 

Git modul

Jak již bylo zmíněno, pro stahování dat využijeme git addon, který nasměrujeme na náš veřejný Git repozitář s obsahem webu. S příslušnou konfigurací pak vypadá takto:

http://caddy.halenka.eu {
    redir https://caddy.halenka.eu/
}
https://caddy.halenka.eu {
    header / Strict-Transport-Security "max-age=1814400; includeSubDomains; preload"
    root ./blog/public/
    git github.com/HalisCz/test-web {
        path ../
        branch master
        hook /webhook super-tajny-pristupovy-token
        then hugo --theme=base16
    }
    shutdown rm -r blog
} 

Kromě samotného zavolání modulu git, a předání cesty ke vzdálenému repozitáři, obsahuje konfigurace také cestu, do které bude repozitář naklonován. V tomto případě je klonován obsah repozitáře o úroveň výše, než je nastavený kořenový adresář webu. Díky tomu pak bude webový server zobrazovat HTML soubory z odpovídajícího adresáře. Dále je v konfiguraci nastavena volba větve repozitáře, webhook s přístupovým tokenem pro notifikaci o nových commitech ze vzdáleného repozitáře a volání příslušného příkazu pro vygenerování HTML stránek ze zdrojových dat. Na konec konfiguračního souboru byl doplněn příkaz pro smazání obsahu repozitáře při vypnutí webového serveru.

Posledním chybějícím střípkem konfigurace je pak nastavení Git repozitáře tak, aby při obdržení nových commitů notifikoval server na adrese https://caddy.halenka.eu/webhook s autorizačním tokenem  super-tajny-pristupovy-token.

Závěr

Caddy se snaží nechovat jen jako web server, ale i jako jednoduchá webová aplikace. Zatímco podobné chování by u jiných serverů vyžadovalo zapojení externích skriptů, Caddy přichází s modulem, díky kterému je zapotřebí jen konfigurace o desítce řádků. Ačkoliv je Caddy ještě velmi mladý, je zde vidět touha autorů po jednoduchosti, kterou se jejich výtvor rozhodně snaží naplnit, a bude přinejmenším zajímavé, kam dál se bude tento projekt ubírat.

Našli jste v článku chybu?