Mano tinklaraštis // Skaitmeninis archyvas

Mintys, projektai ir techninės pastabos

Rodyti įrašus su žyma: #md-blog Rodyti visus ×

Iš pradžių mano tinklaraščio sąranka buvo planuojama kaip grynas IPv6 projektas per „WireGuard“, nes viskas veikia namų serveryje (beje, nemokamus IPv6 adresus galite gauti route64.org). Norėdamas padidinti pasiekiamumą, pridėjau išorinį IPv4 tarpinį serverį (proxy) (ačiū @Larvitz).

Tačiau iškart iškilo SSL problemų: kadangi iš pradžių tiek A, tiek AAAA įrašai buvo nukreipti per tarpinį serverį, „Let's Encrypt“ patvirtinimas mano serveryje nepavyko.

Sprendimas: „IPv6-Hack“

Sprendimas buvo nukreipti AAAA įrašą tiesiogiai į mano serverio „WireGuard“ IP adresą, užuot jį taip pat leidus per tarpinį serverį.

  • Domenas: blog.burningboard.org
  • A įrašas (Proxy): 194.28.98.217
  • AAAA įrašas (Serveris): 2a11:6c7:f05:a8::2 („WireGuard“)

Dėl šio tiesioginio AAAA įrašo į mano „WireGuard“ IP adresą, „Let’s Encrypt“ ir toliau pasiekia mano serverį tiesiogiai per IPv6 (nes AAAA įrašui pagal numatytuosius nustatymus teikiama pirmenybė) ir išduoda SSL sertifikatą. IPv4 srautas yra užšifruojamas tarpinio serverio ir perduodamas man.

Galutinė konfigūracija

Kad komunikacija vyktų sklandžiai, turėjome pakoreguoti „Caddy“ serverius:

1. Mano serveryje („NixOS“, blog.nix)

Kad tikrieji lankytojų IP adresai būtų gauti teisingai ir nebūtų perrašyti tarpinio serverio IP adresu, šis turi būti pažymėtas kaip patikimas:

services.caddy.globalConfig = ''
  servers {
      trusted_proxies static 2a06:9801:1c:1000::10
  }
'';

2. Išoriniame tarpiniame serveryje („Caddy“)

Kad tarpinis serveris teisingai kreiptųsi į mano serverį per HTTPS, jis turi nusiųsti mazgo pavadinimą (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
    }
}

Tinklaraštis dabar pasiekiamas per IPv4 ir IPv6, saugiai užšifruotas, o mano namų IP adresas vis tiek išlieka privatus! 🚀

Svarbiausia informacija: įprasti Markdown failai išlieka pagrindu – tiesiog esu didelis šio paprasto sprendimo gerbėjas. Tačiau „po kapotu“ daug kas pasikeitė:

Šiek tiek pakoregavau nustatymus:

📂 MD failai: tinklaraščio struktūra išlieka paprasta, pagrįsta Markdown.

🌍 Globaliau nei bet kada anksčiau: mano tinklaraštis dabar palaiko vertimus į 43 kalbas. Taip, įskaitant klingonų! 🖖 (Qapla'!)

Buvo planuotas visiškai automatinis vertimas realiuoju laiku, pagrįstas naršyklės kalbos atpažinimu. Spoileris: tai suveikė tik iš dalies. Galima pastebėti: DI yra įspūdingas, bet dar ne visai ten, kur norėtume.

Sprendimas: dabar tiesiog iš anksto išverčiu kiekvieną įrašą į visas nustatytas kalbas, o tai taip pat daug geriau paieškos sistemoms (SEO). Jei automatinis atpažinimas nesuveiktų, per gaublio piktogramą galite rankiniu būdu pasirinkti pageidaujamą kalbą, kuri vėliau paprastai išsaugoma naudojant slapuką (cookie).

Vertimai dabar atliekami naudojant „Gemini 3 Flash“, kuris pateikia stebėtinai gerus rezultatus. Tačiau DI reikia atidžiai stebėti: pirmojo masinio vykdymo metu per klaidą buvo išverstos ir žymos, o tai, žinoma, nebuvo planuota.

Kodas vis dar prieinamas (jei domina, tiesiog parašykite man žinutę) 👍 Tačiau atkreipkite dėmesį, kad sistemai dabar reikalingas nuosavas „Gemini“ API raktas 🔑.

Nieko nelaukęs pakeičiau savo tinklaraštį iš WriteFreely į savo sukurtą sprendimą: MD-Blog (MD, žinoma, reiškia Markdown). Priežastis buvo nepavykęs senosios sistemos atnaujinimas – tačiau galiausiai tai tapo puikiu impulsu viską radikaliai supaprastinti ir įgyti visišką dizaino kontrolę.

Pagrindas yra paprasti Markdown failai data/ aplanke, kurie vykdymo metu paverčiami šiuolaikišku HTML. Rezultatas yra žaibiškas, veikia be duomenų bazės ir dėl nuosavos dizaino sistemos (įskaitant tamsųjį režimą) dabar atrodo būtent taip, kaip ir įsivaizdavau. Netgi šiuolaikiškas Mastodon bendrinimo mygtukas dabar yra integruotas.

Jei domitės kodu ar šia paprasta sąranka, susisiekite su manimi per Mastodon!