世界を動かす技術を、日本語で。

Show HN: Pangolin – Cloudflare Tunnelsのオープンソース代替品

概要

Pangolinは 自己ホスト型のトンネル付きリバースプロキシサーバー で、 アイデンティティ管理とアクセス制御 を備える。 WireGuardトンネル を利用し、ファイアウォール越しでも 安全にプライベートリソースを公開 可能。 シンプルなダッシュボードUI で直感的な管理を実現。 多様な認証方式 と細かなアクセス制御が特徴。 商用利用・OSS利用 の両方に対応したデュアルライセンス。

Pangolin:自己ホスト型ゼロトラストトンネル&リバースプロキシサーバー

  • 自己ホスト型 のトンネル付きリバースプロキシサーバー
  • WireGuardトンネル 経由でプライベートネットワークを安全に公開
  • サイト間接続は ユーザースペースWireGuardクライアントNewt または任意のWireGuardクライアントで構築
  • ファイアウォール越しのリソース公開 (ポート開放不要)
  • LetsEncryptによる自動SSL証明書発行 で安全なHTTPS通信
  • HTTP/HTTPSおよび生のTCP/UDPサービス 対応
  • ロードバランシング 機能
  • APIによる自動化・カスタム統合 が可能
  • Traefikプラグイン (CrowdSec/Geoblock等)連携による機能拡張
  • Docker Composeベース の簡単なデプロイメント
  • VPS/クラウド/オンプレミス いずれにも対応

アイデンティティ管理・アクセス制御

  • プラットフォームSSO による一元認証
  • IPアドレス/IPレンジ/URLパス単位 でのアクセス制御ルール
  • TOTP+バックアップコード による2要素認証
  • 組織・サイト・ユーザー・ロール の多階層管理
  • ロールベースアクセス制御 (RBAC)による権限管理
  • 認証オプション
    • メールホワイトリスト+ワンタイムパスコード
    • 一時的な自己破壊型共有リンク
    • リソース固有PINコード/パスワード
    • 外部IdP(OAuth2/OIDC)連携 (Authentik, Keycloak, Okta等)
    • IdPからのユーザー・ロール自動プロビジョニング

ダッシュボードUI

  • 直感的なUI でサイト・ユーザー・ロール管理
  • サイト利用状況・接続状況モニタリング
  • ライト/ダークモード対応
  • モバイルフレンドリー

デプロイメント例

  • 中央サーバー をVPS(RackNerd, Amazon EC2, DigitalOcean等)上にDocker Composeで展開
  • ドメイン名をVPSに向けて設定 し、Pangolinを構成
  • プライベートサイトにNewtまたはWireGuardクライアント をインストールし中央サーバーへ接続
  • リソース追加・アクセス制御ルール設定 で安全なリソース公開

ユースケース

  • 家庭内ラボのポート制限回避 :ISPによるポート制限下でもHTTP/HTTPSリソースを安全に外部公開
  • 企業アプリケーションの安全な公開 :IdP統合認証ポータル経由でオンプレ/クラウドの業務アプリを公開
  • IoTネットワークの一元管理 :断片化したIoTサイトを中央サーバー経由で安全に集約・管理

類似プロジェクト・インスピレーション

  • Cloudflare Tunnels :同様のプロキシ方式だがPangolinは 自己ホスト型 でインフラ完全管理可能
  • Authelia :プロキシ向け認証・ユーザー管理機能のインスピレーション源

開発・ライセンス・コントリビューション

  • 積極開発中、ロードマップは随時更新
  • AGPL-3/Fossorial Commercial License のデュアルライセンス
  • バグ報告・機能要望・コントリビューション はGitHubリポジトリで受付

公式リソース・デモ・関連リンク

  • GitHub: https://github.com/fosrl/pangolin
  • クイックインストールガイド: https://docs.fossorial.io/Getting%20Started/quick-install
  • デモ動画(Lawrence Systems): https://youtu.be/g5qOpxhhS7M?si=M1XTWLGLUZW0WzTv&t=723

主な特徴まとめ

  • ポート開放不要/パブリックIP非公開 で自己ホスティング
  • 複数のプライベートネットワークへのプロキシ作成
  • OAuth2/OIDC IdP対応・RBAC・生TCP/UDP対応
  • リソース固有PIN/パスワード/メールOTP/自己破壊リンク
  • API自動化・CrowdSec/Geoblock等によるWAF機能

代表的な利用シーン

  • どこからでもWebブラウザで自社アプリにアクセス
  • CGNAT環境下でのプロキシ運用
  • 複数クラウド/オンプレを跨ぐアプリケーションLB
  • IoT・エッジデバイスの現場監視用サービス公開
  • localhostの外部公開

Hackerたちの意見

みんなこんにちは、こちらは別のメンテナーです。システムの他のコンポーネントについてもう少し詳しく説明したいと思います。Pangolinは、実際のHTTPプロキシ処理にTraefikを使っています。Badgerというプラグインがあって、Pangolinでリクエストを認証する方法を提供しています。もう一つのサービス、Gerbilは、Pangolinが接続のためのピアを作成するのに使えるWireGuard管理サーバーを提供します。最後に、NewtというCLIツールとDockerコンテナがあって、これがGerbilにWireGuardで接続し、ローカルリソースをプロキシします。これにより、サービスを公開するために特権プロセスやコンテナを実行する必要がなくなります!

