Blogini // Digitaalinen arkisto

Ajatuksia, projekteja ja teknisiä muistiinpanoja

Näytä merkinnät tunnisteella: #md-blog Näytä kaikki ×

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!