আমি আমার নিজস্ব টানেলিং প্ল্যাটফর্ম তৈরি করেছি
আমি আমার ল্যাপটপে একটি ওয়েব অ্যাপ নিখুঁত করার জন্য তিন দিন ব্যয় করেছি। এটি দেখতে একদম নিখুঁত ছিল। তারপর আমি এটি আমার ফোনে পরীক্ষা করার চেষ্টা করি। সবকিছু ভেঙে পড়ল।
যখন আপনার একটি দ্বিতীয় ডিভাইসের প্রয়োজন হয়, তখন লোকাল ডেভেলপমেন্ট বেশ জটিল হয়ে ওঠে। ফায়ারওয়াল এবং HTTPS সার্টিফিকেট সমস্যার কারণে লোকাল IP শেয়ার করা সম্ভব হয় না।
আমি Ngrok ব্যবহার করার চেষ্টা করেছি। এটি কাজ করে, কিন্তু এর ফ্রি টিয়ার কানেকশন ড্রপ করে। এর URL-গুলো দেখতেও খুব খারাপ। ক্লায়েন্ট বা টিমের সাথে শেয়ার করার জন্য a1b2-34-56.ngrok-free.app এর মতো র্যান্ডম স্ট্রিংগুলো মোটেও ভালো নয়।
আমি এমন একটি টানেল চেয়েছিলাম যার URL হবে পরিষ্কার এবং সহজে পাঠযোগ্য। তাই আমি নিজেই নিজের একটি তৈরি করে ফেললাম।
আমি একটি কাস্টম টানেলের সাথে একটি URL shortener যুক্ত করেছি। স্মার্ট স্ল্যাগ (slug) তৈরি করার জন্য আমি AI যোগ করেছি এবং এতে নিরাপত্তা ব্যবস্থা অন্তর্ভুক্ত করেছি।
টেক স্ট্যাক: • Tunnel / Proxy: Django Channels, Daphne, WebSockets, Python & Node.js CLI • Frontend: Next.js, TailwindCSS, Shadcn/UI • Backend: Django 5, Graphene GraphQL • Database: PostgreSQL (Neon) • Auth: JWT, bcrypt • AI: Google Gemini • Security: MaxMind GeoLite2, Google Safe Browsing API
এটি যেভাবে কাজ করে:
- দ্বি-মুখী (Bi-directional) WebSocket টানেলিং। একটি লোকাল CLI এজেন্ট HTTP রিকোয়েস্ট ফরোয়ার্ড করার জন্য একটি Django সার্ভারের সাথে সংযুক্ত হয়।
- রেস-কন্ডিশন (Race-condition) সুরক্ষা। অ্যানালিটিক্স সঠিক রাখার জন্য আমি অ্যাটমিক আপডেটের ক্ষেত্রে Django F() expressions ব্যবহার করি।
- নন-ব্লকিং টেলিমেট্রি। ল্যাটেন্সি কম রাখার জন্য লোকেশন এবং OS সংক্রান্ত তথ্য খোঁজার কাজগুলো ব্যাকগ্রাউন্ড থ্রেডে চলে।
- AI স্ল্যাগ। র্যান্ডম টেক্সটের পরিবর্তে একটি অর্থবহ স্ল্যাগ তৈরি করতে Gemini টার্গেট URLটি পড়ে নেয়।
- প্রোঅ্যাক্টিভ সিকিউরিটি। আমি কোনো লিঙ্ক সেভ করার আগে প্রাইভেট IP রেঞ্জগুলো ব্লক করি এবং Google Safe Browsing চেক চালাই।
ব্যাকএন্ড এবং টানেলিং লজিক স্থিতিশীল। ফ্রন্টএন্ড এখনও তৈরির কাজ চলছে।
আমি বর্তমানে IITM-এ পরীক্ষার জন্য পড়াশোনা করছি। পড়াশোনায় মনোযোগ দেওয়ার জন্য আমি নতুন ফিচার তৈরির কাজ সাময়িকভাবে বন্ধ রেখেছি। কোডটি ফেলে না রেখে আমি এটি রিভিউ করার জন্য উন্মুক্ত করে দিচ্ছি।
আমার কিছু বিষয়ে আপনাদের ফিডব্যাক প্রয়োজন:
- ল্যাটেন্সি: উচ্চ স্কেলে রিডাইরেক্ট কীভাবে ১০ মিলি-সেকেন্ডের (10ms) নিচে রাখা সম্ভব?
- সিকিউরিটি: SSRF প্রশমন (mitigation) আরও শক্তিশালী করার সেরা উপায় কী?
- স্কেলেবিলিটি: দীর্ঘস্থায়ী টানেলের জন্য কি WebSockets নাকি TCP ব্যবহার করা উচিত?
- অবজারভেবিলিটি: টানেলের স্বাস্থ্যের জন্য কোন মেট্রিক্সগুলো ট্র্যাক করা উচিত?
আপনার যদি প্রক্সি ওয়ার্কার বা সিস্টেম ডিজাইন সম্পর্কে অভিজ্ঞতা থাকে, তবে দয়া করে আপনার মতামত শেয়ার করুন।
সম্পূর্ণ সিস্টেম ডিজাইন ব্রেকডাউন: [Link] কোডবেস: [Link]
লোকাল ডেভেলপমেন্টের সময় আপনি কীভাবে মোবাইল পারমিশন টেস্টিং হ্যান্ডেল করেন? আপনি কি থার্ড-পার্টি টানেল নাকি কাস্টম টুল ব্যবহার করেন?
Source: https://dev.to/zallu/my-ngrok-urls-got-so-ugly-i-built-my-own-tunneling-platform-instead-59d
