Local Tunnel

November 19 2015

Web Application Development မှာ လေ့လာမိသလောက် Developer တွေအနေနဲ့ အများအားဖြင့် ကိုယ့်ရဲ့ Site/App ကို နမူနာပြချင်တယ်ဆိုလျှင် Meeting တစ်ခုလုပ် ဖို့ appointment ယူ၊ Client နဲ့တွေ့တဲ့အခါကျမှ ကိုယ့် Laptop မှာ Setup လုပ်ထားတဲ့ Web Server နဲ့ Run ပြကြတာများပါတယ်။ တချို့ကျတော့ Hosting/VPS Server ဝယ်ထားပြီး ကိုယ့်ရဲ့ Code ကို အဲဒီ Server ထဲ Upload လုပ်ပြီးတော့ Online တန်းပြတတ်ကြပါတယ်။ ဒီနည်းလမ်း ၂နည်းမှာ ပထမနည်းလမ်းအရ ပြင်ဆင်မှုတစ်ချို့အတွက် Client ရဲ့သဘောတူညီချက်ရဖို့အရေး Meeting လုပ်ဖို့ ချိန်းဆိုရ သွားရလာရနဲ့ အချိန်ပေးရပါတယ်။ ဒုတိယနည်းကျပြန်တော့ လည်း လုပ်ငန်းတွင်ပေမယ့် Server ကိုရင်းနှီးထားရပါတယ်။ ဒီအခက်အခဲတွေကို ဖြေရှင်းနိုင်ဖို့ကတော့ localtunnel ကိုအသုံးပြုတဲ့နည်းလမ်းပါပဲ။

localtunnel ဆိုတာ NodeJS အသုံးပြုပြီးရေးသားထားတဲ့ Tunneling Service ပါ။ ပုံမှန်အတိုင်း Web Server တစ်ခုကို Access လုပ်ဖို့ဆိုလျှင် Public IP ရှိမှ Internet ကိုဖြတ်ပြီး Access လုပ်လို့ရပါတယ်။ အခု ဒီ localtunnel ကတော့ Public IP မရှိဘဲ ကိုယ့် Laptop/Desktop မှာ setup လုပ်ထားတဲ့ Web Server ရဲ့ Site/App ကို Internet ကနေတဆင့် လှမ်းခေါ်ကြည့်ရှုနိုင်အောင်ဆောင်ရွက်ပေးတဲ့ Service လေးပါ။ localtunnel ကိုသုံးဖို့ NodeJS ကို install လုပ်ထားရပါမယ်။ ပြီးလျှင်တော့ npm (Node Package Manager) သုံးပြီး localtunnel ရဲ့ Client Program ကို install ပြုလုပ်လိုက်ရုံပါပဲ။


Installation

$ npm install -g localtunnel

Usage

အသုံးပြုပုံကတော့ ကိုယ့် Web Site/App ရဲ့ port number သုံးပြီး Service ကို Run ပေးရမှာပါ။ ဥပမာ ကိုယ့် Laptop/Desktop မှာ Develop လုပ်နေတဲ့ Site/App ကို http://localhost လို့ခေါ်လိုက်တာနဲ့ တန်းမြင်ရတယ်ဆိုလျှင် -

$ lt --port 80

ဆိုတဲ့ HTTP ရဲ့ Default Port (80) နဲ့ command ကို Run ပေးရမှာပါ။ အကယ်၍ http://localhost:8080 နဲ့ သုံးထားတယ်ဆိုလျှင်တော့ -

$ lt --port 8080

Port Number : 8080 သုံးပြီး run ပေးရုံပါပဲ။

Service စတင်လိုက်ပြီဆိုတာနဲ့ client program က localtunnel.me ကိုလှမ်း Access လုပ်ပြီး ကိုယ့် Site/App အတွက် https://zyxwvut.localtunnel.me ဆိုတာမျိုး Web URL တစ်ခုထုတ်ပေးပါလိမ့်မယ်။ အဲဒီ URL ကိုသုံးပြီး ကိုယ့်ရဲ့ Site/App ကို Internet ကနေတဆင့် Access လုပ်နိုင်မှာဖြစ်ပါတယ်။

How It Works

