【脱・NATの壁】ブラウザから直接ローカル環境へ!登録不要の「BitBang」が便利すぎる
Show HN: BitBang – Reach machines behind NAT from a browser, no account
Show HN: BitBang – Reach machines behind NAT from a browser, no account
NATの背後にあるマシンにブラウザから直接アクセスしたいと思ったことはありませんか?「BitBang」なら、面倒なアカウント登録や複雑な設定は一切不要。ブラウザを開くだけで、NAT環境下のマシンへ簡単にリーチできるツールです。手軽にリモートアクセス環境を構築したいエンジニア必見のプロダクトです。
sshのような見た目の単一のGoバイナリだよ。最大の違いはトランスポートにTCPではなくWebRTCを使っていること。だから、そもそも対象のPCに直接アクセス可能である必要がないんだ。「bitbang serve」を実行するとURLが表示されるから、それをブラウザで開けばターミナル、ファイルブラウザ、そしてそのマシンのネットワーク上のウェブアプリへのプロキシが使えるようになる。あるいは別のターミナルから接続することも可能。接続側には何もインストールする必要はないし、アカウント登録やポート開放も不要。
アカウント不要にするトリックは、デバイスのIDを公開鍵のハッシュにしている点だね。だからブラウザとデバイスはお互いを直接検証できる。サーバー側はレジストリを持たず、認可もしないし、データパスにも関与しない。サーバーは接続の仲介だけをして、あとは身を引く仕組みだ。接続の約75%は直接P2Pで行われる。残りは暗号化されたデータしか見えないTURNリレーを経由する。サーバーはオープンソースでセルフホスト可能だし、データパスに関与しないから運用コストも安い。
BitBangはもともとESP32上で動く小型テレプレゼンスロボットのネットワーク機能として始まったんだ。組み込み開発は難しくて時間がかかるから、このCLIでセキュリティモデルをしっかり作り上げた。組み込み版は次はこれの番だよ。 :)
素晴らしい成果だね!このアイデアにはすごく可能性を感じるし、これがきっかけで普及するといいな。
今の時代、Dockerを使えばセルフホストは簡単になったけど、インターネットに公開する部分が面倒なんだよね。私はJellyfinをnetbird経由で使ってるけど、それだと友人と共有するまではいかない。こういうのがセルフホストのフローに組み込まれるようになったら最高だね。
あと個人的にすごく嫌なのが、同じLAN内にいるのにファイル転送で「クラウドサービス」を使う人がいること!
繰り返しになるけどいい仕事だね。これが流行ってみんなに凄さが伝わるといいな :)
これが100スターに到達したら、ぜひ https://github.com/anderspitman/awesome-tunneling (https://github.com/anderspitman/awesome-tunneling) に追加したいな。
何のことか理解しようと長文を読んでいたんだけど……
『比較』セクションにあるこの一行を見て納得したよ。
「セルフホスト可能なサーバー(オープンソース)」:ngrok->No, Cloudflare Tunnel->No, Tailscale->No, Bitbang->Yes
……これを見た瞬間、「オープンソース版Tailscaleじゃん!」ってなったよ。
これでようやく理解できた!(まさに天啓、深い悟りを得た感じ!) :-)
(まあ、正確にはTailscaleのオープンソースの「代替品」であり、しかもそれが素晴らしい出来だってことだね!)
素晴らしい仕事だよ、Rich LeGrand!
(オープンソース界のまた一歩前進だね!)
https://www.iroh.computer (https://www.iroh.computer) に似ている気がするんだけど、このアプローチがどう似ていて、どう違うのか説明してくれる?
自分のユースケースだとこんな感じかな:Tailscale経由でスマホから家のRaspberry Piにsshする。そこでエイリアスを叩くとRPiがbitbang serveを実行して、接続番号をstdoutに出力するから、それをスマホのsshセッションで確認する。
次に、信頼できないPCからBitbangを使って家のネットワークに入り、物理キーボードで作業をして、終わったら別のコマンドでBitbangをシャットダウンする。
これって実現可能だと思う?
宣伝させてもらうよ:https://ssh-j.com (https://ssh-j.com)
普通のsshクライアント以外は何もいらないよ。ただ、クライアント側でもssh接続が必要だけどね。
irohとは何が違うの?