मैंने अपना खुद का टनलिंग प्लेटफॉर्म बनाया

मैंने अपने लैपटॉप पर एक वेब ऐप को निखारने में तीन दिन बिताए। यह एकदम परफेक्ट लग रहा था। फिर मैंने इसे अपने फोन पर टेस्ट करने की कोशिश की। सब कुछ बिगड़ गया।

जब आपको दूसरे डिवाइस की ज़रूरत होती है, तो लोकल डेवलपमेंट काफी उलझ जाता है। फायरवॉल और HTTPS सर्टिफिकेट की समस्याओं के कारण लोकल IP शेयर करना मुश्किल हो जाता है।

मैंने Ngrok इस्तेमाल किया। यह काम तो करता है, लेकिन इसका फ्री टियर कनेक्शन ड्रॉप कर देता है। इसके URLs भी बहुत खराब दिखते हैं। क्लाइंट्स या टीमों के साथ शेयर करने के लिए a1b2-34-56.ngrok-free.app जैसे रैंडम स्ट्रिंग्स अच्छे नहीं होते।

मुझे एक ऐसा टनल चाहिए था जिसमें साफ और पढ़ने योग्य URLs हों। इसलिए मैंने अपना खुद का टनल बनाया।

मैंने एक कस्टम टनल को URL shortener के साथ जोड़ा। मैंने स्मार्ट स्लग्स (slugs) बनाने के लिए AI जोड़ा और सुरक्षात्मक उपाय (security protections) भी शामिल किए।

टेक स्टैक: • टनल / प्रॉक्सी: Django Channels, Daphne, WebSockets, Python & Node.js CLI • फ्रंटएंड: Next.js, TailwindCSS, Shadcn/UI • बैकएंड: Django 5, Graphene GraphQL • डेटाबेस: PostgreSQL (Neon) • ऑथेंटिकेशन: JWT, bcrypt • AI: Google Gemini • सुरक्षा: MaxMind GeoLite2, Google Safe Browsing API

यह कैसे काम करता है:

  • द्वि-दिशीय (Bi-directional) WebSocket टनलिंग। एक लोकल CLI एजेंट HTTP रिक्वेस्ट को फॉरवर्ड करने के लिए Django सर्वर से जुड़ता है।
  • रेस-कंडीशन प्रोटेक्शन। एनालिटिक्स को सटीक रखने के लिए मैं एटॉमिक अपडेट्स के लिए Django F() expressions का उपयोग करता हूँ।
  • नॉन-ब्लॉकिंग टेलीमेट्री। लेटेंसी कम रखने के लिए लोकेशन और OS के लिए लुकअप बैकग्राउंड थ्रेड्स में चलते हैं।
  • AI स्लग्स। Gemini रैंडम टेक्स्ट के बजाय एक सार्थक स्लग बनाने के लिए टारगेट URL को पढ़ता है।
  • प्रोएक्टिव सुरक्षा। मैं किसी भी लिंक को सेव करने से पहले प्राइवेट IP रेंज को ब्लॉक करता हूँ और Google Safe Browsing चेक चलाता हूँ।

बैकएंड और टनलिंग लॉजिक स्थिर हैं। फ्रंटएंड अभी भी निर्माणाधीन है।

मैं वर्तमान में IITM में परीक्षाओं की तैयारी कर रहा हूँ। मैं अपनी पढ़ाई पर ध्यान केंद्रित करने के लिए नए फीचर्स को रोक रहा हूँ। कोड को यूँ ही पड़ा रहने देने के बजाय, मैं इसे रिव्यू के लिए खोल रहा हूँ।

मुझे कुछ चीजों पर आपकी प्रतिक्रिया चाहिए:

  • लेटेंसी: हाई स्केल पर रीडायरेक्ट्स को 10ms से कम कैसे रखा जा सकता है?
  • सुरक्षा: SSRF मिटिगेशन को मजबूत करने का सबसे अच्छा तरीका क्या है?
  • स्केलेबिलिटी: लॉन्ग-लिव्ड टनल के लिए मुझे WebSockets का उपयोग करना चाहिए या TCP का?
  • ऑब्जर्वेबिलिटी: टनल की सेहत के लिए मुझे किन मेट्रिक्स को ट्रैक करना चाहिए?

यदि आपके पास प्रॉक्सी वर्कर्स या सिस्टम डिज़ाइन का अनुभव है, तो कृपया अपने विचार साझा करें।

फुल सिस्टम डिज़ाइन ब्रेकडाउन: [Link] कोडबेस: [Link]

आप लोकल डेवलपमेंट के दौरान मोबाइल परमिशन की टेस्टिंग कैसे करते हैं? क्या आप थर्ड-पार्टी टनल का उपयोग करते हैं या कस्टम टूल्स का?

स्रोत: https://dev.to/zallu/my-ngrok-urls-got-so-ugly-i-built-my-own-tunneling-platform-instead-59d