အလုပ်လုပ်ပုံကတော့ ပုံမှာပြထားတဲ့အတိုင်း Developer ကသူ့ Site/App ကို Run ထားပြီးပြီဆိုတာနဲ့ localtunnel Client Program ကို run ပါတယ်။ Client Program က သူ့ရဲ့ Server ဖြစ်တဲ့ localtunnel.me ကိုလှမ်း Access လုပ်ပြီး URL ကို Generate လုပ်ပေးပါတယ်။ ရလာတဲ့ URL ကို တဘက်မှာရှိတဲ့ Client(Customer) က သူ့ရဲ့ Web Browser ကနေ ခေါ်လိုက်ပြီဆိုတာနဲ့ localtunnel.me Server ဆီကိုရောက်ပါတယ်။ localtunnel.me ကိုရောက်လာတဲ့ Client Browser ရဲ့ HTTP Request ကို Developer ရဲ့ Laptop/Desktop မှာရှိတဲ့ localtunnel Client Program က Respond ပြန်ပေးတာပါ။ အဲဒီ Request တွေ Respond တွေကို ကြားမှာရှိတဲ့ localtunnel.me Server က Relay အနေနဲ့ အပြန်အလှန်ပို့ပေးတဲ့သဘောပါပဲ။


ဒီ Service ကိုသုံးပြီး ရှေ့မှာပြောခဲ့သလို Developer တွေအနေနဲ့ ကိုယ့် Web Site/App ကို ကိုယ့်စက်မှာပဲ Host လုပ်ပြီး အဝေးတနေရာက Client ဆီ နမူနာအနေနဲ့ ပေးပို့ပြသချင်တဲ့အခါမျိုးမှာသုံးနိုင်တဲ့အပြင် SysAdmin တွေအနေနဲ့လည်း ရုံးချိန်ပြင်ပ ဒါမှမဟုတ် အဝေးတနေရာရောက်နေချိန် ကိုယ့် Local Server မှာ အရေးတကြီး ပြင်ဆင်စရာရှိလို့ Web-based Control Pannel ကိုဝင်ချင်တဲ့အခါ Junior တစ်ယောက်ယောက်ကို Client Program လေး Run ခိုင်းလိုက်ရုံနဲ့ ရောက်ရာနေရာကနေလှမ်း Access လုပ်လို့ရနိုင်မှာဖြစ်ပါတယ်။

tunnel တိုင်းကို https နဲ့သွားတာဖြစ်တဲ့အတွက် Secure ဖြစ်တယ်ဆိုပေမယ့် တကယ့်ကို အရေးတကြီး လိုအပ်တဲ့အချိန်မှသုံးတာပိုစိတ်ချရပါတယ်။ နောက်ပြီး ဒီ Service က Free ဖြစ်တဲ့အတွက် အာမခံချက်မရှိပါဘူး။ Feature စုံစုံလင်လင်နဲ့ Performance ပိုကောင်းပြီး အာမခံချက်ရှိတဲ့ Service လိုချင်တယ်ဆိုလျှင်တော့ Ngrok ရှိပါတယ်။ Commercial ဖြစ်ပြီး Plan အလိုက် Local Tunnel ပြုလုပ်တာထက်ပိုတဲ့ အခြား Feature တွေအသုံးပြုနိုင်မှာဖြစ်တဲ့အပြင် Free Service လည်းပေးထားပါသေးတယ်။ Ngrok ရဲ့ အားသာချက်ကတော့ NodeJS မလိုပဲ Client Program ဖိုင်လေးတစ်ခုတည်းနဲ့တင် Run လို့ရတာပါ။ အသုံးပြုပုံကလည်း localtunnel နဲ့သိပ်မကွာပါဘူး။ Functionality ပိုင်း ထပ်ဖြည့်ထားတာဖြစ်တဲ့အတွက် Option တွေပိုပါသွားတာလောက်ပါပဲ။

localtunnel ရဲ့ Client Source Code ရော Server Source Code ကိုပါ MIT License နဲ့ပဲ မျှဝေပေးထားတာပါ။ ကိုယ်ပိုင် Server တည်ဆောက်ချင်သူတွေအနေနဲ့ လွတ်လပ်စွာ ရယူတည်ဆောက်နိုင်ပါတယ်။ အခြား Programming Language တွေနဲ့ ရေးသားထားတဲ့ အလားတူ Source Code တွေလည်း Github မှာရှိပါသေးတယ်။ လူသိနည်းပေမယ့် အသုံးတည့်တဲ့ နည်ပညာလေးတစ်ခုဖြစ်တဲ့အတွက် မျှဝေလိုက်ရပါတယ်။


comments powered by Disqus