माझा ब्लॉग // डिजिटल संग्रहण

विचार, प्रकल्प आणि तांत्रिक नोट्स

या टॅगसह नोंदी दाखवा: #md-blog सर्व दाखवा ×

मुळात माझे ब्लॉग सेटअप केवळ WireGuard द्वारे IPv6-प्रकल्प म्हणून नियोजित होते, कारण हे सर्व एका होम सर्व्हरवर चालवले जाते (तसे, तुम्हाला route64.org वर विनामूल्य IPv6 पत्ते मिळू शकतात). उपलब्धता वाढवण्यासाठी, मी आता एक बाह्य IPv4 प्रॉक्सी जोडला आहे (@Larvitz चे आभार).

मात्र, यामध्ये लगेच SSL समस्या उद्भवल्या: सुरुवातीला A आणि AAAA दोन्ही रेकॉर्ड प्रॉक्सीद्वारे जात असल्याने, माझ्या सर्व्हरवर Let's Encrypt व्हॅलिडेशन अयशस्वी झाले.

उपाय: "IPv6-हॅक"

उपाय असा होता की, AAAA-एंट्री प्रॉक्सीद्वारे पाठवण्याऐवजी ती थेट माझ्या सर्व्हरच्या WireGuard-IP वर निर्देशित करणे.

  • Domain: blog.burningboard.org
  • A-Record (Proxy): 194.28.98.217
  • AAAA-Record (Server): 2a11:6c7:f05:a8::2 (WireGuard)

माझ्या WireGuard-IP वरील या थेट AAAA-एंट्रीमुळे, Let’s Encrypt अजूनही IPv6 द्वारे थेट माझ्या सर्व्हरपर्यंत पोहोचते (कारण AAAA-रेकॉर्डला डीफॉल्टनुसार प्राधान्य दिले जाते) आणि SSL प्रमाणपत्र जारी करते. IPv4 ट्रॅफिक प्रॉक्सीद्वारे एनक्रिप्टेड स्वरूपात माझ्याकडे पाठवला जातो.

अंतिम कॉन्फिगरेशन

संवाद सुरळीतपणे व्हावा यासाठी आम्हाला Caddy सर्व्हरमध्ये बदल करावे लागले:

1. माझ्या सर्व्हरवर (NixOS, blog.nix)

खरे व्हिजिटर आयपी (IPs) योग्यरित्या मिळावेत आणि प्रॉक्सीच्या आयपीने ओव्हरराईट होऊ नयेत यासाठी, प्रॉक्सीला 'ट्रस्टेड' (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 दोन्हीवर उपलब्ध आहे, सुरक्षितपणे एनक्रिप्टेड आहे आणि तरीही माझा होम आयपी खाजगी राहतो! 🚀

सर्वात महत्त्वाचे म्हणजे: नेहमीच्या Markdown फाईल्सच आधार राहतील – मी या सोप्या पद्धतीचा मोठा चाहता आहे. पण पडद्यामागे बरेच बदल झाले आहेत:

मी सेटअपमध्ये काही बदल केले आहेत:

📂 MD-Files: ब्लॉगची रचना सोपी आणि Markdown-आधारितच राहील.

🌍 आधीपेक्षा अधिक जागतिक: माझा ब्लॉग आता ४३ भाषांमधील भाषांतरांना सपोर्ट करतो. हो, क्लिंगन (Klingon) सह! 🖖 (Qapla'!)

ब्राउझरच्या भाषा ओळखीवर आधारित पूर्णपणे स्वयंचलित रिअल-टाइम भाषांतराचे नियोजन होते. स्पॉयलर: हे फक्त अंशतः यशस्वी झाले. यावरून लक्षात येते की: AI प्रभावी आहे, पण आपल्याला हवंय तिथे अजून पूर्णपणे पोहोचलेलं नाही.

उपाय: मी आता प्रत्येक पोस्ट आधीच सर्व ठरवलेल्या भाषांमध्ये भाषांतरित करतो, जे सर्च इंजिन (SEO) साठी देखील खूप चांगले आहे. जर स्वयंचलित ओळख कधी काम करत नसेल, तर तुम्ही ग्लोब आयकॉनद्वारे तुमची पसंतीची भाषा मॅन्युअली निवडू शकता, जी कुकी (cookie) द्वारे सहजपणे सेव्ह केली जाईल.

भाषांतरे आता Gemini 3 Flash वापरून केली जातात, ज्याचे निकाल आश्चर्यकारकपणे चांगले आहेत. मात्र, AI वर बारीक लक्ष ठेवणे आवश्यक आहे: पहिल्या बल्क रनमध्ये चुकून टॅग्सचेही भाषांतर झाले होते, जे अर्थातच नियोजित नव्हते.

कोड अजूनही उपलब्ध आहे (इच्छुक असल्यास मला मेसेज करा) 👍 पण लक्षात ठेवा की सिस्टमला आता स्वतःची Gemini API Key 🔑 आवश्यक आहे.

मी नुकताच माझा ब्लॉग WriteFreely वरून स्वतः विकसित केलेल्या सिस्टमवर हलवला आहे: MD-Blog (येथे MD चा अर्थ अर्थातच Markdown असा आहे). जुन्या सिस्टमचे एक अपडेट अयशस्वी झाल्यामुळे हा बदल करावा लागला – पण शेवटी, सर्व काही सोपे करण्यासाठी आणि डिझाइनवर पूर्ण नियंत्रण मिळवण्यासाठी ही एक उत्तम संधी ठरली.

याचे मुख्य वैशिष्ट्य म्हणजे data/ फोल्डरमधील साध्या मार्कडाउन फाइल्स, ज्या रनटाइममध्ये आधुनिक HTML मध्ये रूपांतरित केल्या जातात. याचा निकाल अतिशय वेगवान आहे, यासाठी कोणत्याही डेटाबेसची गरज नाही आणि स्वतःच्या डिझाइन सिस्टममुळे (डार्क मोडसह) आता हे अगदी मला हवे होते तसेच दिसत आहे. आता यामध्ये एक आधुनिक Mastodon-Share-Button देखील समाविष्ट आहे.

जर तुम्हाला कोड किंवा या साध्या सेटअपमध्ये रस असेल, तर माझ्याशी Mastodon वर नक्की संपर्क साधा!