Vercel ने आखिरकार पोर्ट नंबर्स का झंझट खत्म कर दिया (Portless)

BBetter Stack
컴퓨터/소프트웨어AI/미래기술

Transcript

00:00:00यह Portless है, Versil Labs का एक CLI टूल, वही टीम जिसने आपको Agent Browser,
00:00:05JSON Render और Skills दिए थे, जो लोकलहोस्ट पोर्ट नंबरों को स्थायी नाम वाले नंबरों से बदल देता है,
00:00:10जिससे इंसानों और AI एजेंटों के लिए हमेशा सही जगह जाना और टकराव रोकना आसान हो जाता है।
00:00:15लेकिन यह वास्तव में काम कैसे करता है और क्या यह मेरे सिस्टम को खराब कर देगा?
00:00:20सब्सक्राइब बटन दबाएं और चलिए इसके बारे में विस्तार से जानते हैं।
00:00:21आइए एक साधारण उदाहरण के साथ देखते हैं कि Portless का उपयोग कैसे किया जाता है।
00:00:26तो अभी मेरे पास पोर्ट 3001 पर एक प्रोजेक्ट चल रहा है।
00:00:30और अगर यह बैकग्राउंड में चल रहा होता और मैं इसके बारे में पूरी तरह से भूल गया होता,
00:00:33और मैं एक दूसरा प्रोजेक्ट चलाना चाहता जिसका पोर्ट नंबर भी समान होता,
00:00:37तो मुझे यह एरर मिलता कि “एड्रेस पहले से ही उपयोग में है”।
00:00:40और Portless को इसी समस्या को ठीक करने के लिए डिज़ाइन किया गया था।
00:00:44क्योंकि कल्पना कीजिए कि अगर आपके पास अलग-अलग प्रोजेक्ट्स के लिए अलग-अलग टैब में अलग-अलग एजेंट चल रहे होते
00:00:48और वे इस समस्या में फंस जाते।
00:00:50वे निश्चित रूप से इसे ठीक कर सकते हैं, लेकिन बेहतर होगा कि उनके पास चलने के लिए हमेशा एक पोर्ट उपलब्ध हो,
00:00:55ताकि ऐसा पहली बार में ही न हो।
00:00:58अब Portless इंस्टॉल होने और Portless प्रॉक्सी चलने के बाद,
00:01:01मैं 'portless' कमांड के बाद अपना होस्टनेम चला सकता हूँ, जो इस मामले में 'xdlapi' है,
00:01:06लेकिन यह आप जो चाहें वह हो सकता है।
00:01:08फिर वह कमांड जिसे आप चलाना चाहते हैं, जो कि 'bun run devapi' है।
00:01:12और अगर मैं एंटर दबाता हूँ, तो यह 4000 की रेंज में एक रैंडम फ्री पोर्ट नंबर ढूंढ लेता है।
00:01:16क्योंकि इस रेंज का उपयोग अन्य प्रोग्रामों द्वारा किए जाने की संभावना कम होती है।
00:01:20और यह मेरे ऐप को मेरे होस्टनेम के साथ .localhost 1355 पर उपलब्ध करा देता है।
00:01:25डिफ़ॉल्ट रूप से यह 1355 होगा, जिसका अर्थ 'less' है क्योंकि यह Portless है। समझ आया?
00:01:30अब अगर मैं यहाँ क्लिक करता हूँ, तो आप देख सकते हैं कि हमारे पास एक काम करने वाला ऐप है।
00:01:34और अगर मैं इस दूसरे ऐप पर गया और बिल्कुल वही किया,
00:01:37तो अब इसे एक अलग फ्री पोर्ट मिल गया है और यह होस्टनेम का उपयोग कर रहा है।
00:01:40लेकिन अंत का यह नंबर हमेशा वही रहेगा।
00:01:42वास्तव में, अगर हम चाहें, तो हम इसे बदल सकते हैं।
00:01:44और अगर हमने इसे पोर्ट 80 में बदल दिया, तो हम इस कोलन और नंबर को पूरी तरह से हटा सकते हैं।
00:01:49इसलिए यदि मैं पोर्ट 80 पर Portless प्रॉक्सी शुरू करता हूँ, 'sudo' का उपयोग करना याद रखते हुए,
00:01:53और Portless प्रोसेस को शुरू करने के लिए भी 'sudo' का उपयोग करता हूँ,
00:01:55तो हम बस .localhost के साथ सबडोमेन का उपयोग कर सकते हैं।
00:01:59वास्तव में, हम पोर्ट 80 का उपयोग करने के साथ-साथ HTTPS सपोर्ट भी प्राप्त कर सकते हैं
00:02:03HTTPS फ़्लैग का उपयोग करके, जो हमें HTTPS इस्तेमाल करने की अनुमति देगा।
00:02:08लेकिन अगर आप Vite का उपयोग करते हैं, तो आपको पोर्ट की (key) में पोर्ट वेरिएबल सेट करना होगा,
00:02:13साथ ही होस्ट को इस वैल्यू पर सेट करना होगा।
00:02:15मैं वीडियो में बाद में बताऊंगा कि ऐसा क्यों है।
00:02:17लेकिन Portless के साथ आपको कई अन्य विकल्प भी मिलते हैं,
00:02:21जैसे डीबगिंग के लिए प्रॉक्सी को फोरग्राउंड में चलाने की क्षमता
00:02:25और डीबगिंग या बैकअप विकल्प के रूप में प्रॉक्सी के बिना कमांड चलाने की क्षमता।
00:02:30लेकिन यह हर बार एक रैंडम पोर्ट नंबर का उपयोग क्यों करता है?
00:02:33और इसे प्रॉक्सी की आवश्यकता ही क्यों है? चलिए देखते हैं।
00:02:35आइए जानते हैं कि यह कैसे काम करता है।
00:02:36तो हम दो प्रक्रियाओं से गुजरेंगे।
00:02:39क्या होता है जब टर्मिनल में मुख्य Portless कमांड चलाया जाता है?
00:02:42और क्या होता है जब कोई ब्राउज़र Portless URL देखता है?
00:02:46तो यहाँ, जब आप एक Portless कमांड चलाते हैं, इस मामले में,
00:02:49Portless 'my app' के साथ 'bun start' का कमांड,
00:02:52तो होता यह है कि पहले होस्ट और कमांड निकाले जाते हैं।
00:02:56फिर अगली चीज़ जो यह करता है वह यह जांचना है कि प्रॉक्सी चल रही है या नहीं।
00:02:59और अगर नहीं, तो यह इसे शुरू कर देगा।
00:03:01लेकिन इसमें एक शर्त है क्योंकि आप वह पोर्ट सेट कर सकते हैं जिस पर आप प्रॉक्सी चलाना चाहते हैं।
00:03:06डिफ़ॉल्ट रूप से, यह 1355 है।
00:03:08लेकिन अगर आप इसे 1024 से नीचे की वैल्यू पर सेट करते हैं,
00:03:12तो यह चलने से पहले आपसे कन्फर्मेशन मांगेगा।
00:03:15लेकिन अगर यह उस नंबर से ऊपर है, तो यह ऑटोमैटिकली चलेगा।
00:03:19इसके बाद, यह 4000 और 4999 के बीच एक फ्री पोर्ट ढूंढता है।
00:03:25और यह पोर्ट खोजने की प्रक्रिया को तेज़ बनाने के लिए रैंडम होता है।
00:03:29क्योंकि अगर यह क्रमवार (sequential) होता, तो इसे एक-एक करके सभी पोर्ट जांचने पड़ते,
00:03:33जिसमें बहुत समय लग सकता था यदि आपके पास बहुत सारे प्रोसेस चल रहे हों।
00:03:35फिर पोर्ट मिलने के बाद, यह डिटेल्स को एक रूट स्टोर JSON फ़ाइल में जोड़ता है।
00:03:40फिर यह उस पोर्ट पर आपका कमांड चलाता है और उस पोर्ट को पोर्ट एनवायरनमेंट वेरिएबल में जोड़ता है,
00:03:47जो अधिकांश जावास्क्रिप्ट एप्लिकेशन के लिए सुलभ है।
00:03:50अब आइए इस हिस्से पर ध्यान दें।
00:03:52तो जब कोई ब्राउज़र 'myapp' जैसे Portless URL पर जाता है,
00:03:56और अगर हम डिफ़ॉल्ट पोर्ट पर टिके रहते हैं, तो यह 1355 होगा।
00:04:00फिर निश्चित रूप से, यह प्रॉक्सी के लिए TCP कनेक्शन बनाने से पहले पूरी DNS रिज़ॉल्यूशन प्रक्रिया करता है,
00:04:06जो बस होस्टनेम (जैसे myapp) निकालता है,
00:04:09और फिर रूट JSON फ़ाइल के अंदर आपके एप्लिकेशन के पोर्ट को खोजने के लिए उसका उपयोग करता है।
00:04:15फिर एक बार सही पोर्ट नंबर मिल जाने पर, यह रिक्वेस्ट को आपके वास्तविक ऐप पर फॉरवर्ड कर देता है,
00:04:21जो ब्राउज़र पर जाने से पहले प्रॉक्सी को रिस्पॉन्स वापस भेजता है,
00:04:26चूंकि ब्राउज़र 1355 से रिस्पॉन्स की उम्मीद करता है
00:04:30न कि उस नंबर से जिसे प्रॉक्सी ने प्रक्रिया के इस चरण में रैंडमली असाइन किया था।
00:04:35यह आश्चर्यजनक रूप से WebSockets के साथ भी काम करता है।
00:04:38एक वीकेंड प्रोजेक्ट के लिए यह सब बहुत प्रभावशाली है।
00:04:40हालांकि, यदि आप Vite जैसे गैर-Next.js प्रोजेक्ट पर Portless का उपयोग करते हैं, तो आपको कुछ समस्याओं का सामना करना पड़ सकता है।
00:04:47सबसे पहले, क्योंकि यह पोर्ट वेरिएबल को असाइन किए गए रैंडम पोर्ट नंबर का उपयोग करता है
00:04:52न कि किसी हार्ड-कोडेड नंबर का, इसलिए आपको यह सुनिश्चित करना होगा कि आपका ऐप उस पोर्ट से चल सके
00:04:56ताकि प्रॉक्सी को पता चल सके कि ट्रैफ़िक को कहाँ रीडायरेक्ट करना है।
00:05:00और Vite या किसी समकक्ष बंडलर के लिए, आपको यह होस्ट की (key) जोड़नी पड़ सकती है और इसे इस वैल्यू पर सेट करना पड़ सकता है,
00:05:06क्योंकि यह अज्ञात ऑरिजिन्स (origins) से आने वाले अनुरोधों को अस्वीकार कर देता है, और यह उस जांच को डिसेबल कर देता है।
00:05:10मैंने अलग-अलग वैल्यूज के साथ 'allowed host key' का उपयोग करने की कोशिश की, लेकिन वह काम नहीं आया।
00:05:16तो हालांकि यह समाधान थोड़ा कठिन लग सकता है,
00:05:19लेकिन अगर आप चीज़ें लोकली चला रहे हैं तो वास्तव में चिंता करने की कोई बात नहीं है।
00:05:22लेकिन Vercel Labs के अन्य प्रोजेक्ट्स की तरह, Portless को भी अपडेट मिलना जारी रहेगा,
00:05:26जिसका अर्थ है कि इनमें से अधिकांश फीचर्स को भविष्य में सुधारा जाएगा,
00:05:30और विंडोज सपोर्ट जैसी चीज़ें भी बेहतर होंगी।
00:05:32Vercel Labs की बात करें तो, अगर आपने अभी तक Agent Browser नहीं आज़माया है,
00:05:36जो आपके एजेंट के लिए ब्राउज़र के साथ इंटरैक्ट करने का सबसे अच्छा तरीका है,
00:05:39तो आप अगले वीडियो में इसके बारे में सब कुछ जान सकते हैं।

