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तो आप अगले वीडियो में इसके बारे में सब कुछ जान सकते हैं।