5 ポイント 投稿者 litdemon 11 일 전 | 4件のコメント | WhatsAppで共有

サービスリンク: https://natnest.site
クライアントソース: https://github.com/litdemon/natnest-client


こんにちは。SSH リバーストンネルをベースにローカルサーバーを外部へ公開するサービス NatNest を作りました。

run local server 8080

natnest 8080 → https://yourname.natnest.site


作ることになったきっかけ

家に Mac mini が1台あり、そこで Ollama を動かしています。
外でも使いたかったのですが、毎回ポートフォワーディングの設定が障害でした。
ルーターの管理ページに入ってポートを開けて使っていました。

その後、Google で Dialogflow を使う中で Webhook(fulfillment) を登録しなければならないことがありました。
HTTPS が必要で、ドメインと証明書を用意して Nginx を立て、リバースプロキシを作って接続までしなければなりませんでした。

ほかの開発者も同じ状況で、私とまったく同じ作業をしなければなりませんでした。説明してあげる必要もあって、

「いっそ自分で作ればいいのでは?」と思って始めたのが NatNest です。

クライアントだけを作ったわけではありません。Nginx + Lua、Redis、DB、api server、Tunnel-server(ssh server) など、複数のサーバーをまとめて作ったものが NatNest です。

作りながら知りました。ngrok と Cloudflare Tunnel にまったく同じようなサービスがあることを T_T


どう動くのですか

クライアント(CLI) がサーバーに SSH リバーストンネルを接続すると、サーバーがサブドメイン → 内部ポートのマッピングを Redis に登録します。その後、外部から https://yourname.natnest.site にリクエストが来ると、OpenResty(Nginx + Lua) が Redis を参照して該当する SSH トンネルポートへプロキシします。

外部リクエスト → [Nginx + Lua] → Redis 参照 → SSH トンネルポート → ローカルサーバー

クライアントはバックグラウンドの watchdog プロセスが SSH 接続を維持するため、ターミナルを閉じたりネットワークが一時的に切れても、5秒以内に自動で再接続します。


ngrok / Cloudflare Tunnel と何が違うのですか

NatNest : 永続 URL、セルフホスティング、Webhook ログビューア
Ngrok Free : 永続 URL(❌)、セルフホスティング不可、Webhook ログビューア (Pro 以上)
Cloudflare Tunnel : 永続 URL(❌)、Pro 以上、なし(❌)

私のように「永続 URL を無料で、データは自分のサーバー上で」という人に合ったポジションです。

最大の利点は
Ngrok のようなサービスを実現できるソリューションを持っていることと、
ここに付くコメントの良い提案をすぐに反映できる俊敏さです。

本当に開発者が望む機能を溶け込ませていくための第一歩です。


現在の状態と正直な限界

v0.5.1 時点では以下の機能が動作します:

  • Google アカウント連携(OAuth Device Flow) + SSH キー自動生成
  • 永続サブドメイン + ワイルドカード Let's Encrypt HTTPS 自動更新
  • Web ダッシュボード(アクティブなトンネル一覧、リアルタイム Webhook ログ)
  • Linux(amd64·arm64), macOS, Windows クライアントバイナリ

まだ不足している部分もあります:

  • Windows ビルドの CI/CD 自動化が未完成 (手動ビルドの状態)
  • サーバーが単一サーバーで、自宅で運用しているためレイテンシがある
  • 1人でサービスを運営しているため、サービスレベルの安定性(SLA)を保証するのは難しい状態

インストールしてみるには

Linux / macOS

curl -fsSL https://natnest.site/install.sh | bash

natnest setup # Google アカウント連携
natnest 8080 # ローカル 8080 ポートを外部に公開


初めて外部に公開するので、使用体験や「こんな機能があればいい」というご意見があれば、コメントで残していただけると本当にありがたいです。

4件のコメント

 
hshim 10 일 전

インストールコマンドとホームページ上部のGitHubリンクで404エラーが表示されます

 
litdemon 10 일 전

コメントありがとうございます。修正を反映しました。
より大きな問題は、ひと目でAIが作ったと分かるようなデザイン変更だと思います

 
click 8 일 전

https://github.com/anderspitman/awesome-tunneling
Awesome Tunneling - ngrokの代替サービス集
tunnel系は需要が高いだけあって、その種のものがかなり多いようですね。ほかのサービスも参考にしてみるとよいと思います。

 
sacru2red 10 일 전

なかなか良さそうですね。設定地獄から抜け出せます