నా బ్లాగ్ // డిజిటల్ ఆర్కైవ్

ఆలోచనలు, ప్రాజెక్టులు మరియు సాంకేతిక గమనికలు

ట్యాగ్‌తో ఎంట్రీలను చూపించు: #md-blog అన్నీ చూపించు ×

ప్రారంభంలో నా బ్లాగ్ సెటప్ హోమ్ సర్వర్‌పై నడుస్తున్నందున వైర్‌గార్డ్ (WireGuard) ద్వారా కేవలం IPv6-ప్రాజెక్ట్ గా ప్లాన్ చేయబడింది (మీరు route64.org నుండి ఉచిత IPv6 అడ్రస్‌లను పొందవచ్చు). యాక్సెసిబిలిటీని పెంచడానికి, నేను ఇప్పుడు ఒక ఎక్స్‌టర్నల్ IPv4 ప్రాక్సీని జోడించాను (@Larvitz కి ధన్యవాదాలు).

అయితే, దీనివల్ల వెంటనే SSL సమస్యలు తలెత్తాయి: మొదట A మరియు AAAA రికార్డ్‌లు రెండూ ప్రాక్సీ ద్వారా వెళ్లడం వల్ల, నా సర్వర్‌పై Let's Encrypt వ్యాలిడేషన్ విఫలమైంది.

పరిష్కారం: „IPv6-హ్యాక్“

దీనికి పరిష్కారం ఏమిటంటే, AAAA-రికార్డ్ ను ప్రాక్సీ ద్వారా పంపకుండా నేరుగా నా సర్వర్ యొక్క వైర్‌గార్డ్ IPకి పంపడం.

  • డొమైన్: blog.burningboard.org
  • A-రికార్డ్ (ప్రాక్సీ): 194.28.98.217
  • AAAA-రికార్డ్ (సర్వర్): 2a11:6c7:f05:a8::2 (WireGuard)

నా వైర్‌గార్డ్ IPకి ఈ డైరెక్ట్ AAAA-రికార్డ్ ద్వారా, Let’s Encrypt నా సర్వర్‌ను నేరుగా IPv6 ద్వారా చేరుకుంటుంది (ఎందుకంటే AAAA-రికార్డ్ డిఫాల్ట్‌గా ప్రాధాన్యత పొందుతుంది) మరియు SSL సర్టిఫికేట్‌ను జారీ చేస్తుంది. IPv4 ట్రాఫిక్ ప్రాక్సీ ద్వారా ఎన్‌క్రిప్ట్ చేయబడి నాకు పంపబడుతుంది.

తుది కాన్ఫిగరేషన్

కమ్యూనికేషన్ సజావుగా సాగడానికి, మేము క్యాడీ (Caddy) సర్వర్‌లను సర్దుబాటు చేయాల్సి వచ్చింది:

1. నా సర్వర్‌పై (NixOS, blog.nix)

అసలైన విజిటర్ IPలు సరిగ్గా రావడానికి మరియు ప్రాక్సీ IPతో ఓవర్‌రైట్ కాకుండా ఉండటానికి, దానిని విశ్వసనీయమైనదిగా (trusted) గుర్తించాలి:

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

2. ఎక్స్‌టర్నల్ ప్రాక్సీపై (Caddy)

ప్రాక్సీ నా సర్వర్‌ను HTTPS ద్వారా సరిగ్గా సంప్రదించడానికి, అది హోస్ట్ నేమ్ (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
    }
}

బ్లాగ్ ఇప్పుడు IPv4 మరియు IPv6 ద్వారా అందుబాటులో ఉంది, సురక్షితంగా ఎన్‌క్రిప్ట్ చేయబడింది మరియు నా హోమ్ IP ఇప్పటికీ ప్రైవేట్‌గానే ఉంటుంది! 🚀

ముందుగా ముఖ్యమైన విషయం: అలవాటైన Markdown ఫైళ్లే ప్రాతిపదికగా ఉంటాయి – ఈ సరళమైన పరిష్కారం అంటే నాకు చాలా ఇష్టం. కానీ లోపల చాలా మార్పులు జరిగాయి:

