Prvotno je bila nastavitev mojega bloga načrtovana kot čisti projekt IPv6 prek WireGuarda, saj vse skupaj gostuje na domačem strežniku (brezplačne naslove IPv6 lahko mimogrede dobite na route64.org). Da bi izboljšal dostopnost, sem zdaj dodal zunanji IPv4-proxy (hvala @Larvitz).
Pri tem pa so se takoj pojavile težave s SSL: Ker sta prvotno tako zapis A kot AAAA potekala prek proxyja, potrjevanje Let's Encrypt na mojem strežniku ni uspelo.
Rešitev: „IPv6-hek“
Rešitev je bila, da sem zapis AAAA eksplicitno usmeril neposredno na naslov IP WireGuard mojega strežnika, namesto da bi ga prav tako speljal prek proxyja.
- Domena:
blog.burningboard.org
- A-Record (Proxy):
194.28.98.217
- AAAA-Record (Server):
2a11:6c7:f05:a8::2 (WireGuard)
S tem neposrednim zapisom AAAA na moj naslov IP WireGuard Let’s Encrypt še naprej doseže moj strežnik neposredno prek IPv6 (ker ima zapis AAAA privzeto prednost) in izda certifikat SSL. Promet IPv4 pa proxy šifrirano posreduje meni.
Končna konfiguracija
Da bi komunikacija potekala nemoteno, smo morali prilagoditi strežnike Caddy:
1. Na mojem strežniku (NixOS, blog.nix)
Da bi pravi naslovi IP obiskovalcev prispeli pravilno in jih naslov IP proxyja ne bi prepisal, ga je treba označiti kot zaupanja vrednega:
services.caddy.globalConfig = ''
servers {
trusted_proxies static 2a06:9801:1c:1000::10
}
'';
2. Na zunanjem proxyju (Caddy)
Da bi proxy pravilno komuniciral z mojim strežnikom prek HTTPS, mora poslati ime gostitelja (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 zdaj dosegljiv prek IPv4 in IPv6, varno šifriran, moj domači naslov IP pa kljub temu ostaja zaseben! 🚀
Najprej najpomembnejše: Običajne datoteke Markdown ostajajo osnova – preprosto sem velik oboževalec te nezahtevne rešitve. Toda pod pokrovom se je veliko spremenilo:
Nekaj stvari sem spremenil v nastavitvah:
📂 MD-datoteke: Struktura bloga ostaja preprosta na osnovi Markdowna.
🌍 Bolj globalno kot kdaj koli prej: Moj blog zdaj podpira prevode v 43 jezikov. Da, vključno s klingonščino! 🖖 (Qapla'!)

Načrtovan je bil popolnoma samodejen prevod v realnem času na podlagi prepoznavanja jezika v brskalniku. Spoiler: Delovalo je le delno. Opaziti je mogoče: umetna inteligenca je impresivna, vendar še ni povsem "tam", kjer bi si želeli.
Rešitev: Zdaj preprosto vnaprej prevedem vsak prispevek v vse določene jezike, kar je tudi bistveno bolje za iskalnike (SEO). Če samodejno prepoznavanje ne deluje, lahko prek ikone globusa ročno nastavite želeni jezik, ki se nato preprosto shrani prek piškotka.
Prevodi se zdaj izvajajo z Gemini 3 Flash, kar daje presenetljivo dobre rezultate. Vendar pa je treba umetni inteligenci pozorno gledati pod prste: v prvem množičnem zagonu so bile pomotoma prevedene tudi oznake (tags), kar seveda ni bilo načrtovano.
Koda je še vedno na voljo (če vas zanima, mi preprosto pošljite sporočilo) 👍 Vendar upoštevajte, da sistem zdaj potrebuje lasten ključ Gemini API 🔑.
Svoj blog sem na hitro preklopil z WriteFreely na lastno rešitev: MD-Blog (MD seveda pomeni Markdown). Povod je bila neuspešna posodobitev starega sistema – na koncu pa je bil to popoln impulz, da vse korenito poenostavim in pridobim popoln nadzor nad dizajnom.
Srce sistema so preproste datoteke Markdown v mapi data/, ki se ob izvajanju pretvorijo v sodoben HTML. Rezultat je bliskovito hiter, deluje brez podatkovne baze in je zahvaljujoč lastnemu oblikovalskemu sistemu (vključno s temnim načinom) zdaj videti natanko tako, kot sem si zamislil. Zdaj je neposredno vključen celo sodoben gumb za deljenje na Mastodonu.
Če vas zanima koda ali vitka nastavitev, me kontaktirajte prek Mastodona!