Prvotno je postava mog bloga bila planirana kao čisti IPv6 projekt putem WireGuarda, budući da se cijela stvar pokreće na kućnom poslužitelju (besplatne IPv6 adrese se, usput, mogu dobiti na route64.org). Kako bih povećao dostupnost, sada sam dodao vanjski IPv4 proxy (hvala @Larvitz).
Pritom su se odmah pojavili SSL problemi: Budući da su prvotno i A i AAAA zapisi išli preko proxyja, Let's Encrypt validacija na mom poslužitelju nije uspjela.
Rješenje: „IPv6 hack“
Rješenje je bilo usmjeriti AAAA zapis eksplicitno izravno na WireGuard IP adresu mog poslužitelja, umjesto da ga također vodim preko proxyja.
- Domena:
blog.burningboard.org
- A zapis (Proxy):
194.28.98.217
- AAAA zapis (Poslužitelj):
2a11:6c7:f05:a8::2 (WireGuard)
Ovim izravnim AAAA zapisom na moju WireGuard IP adresu, Let’s Encrypt i dalje izravno pristupa mom poslužitelju putem IPv6 (budući da AAAA zapis ima prioritet prema zadanim postavkama) i izdaje SSL certifikat. IPv4 promet se od proxyja prosljeđuje meni u kriptiranom obliku.
Konačna konfiguracija
Kako bi komunikacija tekla bez poteškoća, morali smo prilagoditi Caddy poslužitelje:
1. Na mom poslužitelju (NixOS, blog.nix)
Kako bi stvarne IP adrese posjetitelja ispravno stizale i kako ih ne bi prepisala IP adresa proxyja, on mora biti označen kao pouzdan:
services.caddy.globalConfig = ''
servers {
trusted_proxies static 2a06:9801:1c:1000::10
}
'';
2. Na vanjskom proxyju (Caddy)
Kako bi proxy ispravno komunicirao s mojim poslužiteljem putem HTTPS-a, mora poslati naziv hosta (SNI):
reverse_proxy [https://[2a11:6c7:f05:a8::2]:443](https://[2a11:6c7:f05:a8::2]:443) {
header_up Host {host}
transport http {
tls_server_name blog.burningboard.org
}
}
Blog je sada dostupan putem IPv4 i IPv6, sigurno je kriptiran, a moja kućna IP adresa i dalje ostaje privatna! 🚀
Ono najvažnije za početak: uobičajene Markdown datoteke ostaju osnova – jednostavno sam veliki obožavatelj ovog jednostavnog rješenja. No, ispod haube se puno toga promijenilo:
Malo sam doradio postavke:
📂 MD datoteke: Struktura bloga ostaje jednostavna, temeljena na Markdownu.
🌍 Globalnije nego ikad: Moj blog sada podržava prijevode na 43 jezika. Da, uključujući i klingonski! 🖖 (Qapla'!)

Plan je bio imati potpuno automatski prijevod u stvarnom vremenu temeljen na prepoznavanju jezika preglednika. Spoiler: uspjelo je samo djelomično. Primjećuje se: AI je impresivan, ali još nije sasvim "tamo" gdje bismo željeli da bude.
Rješenje: Sada jednostavno unaprijed prevodim svaki članak na sve zadane jezike, što je također puno bolje za tražilice (SEO). Ako automatsko prepoznavanje ponekad ne proradi, možete ručno postaviti željeni jezik putem ikone globusa, koji se zatim jednostavno sprema putem kolačića.
Prijevodi se sada izvode pomoću modela Gemini 3 Flash, koji daje iznenađujuće dobre rezultate. Međutim, AI-ju treba pažljivo gledati kroz prste: u prvom masovnom prolazu pogrešno su prevedeni i tagovi, što naravno nije bilo planirano.
Kod je i dalje dostupan (ako ste zainteresirani, samo mi pošaljite poruku) 👍 No, imajte na umu da sustav sada zahtijeva vlastiti Gemini API ključ 🔑.
Bez puno oklijevanja prebacio sam svoj blog s platforme WriteFreely na vlastito rješenje: MD-Blog (MD, naravno, stoji za Markdown). Povod je bilo neuspjelo ažuriranje starog sustava – no na kraju je to bio savršen poticaj da sve radikalno pojednostavim i dobijem potpunu kontrolu nad dizajnom.
Srž sustava su jednostavne Markdown datoteke u mapi data/, koje se tijekom izvođenja pretvaraju u moderan HTML. Rezultat je munjevito brz, radi bez baze podataka i zahvaljujući vlastitom sustavu dizajna (uključujući tamni način rada) sada izgleda točno onako kako sam zamislio. Čak je i moderan gumb za dijeljenje na Mastodonu sada izravno uključen.
Ako vas zanima kod ili ovo jednostavno postavljanje, slobodno mi se javite putem Mastodona!