Key Takeaway

Portless एक शक्तिशाली CLI टूल है जो पोर्ट नंबरों के मैन्युअल प्रबंधन को समाप्त कर डेवलपर्स और AI एजेंटों को नाम-आधारित स्थानीय होस्टनेम प्रदान करता है।

Highlights

Vercel Labs का 'Portless' टूल स्थानीय विकास (local development) में पोर्ट नंबरों के टकराव (port conflicts) की समस्या को हल करता है।

यह रैंडम पोर्ट्स का उपयोग करके 'localhost' के साथ कस्टम होस्टनेम (जैसे myapp.localhost) प्रदान करता है।

उपयोगकर्ता HTTPS सपोर्ट और पोर्ट 80 का उपयोग करके URL से पोर्ट नंबर को पूरी तरह हटा सकते हैं।

यह टूल रैंडम पोर्ट खोजने के लिए 4000-4999 की रेंज का उपयोग करता है और रूट स्टोर JSON फ़ाइल में विवरण सुरक्षित रखता है।

WebSockets के साथ संगत होने के साथ-साथ यह AI एजेंटों के लिए भी एक स्थिर और भरोसेमंद वातावरण सुनिश्चित करता है।

Vite जैसे प्रोजेक्ट्स के लिए इसमें 'host' कॉन्फ़िगरेशन में बदलाव की आवश्यकता हो सकती है ताकि अनचाहे एरर से बचा जा सके।

