Web開発
Show HN: Port Zero – ポート0を愛する方法を学ぶ
Show HN: Port Zero – how I learned to stop worrying and love PORT=0 (portzero.net)
要約
Port Zeroは、開発環境におけるポート番号の管理問題を解決する新しいツールです。OSが自動的に割り当てるポート0を活用し、仮想NIC、IPアドレス、DNSレコードを作成することで、サブドメインベースのアクセスを可能にします。これにより、開発者はポートの競合を気にすることなく、複数のサービスをポート80で同時に実行できるようになります。
全文翻訳
こんにちはHN、
最近、開発環境を整えるのに何時間も費やした挙句、ブラウザのフロントエンドがバックエンドの誤ったバージョンと通信していることが判明しました。これは私に考えさせました――なぜ私たちはまだ、どのプロセスに接続するかを説明するために単純な数字を使っているのでしょうか?名前を使えないのでしょうか?ポートの競合のためにプログラムが起動しないことがあったすべての時間を思い出しました。考えれば考えるほど、それは狂っているように思えました。
現代のオペレーティングシステムはすでに競合のないポートを提供しています。TCPサーバーをポート0でリッスンさせると、OSはランダムな利用可能なポートを割り当てます。しかし、それは問題の半分しか解決しません。
私は残りの半分を構築しました:PortZeroです。これは、特別なPZ_TUNNEL環境変数を持つプロセス(およびdockerコンテナ!)を監視するGPLv3のプログラムです。
PZ_TUNNEL=myapp-{branch}.portzero.local:80 npm run dev
プロセスまたはコンテナが検出されると、PortZeroは次のことを行います。
1. 仮想NICを作成します(まだ作成していない場合)。
2. 新しい仮想IPアドレスを作成します。
3. {branch}のようなものをプロセスの作業ディレクトリに基づいて置き換え、その仮想IPアドレスを指すDNSレコードを作成します。
4. 選択したポート(例:HTTPの場合はポート80、HTTPSの場合はポート443、PostgreSQLの場合はポート5432)でリッスンを開始します。
5. その仮想IPアドレス/仮想ポートへのTCP接続を、プロセスまたはコンテナが実際にリッスンしているOS割り当てのランダムポートに転送します。
結果として、ポートについて考える必要がなくなり、サブドメインについて考えるだけでよくなります。ポートゼロローカルのサブドメインが異なっていれば、複数のサービスをポート80で競合なく利用できます。
他にもクールな機能があります。
- ローカルCAを作成し、マシンに登録することで、ローカルHTTPサービスでHTTPSを有効にする。
- クラウドトンネルを有効にして、他のデバイスからアプリにアクセスできるようにする(有料機能)。
リンク:
https://portzero.net/docs/
https://github.com/PortZeroNetwork/portzero