నేను సెటప్‌లో కొన్ని మార్పులు చేశాను:

📂 MD-ఫైళ్లు: బ్లాగ్ నిర్మాణం మార్క్‌డౌన్ ఆధారంగా సరళంగానే ఉంటుంది.

🌍 ఎప్పటికంటే ఎక్కువగా గ్లోబల్: నా బ్లాగ్ ఇప్పుడు 43 భాషల్లో అనువాదాలకు సపోర్ట్ చేస్తుంది. అవును, క్లింగన్ (Klingon) భాషతో సహా! 🖖 (Qapla'!)

బ్రౌజర్ భాషా గుర్తింపు ఆధారంగా పూర్తి ఆటోమేటిక్ రియల్-టైమ్ అనువాదాన్ని ప్లాన్ చేశాను. స్పాయిలర్: ఇది పాక్షికంగా మాత్రమే పనిచేసింది. ఒకటి అర్థమవుతోంది: AI ఆకట్టుకునేలా ఉంది, కానీ మనం కోరుకున్న స్థాయికి ఇంకా చేరుకోలేదు.

పరిష్కారం: నేను ఇప్పుడు ప్రతి పోస్ట్‌ను ముందుగానే అన్ని నిర్ణీత భాషల్లోకి అనువదిస్తున్నాను, ఇది సెర్చ్ ఇంజన్ల (SEO) కోసం కూడా చాలా మంచిది. ఒకవేళ ఆటోమేటిక్ గుర్తింపు పనిచేయకపోతే, మీరు గ్లోబ్ ఐకాన్ ద్వారా మీకు నచ్చిన భాషను మాన్యువల్‌గా ఎంచుకోవచ్చు, అది కుకీ (Cookie) ద్వారా సులభంగా సేవ్ చేయబడుతుంది.

అనువాదాలు ఇప్పుడు Gemini 3 Flashతో చేయబడుతున్నాయి, ఇది అద్భుతమైన ఫలితాలను ఇస్తోంది. అయితే, AI పనితీరును జాగ్రత్తగా గమనించాలి: మొదటి బల్క్ రన్‌లో పొరపాటున ట్యాగ్‌లు (Tags) కూడా అనువదించబడ్డాయి, ఇది నేను అనుకున్నది కాదు.

కోడ్ ఇంకా అందుబాటులో ఉంది (ఆసక్తి ఉంటే నాకు మెసేజ్ చేయండి) 👍 అయితే, ఈ సిస్టమ్‌కు ఇప్పుడు సొంత Gemini API Key 🔑 అవసరమని గమనించండి.

నేను నా బ్లాగును WriteFreely నుండి నా సొంతంగా అభివృద్ధి చేసిన MD-Blogకి మార్చాను (ఇక్కడ MD అంటే సహజంగానే Markdown). పాత సిస్టమ్ అప్‌డేట్ విఫలం కావడమే దీనికి కారణం – కానీ చివరికి, ప్రతిదీ సరళీకరించడానికి మరియు డిజైన్‌పై పూర్తి నియంత్రణను పొందడానికి ఇది ఒక గొప్ప అవకాశంగా మారింది.

దీని ప్రధాన భాగం data/ ఫోల్డర్‌లోని సాధారణ Markdown ఫైల్‌లు, ఇవి రన్-టైమ్‌లో ఆధునిక HTMLగా మార్చబడతాయి. దీని ఫలితం చాలా వేగంగా ఉంటుంది, దీనికి ఎటువంటి డేటాబేస్ అవసరం లేదు మరియు నా స్వంత డిజైన్ సిస్టమ్ (డార్క్ మోడ్‌తో సహా) కారణంగా ఇప్పుడు నేను ఊహించినట్లే కనిపిస్తోంది. ఇప్పుడు ఇందులో ఆధునిక Mastodon-Share-Button కూడా నేరుగా అందుబాటులో ఉంది.

మీకు కోడ్ లేదా ఈ సింపుల్ సెటప్ గురించి ఆసక్తి ఉంటే, Mastodon ద్వారా నన్ను సంప్రదించండి!