Timeline

Portless का परिचय और समस्या का समाधान

वीडियो की शुरुआत में Portless को Vercel Labs के एक नए CLI टूल के रूप में पेश किया गया है जो पोर्ट नंबरों को स्थायी नामों से बदलता है। यह मुख्य रूप से पोर्ट टकराव (port collision) की समस्या को हल करता है, जहाँ दो प्रोजेक्ट्स एक ही पोर्ट पर चलने की कोशिश करते हैं। वक्ता बताते हैं कि यह टूल विशेष रूप से AI एजेंटों के लिए उपयोगी है ताकि वे बिना किसी तकनीकी बाधा के सही स्थान पर पहुँच सकें। यदि कोई पुराना प्रोजेक्ट बैकग्राउंड में चल रहा है, तो Portless 'Address already in use' जैसे एरर को आने से रोकता है। यह विकास प्रक्रिया को अधिक सुव्यवस्थित और मानवीय रूप से पढ़ने योग्य (human-readable) बनाता है।

प्रैक्टिकल डेमो और कस्टम होस्टनेम सेटअप

इस भाग में Portless को इंस्टॉल करने और कमांड लाइन के माध्यम से चलाने का व्यावहारिक प्रदर्शन दिया गया है। 'portless' कमांड के साथ अपना मनचाहा होस्टनेम और स्टार्टअप कमांड (जैसे bun run dev) देने पर यह स्वचालित रूप से एक फ्री पोर्ट चुन लेता है। डिफ़ॉल्ट रूप से यह 1355 पोर्ट का उपयोग करता है, जिसे 'less' शब्द से जोड़ा गया है। उपयोगकर्ता 'sudo' और HTTPS फ़्लैग का उपयोग करके सुरक्षित कनेक्शन और पोर्ट 80 पर भी अपना ऐप चला सकते हैं। इसके अलावा, इसमें डीबगिंग के लिए प्रॉक्सी को फोरग्राउंड में चलाने जैसे कई उपयोगी विकल्प भी शामिल हैं।

