pipenet؛ تونلکردن سرور لوکال با یه دستور
خلاصهٔ کاملتر
pipenet یه کتابخونهٔ Node.js ـه که پورت لوکال تو رو میبره روی اینترنت عمومی و یه آدرس قابل دسترس بهت میده. با npx pipenet client --port 3000 بالا میاد و اگه بخوای میتونی با --subdomain یه سابدامین مشخص هم درخواست بدی، هرچند تضمینی نیست که همون بهت برسه. هر ترافیکی که پایهش HTTP باشه تونل میشه: درخواست/پاسخ معمولی، WebSocket، SSE و استریم chunked.
نویسنده pipenet رو صراحتاً یه فورک مدرنشده از localtunnel معرفی میکنه و میگه چهار تا فرق اصلی داره: پشتیبانی از دیپلوی ابری، چند دامین همزمان، بازنویسی با TypeScript و ماژولهای بومی ESM بهجای CommonJS. مهمترینش همون اولیه. localtunnel برای هر کلاینت یه پورت TCP تصادفی باز میکنه و این تو محیطهای کانتینری مثل Docker، fly.io و Kubernetes که فقط چندتا پورت مشخص باز ـه اصلاً جواب نمیده.
راهحل pipenet گزینهٔ --tunnel-port ـه که حالت تکپورت رو روشن میکنه: همهٔ کلاینتها از یه پورت مشترک وصل میشن. یعنی موقع دیپلوی فقط دوتا پورت رو باز میکنی، یکی برای HTTP و یکی برای تونل، و تموم. سمت سرور هم هوکهای چرخهٔ حیات داری: onTunnelCreated، onTunnelClosed و onRequest که به متد، مسیر، هدرها و IP کلاینت دسترسی میده و به درد لاگگیری، ریتلیمیت یا احراز هویت میخوره.
نکتهٔ دومی که نویسنده روش تأکید میکنه، تعبیهشدنِ بدون دردسره. مقایسهای که با zrok میکنه همینه: zrok ابزار قدرتمندیه ولی SDK ـش اول باید محیط رو با CLI مقداردهی کنه، پس نمیتونی فقط npm install بزنی و شروع کنی. تو pipenet همون کد ساده کافیه:
import { pipenet } from 'pipenet';
const tunnel = await pipenet({ port: 3000 });
console.log(tunnel.url);نه CLI ای باید مقداردهی بشه، نه دیمنی جدا لازمه. برای همین به درد ابزارهای CLI که خودشون فیچر تونل دارن، تستسوئیتهایی که یه URL عمومی موقت میخوان و اسکریپتهایی که باید بدون مرحلهٔ نصب کار کنن میخوره. خود پروژه رو glama.ai ساخته تا سرورهای محلی MCP (پروتکلی که کلاینتهای هوش مصنوعی رو به ابزارها و دادههای محلی وصل میکنه) بتونن به کلاینتهای راه دور وصل بشن، و همین قابلیت الان توی mcp-proxy هم هست.
نکات کلیدی:
- فورک localtunnel، نوشتهشده با TypeScript و ESM بومی، نصب با npm install pipenet
- --tunnel-port حالت تکپورت رو فعال میکنه و دیپلوی روی Docker، fly.io و Kubernetes رو ممکن میکنه
- --domain رو میشه چند بار پاس داد تا سرور همزمان چند دامین سرو کنه
- پشتیبانی از HTTP/HTTPS، WebSocket، SSE و HTTP streaming
- توسعهش رو glama.ai اسپانسر میکنه و انگیزهش وصلکردن سرورهای محلی MCP به کلاینتهای راه دور بوده




