Alun perin blogini oli suunniteltu puhtaaksi IPv6-projektiksi WireGuardin kautta, koska se pyörii kotipalvelimella (ilmaisia IPv6-osoitteita saa muuten osoitteesta route64.org). Saavutettavuuden parantamiseksi otin nyt käyttöön ulkoisen IPv4-proxyn (kiitos @Larvitz).
Tämän myötä ilmeni kuitenkin heti SSL-ongelmia: Koska alun perin sekä A- että AAAA-tietueet kulkivat proxyn kautta, Let's Encrypt -varmennus epäonnistui palvelimellani.
Ratkaisu: ”IPv6-kikka”
Ratkaisuna oli ohjata AAAA-tietue suoraan palvelimeni WireGuard-IP-osoitteeseen sen sijaan, että sekin kulkisi proxyn kautta.
- Domain:
blog.burningboard.org
- A-tietue (Proxy):
194.28.98.217
- AAAA-tietue (Palvelin):
2a11:6c7:f05:a8::2 (WireGuard)
Tämän suoran WireGuard-IP-osoitteeseen osoittavan AAAA-tietueen ansiosta Let’s Encrypt tavoittaa palvelimeni edelleen suoraan IPv6:n kautta (koska AAAA-tietue on oletuksena ensisijainen) ja myöntää SSL-sertifikaatin. IPv4-liikenne välitetään minulle proxyn kautta salattuna.
Lopullinen konfiguraatio
Jotta viestintä toimisi sujuvasti, meidän piti muokata Caddy-palvelimia:
1. Palvelimellani (NixOS, blog.nix)
Jotta vierailijoiden todelliset IP-osoitteet saapuvat oikein eivätkä korvaudu proxyn IP-osoitteella, proxy on merkittävä luotetuksi:
services.caddy.globalConfig = ''
servers {
trusted_proxies static 2a06:9801:1c:1000::10
}
'';
2. Ulkoisella proxylla (Caddy)
Jotta proxy ottaa yhteyttä palvelimeeni oikein HTTPS-yhteydellä, sen on lähetettävä isäntänimi (SNI) mukana:
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
}
}
Blogi on nyt saavutettavissa sekä IPv4- että IPv6-yhteyksillä, turvallisesti salattuna, ja kotini IP-osoite pysyy silti yksityisenä! 🚀
Tärkeintä ensin: Tutut Markdown-tiedostot pysyvät perustana – olen yksinkertaisesti tämän mutkattoman ratkaisun suuri fani. Konepellin alla on kuitenkin tapahtunut paljon:
Olen viilannut kokoonpanoa melkoisesti:
📂 MD-tiedostot: Blogin rakenne säilyy yksinkertaisena Markdown-pohjaisena.
🌍 Globaalimpi kuin koskaan: Blogini tukee nyt käännöksiä 43 kielelle. Kyllä, mukaan lukien klingoni! 🖖 (Qapla'!)

Suunnitelmana oli täysin automaattinen reaaliaikainen käännös selaimen kielitunnistuksen perusteella. Juonipaljastus: Se toimi vain osittain. Sen huomaa: tekoäly on vaikuttava, mutta ei vielä aivan siellä, missä haluaisimme sen olevan.
Ratkaisu: Käännän nyt jokaisen postauksen etukäteen kaikille määritetyille kielille, mikä on myös huomattavasti parempi hakukoneille (SEO). Jos automaattinen tunnistus ei toimi, voit valita haluamasi kielen manuaalisesti maapallo-kuvakkeen kautta, ja valinta tallennetaan kätevästi evästeen (cookie) avulla.
Käännökset tehdään nyt Gemini 3 Flashilla, joka tuottaa hämmästyttävän hyviä tuloksia. Tekoälyä on kuitenkin syytä vahtia tarkasti: ensimmäisellä massakierroksella myös tagit käännettiin virheellisesti, mikä ei tietenkään ollut tarkoitus.
Koodi on edelleen saatavilla (laita viestiä, jos olet kiinnostunut) 👍 Huomioi kuitenkin, että järjestelmä vaatii nyt oman Gemini API -avaimen 🔑.
Vaihdoin hiljattain blogini WriteFreelystä omaan kehitysprojektiini: MD-Blogiin (MD tarkoittaa tietenkin Markdownia). Syynä oli vanhan järjestelmän epäonnistunut päivitys – loppujen lopuksi se oli kuitenkin täydellinen sysäys yksinkertaistaa kaikki radikaalisti ja ottaa täysi hallinta ulkoasusta.
Ytimenä toimivat yksinkertaiset Markdown-tiedostot data/-kansiossa, jotka muunnetaan ajon aikana nykyaikaiseksi HTML:ksi. Lopputulos on salamannopea, toimii ilman tietokantaa ja näyttää oman design-järjestelmän (mukaan lukien tumma tila) ansiosta juuri siltä, miltä olin kuvitellutkin. Jopa moderni Mastodon-jakopainike on nyt suoraan mukana.
Jos olet kiinnostunut koodista tai tästä kevyestä kokoonpanosta, ota rohkeasti yhteyttä Mastodonissa!