आंतरिक कार्यप्रणाली: प्रॉक्सी और पोर्ट असाइनमेंट

यहाँ वक्ता विस्तार से समझाते हैं कि Portless पर्दे के पीछे कैसे काम करता है और इसे प्रॉक्सी की आवश्यकता क्यों होती है। जब कमांड चलाया जाता है, तो यह 4000 से 4999 के बीच एक रैंडम पोर्ट ढूंढता है ताकि पोर्ट सर्च की प्रक्रिया तेज़ हो सके। इन विवरणों को एक रूट स्टोर JSON फ़ाइल में सहेजा जाता है ताकि भविष्य में रिज़ॉल्यूशन आसान हो। जब ब्राउज़र URL पर जाता है, तो प्रॉक्सी DNS रिज़ॉल्यूशन के बाद होस्टनेम के आधार पर सही पोर्ट ढूँढती है। अंत में, प्रॉक्सी रिक्वेस्ट को ऐप पर भेजती है और रिस्पॉन्स वापस ब्राउज़र को देती है, जो WebSockets के साथ भी बेहतरीन काम करता है।

Vite के साथ चुनौतियाँ और भविष्य की संभावनाएँ

अंतिम अनुभाग में Vite जैसे गैर-Next.js प्रोजेक्ट्स के साथ Portless का उपयोग करते समय आने वाली संभावित समस्याओं पर चर्चा की गई है। वक्ता बताते हैं कि चूंकि पोर्ट रैंडम होते हैं, इसलिए ऐप को एनवायरनमेंट वेरिएबल को स्वीकार करने के लिए कॉन्फ़िगर करना ज़रूरी है। सुरक्षा कारणों से Vite अज्ञात ऑरिजिन्स को ब्लॉक कर सकता है, इसलिए 'host' की को विशिष्ट वैल्यू पर सेट करना एक आवश्यक समाधान है। भविष्य में विंडोज सपोर्ट और अन्य फीचर्स में सुधार की उम्मीद जताई गई है क्योंकि Vercel Labs इसे लगातार अपडेट कर रहा है। अंत में, दर्शकों को AI एजेंटों के लिए 'Agent Browser' जैसे अन्य टूल देखने के लिए प्रोत्साहित किया गया है।

Community Posts

View all posts