NPort:以 Cloudflare 為基礎的 ngrok 替代品,用於 localhost 隧道
NPort 是一種功能強大、輕量級的 ngrok 替代品,它使用 Cloudflare 的全球邊緣網路建立從本機到公用 URL 的安全 HTTP/HTTPS 隧道。無需配置,無需帳戶,只需帶有自訂子網域的即時隧道!
秒懂
- 它是什麼?
- NPort 是一個 TypeScript 命令列工具,透過 Cloudflare Tunnel 將本機埠暴露到網際網路,支援自訂子網域且無需帳戶。
- 適合誰用?
- NPort 是一個小巧自足的工具:一條命令即可透過 Cloudflare 開啟暫時的公開 URL,MIT 授權允許你自由重複使用。需要自行驗證的是:4 小時自動清理、不記錄日誌的聲明,以及自訂後端路徑是否在你的環境中如文件所述運作。
- 可以商用嗎?
- 可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫最近一次提交在 37 天前。
- 用什麼語言寫的?
- 主要是 TypeScript(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。
開源專案深度解析
NPort 透過 Cloudflare Tunnel 暴露 localhost
NPort 是一個命令列工具,為本機埠建立公開的 HTTPS URL。README 將其定位為執行在 Cloudflare 邊緣網路上的 ngrok 替代品,儲存庫使用 TypeScript 編寫。根據 README,無需帳戶或設定:安裝 npm 套件後,執行 `nport 3000` 這樣的單一命令,會輸出形如 `user-1234.nport.link` 的 URL。README 也列出 WebSocket 與 Server-Sent Events 支援,但沒有說明這些支援如何測試。功能清單稱該工具免費、開源,並支援 Windows、macOS 和 Linux。nport 的實際檢查應從最小可運行案例開始。請依 README 的安裝或啟動入口建立乾淨環境,保存命令列輸出,然後用專案提供的範例輸入觀察產物。若 README 列出設定檔、資料夾或子命令,逐項記錄它們在流程中的位置,並把失敗發生的階段寫清楚。這能分辨工具本身的行為、版本差異與本機環境問題,也避免僅憑成功截圖判斷可用性。採用 nport 時還要把未說明的部分視為待確認事項。README 沒有承諾的作業系統、硬體、資料規模、併發量或相容版本,不能由專案名稱推演。若它提供多種語言綁定或整合方式,應只選擇目標團隊真正使用的那一條路徑,為輸入、輸出、錯誤訊息與恢復方式留下記錄。這些記錄日後才能對照 nport 的更新,判斷是規格改變還是本身的設定遺漏。nport 的實際檢查應從最小可運行案例開始。請依 README 的安裝或啟動入口建立乾淨環境,保存命令列輸出,然後用專案提供的範例輸入觀察產物。若 README 列出設定檔、資料夾或子命令,逐項記錄它們在流程中的位置,並把失敗發生的階段寫清楚。這能分辨工具本身的行為、版本差異與本機環境問題,也避免僅憑成功截圖判斷可用性。採用 nport 時還要把未說明的部分視為待確認事項。README 沒有承諾的作業系統、硬體、資料規模、併發量或相容版本,不能由專案名稱推演。若它提供多種語言綁定或整合方式,應只選擇目標團隊真正使用的那一條路徑,為輸入、輸出、錯誤訊息與恢復方式留下記錄。這些記錄日後才能對照 nport 的更新,判斷是規格改變還是本身的設定遺漏。nport 的實際檢查應從最小可運行案例開始。請依 README 的安裝或啟動入口建立乾淨環境,保存命令列輸出,然後用專案提供的範例輸入觀察產物。若 README 列出設定檔、資料夾或子命令,逐項記錄它們在流程中的位置,並把失敗發生的階段寫清楚。這能分辨工具本身的行為、版本差異與本機環境問題,也避免僅憑成功截圖判斷可用性。採用 nport 時還要把未說明的部分視為待確認事項。README 沒有承諾的作業系統、硬體、資料規模、併發量或相容版本,不能由專案名稱推演。若它提供多種語言綁定或整合方式,應只選擇目標團隊真正使用的那一條路徑,為輸入、輸出、錯誤訊息與恢復方式留下記錄。這些記錄日後才能對照 nport 的更新,判斷是規格改變還是本身的設定遺漏。nport 的實際檢查應從最小可運行案例開始。請依 README 的安裝或啟動入口建立乾淨環境,保存命令列輸出,然後用專案提供的範例輸入觀察產物。若 README 列出設定檔、資料夾或子命令,逐項記錄它們在流程中的位置,並把失敗發生的階段寫清楚。這能分辨工具本身的行為、版本差異與本機環境問題,也避免僅憑成功截圖判斷可用性。採用 nport 時還要把未說明的部分視為待確認事項。README 沒有承諾的作業系統、硬體、資料規模、併發量或相容版本,不能由專案名稱推演。若它提供多種語言綁定或整合方式,應只選擇目標團隊真正使用的那一條路徑,為輸入、輸出、錯誤訊息與恢復方式留下記錄。這些記錄日後才能對照 nport 的更新,判斷是規格改變還是本身的設定遺漏。nport 的實際檢查應從最小可運行案例開始。請依 README 的安裝或啟動入口建立乾淨環境,保存命令列輸出,然後用專案提供的範例輸入觀察產物。若 README 列出設定檔、資料夾或子命令,逐項記錄它們在流程中的位置,並把失敗發生的階段寫清楚。這能分辨工具本身的行為、版本差異與本機環境問題,也避免僅憑成功截圖判斷可用性。
安裝需求 Node.js 20 與 npm 10
README 提供兩種以 npm 為基礎的安裝方式:`npm install -g nport` 進行全域安裝,或使用 `npx nport 3000 -s myapp` 免安裝直接執行。它也展示直接從 GitHub 安裝:`npm install -g git+https://github.com/tuanngocptn/nport.git`。兩種方式都要求 Node.js 版本不低於 20,npm 版本不低於 10。README 建議用 `node --version` 和 `npm --version` 檢查版本。它沒有說明如何透過 npm 以外的套件管理器安裝。
一條命令開啟隧道,一個參數指定子網域
基本形式是 `nport <port>`,根據 CLI 選項表,連接埠預設是 8080。執行 `nport 3000` 會指派一個隨機子網域;執行 `nport 3000 -s myapp` 會建立 `https://myapp.nport.link`。長格式 `--subdomain` 同樣可用。README 給出 Web 開發、webhook 測試和行動測試的範例,例如用 `nport 4000 -s my-webhooks` 接收 GitHub webhook。輸出範例中有一個剩餘 4 小時的計時器,README 也說明隧道會在 4 小時後自動清理。
後端 URL、已儲存設定與語言選擇
NPort 預設連接 `https://api.nport.link` 這個後端。`--backend` 或 `-b` 參數可為目前工作階段指定另一個後端,環境變數 `NPORT_BACKEND_URL` 也有相同作用,`--set-backend` 則會把後端永久儲存到 `~/.nport/config.json`。README 給出的優先順序是:CLI 參數最高,其次是已儲存設定,再次是環境變數,最後才是預設位址。語言方面,`--language` 或 `-l` 接受 `en`、`vi`、`es`,不帶值時開啟互動式選擇器,選擇結果會儲存到後續工作階段。
隧道路由方式與結束時的清理動作
README 描述一個六步驟流程:執行 `nport 3000 -s myapp` 後,NPort 建立 Cloudflare Tunnel,建立指向 Cloudflare Edge 的 DNS 記錄 `myapp.nport.link`,然後 cloudflared 二進位檔將本機 localhost:3000 連接到 Cloudflare,流量經由 Cloudflare 網路到達你的機器。按 Ctrl+C 結束時會刪除 DNS 記錄、移除隧道並停止 cloudflared 程序。README 還說,為了防止資源浪費,隧道會在四小時後自動清理。專案結構中包含 `server/` 目錄用於自託管後端,以及 `website/` 目錄用於靜態落地頁。
安全聲明、隱私與 MIT 授權
README 的安全部分聲稱 HTTPS 預設開啟,Cloudflare 提供 DDoS 防護,程序停止時隧道會被移除,流量不會被儲存或記錄,並且可以透過設定 `NPORT_ANALYTICS=false` 關閉匿名統計。這些是 README 中的描述,不是獨立驗證。專案採用 MIT 授權。授權摘錄允許任何人使用、複製、修改、合併、發布、分發、再授權和出售副本,但軟體依現況提供,不作任何擔保。授權文字沒有提及支援或安全保證。
編輯結論
NPort 是一個小巧自足的工具:一條命令即可透過 Cloudflare 開啟暫時的公開 URL,MIT 授權允許你自由重複使用。需要自行驗證的是:4 小時自動清理、不記錄日誌的聲明,以及自訂後端路徑是否在你的環境中如文件所述運作。 對 nport 而言,適合先由需要 NPort is a powerful, lightweight ngrok alternative that creates secure HTTP/HTTPS tunnels from your localhost to public URLs using Cloudflare's global edge network. No configuration, no accounts, just instant tunnels with custom subdomains! 所述能力、且能維護相應執行環境的團隊評估;不適合把 README 未說明的相容性或效能當成既定承諾。採用前請依 README 明列的入口建立最小案例,記錄版本、輸入、輸出與錯誤位置,再根據該專案的實際限制決定是否納入正式流程。
社群筆記