ここ数ヶ月、ヘッツナーの小さなVPSを使って、自宅のファイアウォールの後ろでNewtにトンネリングしてサービスを提供してるんだけど、体験はすごくスムーズで安定してたよ。最初に問題だと思ったことも、実はPangolinとは全然関係なかったし。

ここで挙げてる各ユースケースについて、ドキュメントにミニチュートリアルがあったらいいな。そうすれば、すぐにテストしてみて、役立つかどうか確認できるし。

これは、たくさんのリモート開発ボックスを管理するのにすごく興味深いですね… ちょっと無知な質問かもしれませんが(インフラにあまり関わっていない人からの)、CFトンネルは使ったことがなくて、プライベートサービスのプロキシはSSHのリバースプロキシトンネルかTailscaleくらいしかやったことがありません。テストしたいサービスは、特定のデバイスにあることが多いです。例えば、EC2インスタンス1台とか、外出中の自宅のノートパソコンとか。これが解決することを、例えばTailscaleではできないことを、わかりやすく説明してもらえますか?

ありがとう!あなたが使っているSSHやTailscaleは、あなたのユースケースにはすごく合っていると思います!私たちはこれを、サービスへの静的で永続的なトンネルとして見ています。SSHトンネルよりも一時的ではなくて、一般のユーザーをアプリケーションに入れるためのものです。つまり、ビジネス用の内部アプリや、家で家族にブラウザで見せたいImmichやGrafanaのようなホームラボアプリがあれば、これを使うのは良いツールかもしれません。わかりますか?

家のUnraidサーバーでCFトンネルをかなり使っています。要するに、公開したいアプリがあって、Tailscaleノードを追加したくないんです(例えば、妹が私のPlexサーバーを使っています)。だから、リバースプロキシを設定する代わりに、DNSでサブドメインを作成して(CF経由で)、そのサブドメインをCFトンネルにルーティングしています。これで、一つのサイトやサービスのために3つのフォーム入力をするだけで、SSL証明書も自動的に作成してくれます。大好きです。

/r/homelabでは、ここ数ヶ月みんながこれについて話していました。VPSを買ったんですが、後で安い小さなPCの方がProxmoxと組み合わせると自分のユースケースには合っていることに気づきました。次のステップは、いくつかのサービスを設定して、VPSにPangolinをインストールしてリバースプロキシの管理を簡単にすることです。まだ使っていませんが、全体的に素晴らしそうで、見たレビューも圧倒的にポジティブです。作ってくれてありがとう!

これを使うなら、家で運用するのが理にかなっています。VPSで運用すると、トラフィックがVPSで復号化されるので、Cloudflareトンネルと同じプライバシーの問題があります。VPSプロバイダーを信頼しなければなりません。

その通りです!でも、誰を信じるかについては少しコントロールが効きます。例えば、AWSを信じる方が、CFがトラフィックを復号化する時にあなたの貴重な利用データを集めないと信じるよりも、VMを覗き見しないと信じやすいかもしれません。

もう数ヶ月Pangolinを使っていて、すごくいいです。小さなVPS(静的IP)にインストールして、ホムラボから友達や家族に公開したいサービスの入り口にしています(動的IP)。完全に安全で、管理もとても簡単です。

すごいプロジェクトだね。VPSにホストしたnginxプロキシマネージャーに接続したtail scaleを使って、アプリケーションを公開してるよ。ここに書いたんだけど: https://hsps.in/post/how-i-host-public-apps-using-tailscale/ Pangolinはその設定に似てて、いいUIともっとコントロールが効くみたいだから、ぜひ試してみたい。ちょっと質問なんだけど、複数のドメイン名を扱えるのかな?複数のドメインをVPSに向けて、そこからプロキシしてるんだけど、Pangolinも複数のドメインに対応してる?

これが初心者っぽい質問だったらごめんだけど、これを使えばVPS上のサービスにアクセスできるの?それをインターネット上で公開したくない場合ね。例えば、VPSにKeycloakが動いてるとするじゃん。それを管理目的でアクセスしたいけど、他の人に見られたくない。Pangolinはそのための手段になるかな?

もうSSHポートフォワーディングを使うことを考えたことある?そうすれば、Keycloakが動いてるローカルポートを一時的に自分のマシンに転送できるよ。

もう外部からの貢献はあった?二重ライセンスのagplと商業ライセンスだから、最近やってるプロジェクトと似てて、貢献者がclaにどう反応するか気になってるんだ。ちなみに、あなたの短くてわかりやすいCLAが好きだよ!CLAの文言を弁護士に確認した?私のプロジェクトでは、貢献者が与える永続ライセンスを「ソフトウェアがagplの下で提案されている限り与えられるライセンス」に置き換えたかったんだけど、それだと簡潔さと法的明確さを保つのが難しくなるかも。

PangolinはDokployみたいなものと「自然に統合」できるのかな?それとも「置き換える」ためのもの?人々が簡単にデプロイできるようにDokployのテンプレートを作れる?

PangolinとNetBirdの違いは何?NetBirdも自己ホスト型で完全にオープンソースのソリューションだよね。https://github.com/netbirdio/netbird