Cloudflare Tunnelsに代わるか?!オープンソースのPangolin登場、セルフホストの選択肢を広げる
引用元:https://news.ycombinator.com/item?id=44526015
PangolinはWireGuardトンネルでプライベートリソースを安全に公開できる、オープンソースのセルフホスト型リバースプロキシ管理サーバーだよ。インフラを完全にコントロールでき、プロキシ、認証、アクセスをUIで管理できるんだ。GitHubはhttps://github.com/fosrl/pangolin。VPSなら5分でデプロイできるよ!https://docs.fossorial.io/Getting%20Started/quick-install。Lawrence Systemsのデモ動画はこれ!https://youtu.be/g5qOpxhhS7M?si=M1XTWLGLUZ0WzTv&t=723。ポートフォワーディング不要、OAuth2/OIDC、WAFなど主要機能も満載さ。
これ超ワクワクするね!Cloudflare Tunnelのロックインがずっと嫌だったから、オープンソースの選択肢はマジで嬉しいよ。Pangolinが不安定なネットワークとか認証問題、スケーリングをどう扱うのか、Cloudflareの”it just works”に比べてどうなのかが特に気になるな。誰か実際に使った人いたら、感想教えて欲しい!家でRaspberry Piを使ってブログとか動かしてるから、実体験の話はマジで貴重だよ。
Pangolinは進化し続けてるよ。3ヶ月前の素晴らしい概要動画があるから見てみてね!https://www.youtube.com/watch?v=8VdwOL7nYkY
興味があるなら、こっちにもっと情報があるよ!https://aazar.me/posts/reincarnating-a-raspberry-pi
Cloudflare Tunnelエラーが出てるんだけど。
あぁ、皮肉だね。モバイルデータやVPNで確認したら、動いてるみたいだよ。
これ、リモート開発環境とかの管理にすごく面白そうだね。CF Tunnelsは使ったことないし、個人的にはSSHトンネルやTailscaleでプライベートサービスをプロキシしてるんだけど。PangolinがTailscaleとかと比べて何を解決してくれるのか、素人にも分かりやすく説明してくれるかな?EC2インスタンスとか家にあるノートPCみたいな単一デバイスでサービスをテストしたいって状況なんだけど。
ありがとう!君が使ってるSSHやTailscaleは、君のユースケースには最高だと思うよ!Pangolinは、もっと静的で永続的なサービスへのトンネル、つまり一時的なSSHトンネルというより、一般ユーザーを君のアプリに引き込むためのものだと考えてるんだ。だから、ビジネスの内部アプリとか、ImmichやGrafanaみたいなホームラボアプリを家族にブラウザから使わせたい場合に良いツールだよ。伝わったかな?
俺はNginx Proxy ManagerをリバースプロキシとSSL終端に使ってて、ImmichとかHome Assistantとか動かしてるんだけど。Pangolinを使うと、俺は何を得られるのかな?
もしNginx Proxy Managerでうまくいってるなら、それでいいと思うよ!Pangolinは主に、ユーザー管理、ピンコード、OIDC、ロールみたいなより細かい認証制御が欲しい場合にメリットがあるかな。NPMじゃそのままでは難しいかもね。あと、ISP側の問題があるなら、PangolinをVPSに置けばWireGuardの設定とかが楽になるんだ。全部UIとシンプルなインストールスクリプトでラップされてるからね。APIで自動化もできるよ。
内部アプリとかでトンネル使う必要ある?普通にルーティングしたり、ファイアウォール設定したりすればいいじゃん。正直、そんなに多くの人がトンネルを必要とする理由が分かんないんだけどな。
ISPがポート25、80、443をブロックしてるからトンネルは必須なんだよ。あと、自分のIPアドレスを直接公開したくない人もいるし、動的IPアドレスでもDNSの更新を気にしなくて済むから便利だよ。
なるほど、それってめっちゃ理にかなってるね!試してみるのが本当に楽しみだよ!
Tailscaleとheadscaleは内部アクセスに超便利。Cloudflare Tunnelsはサービスをネットに公開する時に保護してくれるんだ。両方使ってる人もいるし、CF TunnelsをNginxプロキシマネージャーに繋ぐのもアリだよ。Tailscaleも公開できるけど、CFの保護の方がガチだよ。Pangolinも面白そうだから、CF Tunnelsの裏で試してから移行するのもありかもね。
俺はCapRoverをLinux VMでTailscaleとCloudflareと一緒に使ってるよ。めっちゃうまくいくけど、CapRoverがSSLの制御をあんまり好きじゃないから、Nginxの設定をアプリごとに手動でいじる必要があるんだ。
いいセットアップだね。俺は一度設定したらもう触りたくないのか、それとも自分でいじり続けたいのかで、方向性を決めるのが好きなんだ。
俺、自宅のUnraidサーバーでCloudflare Tunnelsをめっちゃ使ってるわ。要は、公開したいアプリがあるけどTailscaleノードは使いたくない時(例えば姉がPlexサーバー使うとかね)。リバースプロキシを立てずに、CFでサブドメイン作って、それをCFトンネルにルーティングするだけなんだ。たった3項目入力するだけで、SSL証明書も自動でできるから最高だよ!
なんでTailnetに制限付きアクセスをさせないの?そうすれば何も公開されずに済むじゃん。
多分、Tailscaleをデバイスごとにインストールさせるのは、リンクを送るよりずっと大変なんだよ。だから俺はPangolinを使ってるんだ。
TailscaleとPlexは相性悪いんだよ。特にPlexが自分のファイルにアクセスするのにお金を取ろうとし始めてからね。Jellyfinへの移行を検討中だよ。Plexがこんな感じだから、TailscaleでLANに繋ぐのも複雑に感じるのは分かるわ。マジでPlexはクソ。いきなり無料アプリで自分のmp4ファイル見るのに金払えとかありえないだろ?誰が好き好んで中抜き野郎に金払ってんだよ。Plexのコア機能は全部無料でできることばっかだしな。
Plexの無料モバイルビューアーアプリが突然有料になったって話に混乱したよ。俺のPlexサーバーは友達とか家族が無料で使ってるんだ。Plex Homeっていう“家族のメンバー”みたいな区別があるらしいけど、よくわかんない。結局、家族を別ユーザーとして登録すれば無料で使えるままだよ。
それは違うんじゃないかな。俺はWindowsやmacOSの無料Plexサーバーをスマホから使ってるけど、2025年4月以前はリモート視聴が無料だったのに、最新アプデ以降はLAN外だとサブスクが必要って出るんだ。Plexのサーバーを介さないでTailscaleでトンネルしてWebアプリを使えば無料だけど、モバイルアプリだと無理。Plex Homeは古いアカウントが優遇されてるのかもね。
同じアカウントで接続してるの?それとも友達とかで別アカウントを追加してる?
なるほど、Plexは新しい課題があるんだね。一つのサービスを特定のユーザーのために公開したくないんだ。俺は家族と画像サーバーを共有する時、TailscaleをWindowsデスクトップにインストールしてもらうのは簡単だったよ。友達や家族をTailnetに追加すると、後でトラブルシューティングも楽になるんだ。CloudflareのCF access controlは公開されるし、WARPはクライアントにインストールが必要で、Tailscaleより設定が難しいみたいだね。
もう一つの大きな問題は、Plexが全ファイル名をサーバーに送るのを止められないことだね。
トンネル経由でメディアストリームを提供するのがToSに違反する可能性があるって知ってた?それが嫌で使わなかったんだよね。
皆さんこんにちは、もう一人のメンテナーだよ。PangolinはTraefikでHTTPプロキシ、Badgerで認証、GerbilでWireGuard管理をするんだ。NewtはCLIツール兼Dockerコンテナで、ユーザー空間WireGuardでGerbilに繋がりローカルリソースをプロキシするよ。これでサービス公開に特権プロセスやコンテナは不要さ!
数ヶ月間、自宅からサービスを提供するためにこれをHetznerの小さなVPSで使ってるよ。トラフィックは自宅のファイアウォールの裏にあるNewtにトンネルしてるんだ。すごくスムーズで安定してるよ。唯一問題かと思ったことも、Pangolinとは全く関係なかったね。https://github.com/orgs/fosrl/discussions/950
Newt (https://github.com/fosrl/newt) はPangolinシステムの一部で、通常は自宅のファイアウォールの後ろにある「エッジサーバー」側で実行するカスタムのユーザー空間WireGuardクライアントなんだ。Pangolinサーバー(通常は固定IPを持つ小さなVPSでホスト)に接続し、WireGuardトンネルのネゴシエートと、公開・マッピングした異なるサービスへのディスパッチを管理するよ。全体のスタックを理解するには、https://docs.fossorial.io/Getting%20Started/overview にある素晴らしいシステム概要図を見てみてね。
ドキュメントに各ユースケースのミニチュートリアルがあったら最高だな!すぐに試せて役立つか確認できるし。
もっとコメントを表示(1)
もうすぐだよ!ドキュメントを全面的に改善する予定さ!
Incusのチュートリアルが素晴らしいから見てみて!Pangolinでも同じことができたら最高だね、何ができるか把握できるし!
URL: https://linuxcontainers.org/incus/try-it
それはマジで嬉しいね!
Pangolinが内部でTraefikを使ってるって!Traefikってマジすごいよね、拡張性と堅牢性が特に!もっと注目されてもいいのに。
K3S homelabでingress controllerとしてTraefikを使ってるんだけど、DXは良い感じ。唯一、圧縮(gzip/br/zstd)ができてなくて、アプリケーション層でやってるのが微妙なんだ。何かヒントある?
テーブルステークスな機能なのに。
compress middlewareは試した? https://doc.traefik.io/traefik/middlewares/http/compress/
すでにクラスタに入ったリクエストを圧縮するってこと?インターネットから未圧縮で来たなら、あまり意味ないかもね。でも、ingress controllerの後にまだ処理があるなら、価値はあるかも。
GitHubにあるTraefik v3.4.4 amd64の公式バイナリはたった207MBだよ。
URL: https://github.com/traefik/traefik/releases/expanded_assets/…
HAProxyのDockerイメージはたった41MBしかないのに…debは1.6MBだよ。
いろんなTLSライブラリでHAProxyのバイナリをコンパイルしてるんだ。サイズはライブラリのバージョンやオプションで変わるね。OpenSSLは9.0MB、WolfSSLは4.6MBだった。OpenSSLのサイズは残念。TraefikはOpenSSL以外のTLSライブラリも使えるのかな?
現代の開発では、バイナリサイズなんて誰も気にしないんだね。ひどいもんだよ。
Cloudflare Tunnelsのオープンソースの代替案なんてたくさんあるよ: https://github.com/anderspitman/awesome-tunneling
でも、Pangolinは良いし洗練されてる方だと思うな。
Pangolinみたいに高機能でちゃんと動くWeb UIがあるのってどれ?
初歩的な質問でごめんね、VPS上のサービスをネットに公開したくないんだけど、これでアクセスできるかな?例えばKeycloakが動いてるVPSがあって、管理目的でアクセスしたいけど、一般には公開したくないんだ。Pangolinでできるかな?
KeycloakはSSOで使うんじゃないの?それならポートは公開しないとサービスが連携できないよ。もし管理用のポートがあるならPangolinとかで使えるよ。管理サービスをローカルポートだけで動かして、このソフトかWireGuardでアクセスすればいい。Authentikだと管理も同じWebポートだから、一部パスは公開せざるを得ないね。
まだ何も使ってないんだ。今開発中の唐辛子データベースをVPSで公開しようと考えてる。Keycloakで認証、他にヘッドレスCMSなんかも使いたい。ホスティング経験がないから、管理サービス(Keycloak admin console、ヘッドレスCMS admin interfaceなど)を自分だけアクセスできるようにして、攻撃面を減らせるか気になってるんだ。
管理サービスを自分だけアクセスできるようにして攻撃面を減らせるか?ってことだけど、答えはYESだよ。やり方はいろいろある。君の場合はWireGuardみたいなシンプルなものから始めるのがいいだろうね。Keycloakは初心者には設定が大変だよ。もし要件がシンプルなら、認証にはhttps://github.com/lldap/lldapを試してみて。
このスレッドは良いアドバイスが多いね。君一人ならSSHトンネル、Tailscale、NetBird、WireGuardだけでも十分だよ。Pangolinを使ってKeycloakのWebページに認証をかけることもできる。セキュリティの重要度や、他に誰がアクセスするかによるね。
ファイアウォールも使うべきだね。基本的にVPNサービス以外からのネットアクセスは全部ブロック。そして、VPNサービスにアクセスできるIPも制限するルールを設定できるよ。
SSHポートフォワーディングはもう考えた?そうすればKeycloakが動いてるローカルポートを一時的に自分のマシンに転送できるよ。
まだPangolinは考えてなかったけど、見てみるね。開発中のピーマン品種データベースをホストしたいんだけど、ホスティング経験ゼロだから何が公開されるかちょっと心配だなぁ。
すごいプロジェクトだね。俺はTailscaleをVPSでホストしてるNginx Proxy Managerに繋いで、アプリを公開してるよ。記事はここ:https://hsps.in/post/how-i-host-public-apps-using-tailscale/
Pangolinは似たような構成でUIも良くて、もっとコントロールできるみたいだから、絶対試すよ。質問だけど、複数のドメインに対応してる?俺は今、複数のドメインをVPSにポイントしてプロキシしてるんだけど、Pangolinもそれに対応してるかな?
うん、できるよ!言ってるみたいに全部VPSにポイントして、設定ファイルのdomainsリストに追加するだけでOK。必要なだけいくらでも追加できるよ。詳細はここで見てね:https://docs.fossorial.io/Pangolin/Configuration/config#doma…
PangolinがShow HNに載ってて嬉しいな。今日VPSにPangolinをインストール・設定したよ。ミニPCでNewtを動かしてWireguardトンネルを確立。Youtubeとドキュメント見て簡単にできた。
今のところアプリ2つとRustdeskのプライベートリレーがうまく動いてるよ。CloudflareのTOSとかメディアストリーミング(Jellyfin/Emby)の心配なしに、もっと自分でコントロールしたかったんだ。数日でCloudflareから移行する予定。
俺のホームラボも似たような設定だけど、手動なんだ。DockerイメージはcertbotでHTTPS、WireguardでHetzner VPSと繋いで、プロキシでトラフィックを制御してる。
最近は認証を追加したいんだけど、今のWireguard設定だとクライアントごとに手動設定が面倒でさ。Pangolinならワンストップで置き換えられそうだし、特にユーザー管理を追加する時に設定が楽になりそうだよ。
みんながこんな風に動かしてるってよく聞くけど、俺はいつも混乱するんだ。
”プロキシで特定のトラフィックを通す。”
なんでプロキシを…ホームラボで直接動かさないの?
このプロジェクトはCloudflareの代替として、そしてインターネットの分散化のためにすごく面白そうだね。でも、トラフィックの少ないホームサーバーだと、nginxで直接単一ポートを公開するのと比べて、Pangolinを使うメリットって何?固定IPでサーバーIPを直接公開してるんだけど、安価なVPSをプロキシとして使うことで何が得られるのかな?
PangolinとNetBirdの違いって何?NetBirdもセルフホストで完全オープンソースのソリューションだよね。これ:https://github.com/netbirdio/netbird
NetBirdはオープンソース版だと全機能ないと思うよ。俺にとってネックだったのはSSOの制約だったな。
NetBirdとPangolinはユースケースは似てるけど、技術は違うみたいだね。NetBirdはTailscaleの代替でWireGuardを使ってるけど、PangolinはTraefikを使ってるのかな?個人的にNetBirdユーザーで気に入ってるんだけど、UIのデザインはすごく似てるね!
Pangolinは”プライベートネットワークへの公開アクセス”を提供するもので、メッシュVPNやネットワーク構築ツールじゃないよ。NetBirdはTailscaleの代替だと思うけど、俺たちはCloudflare Tunnels、Ngrok、Zscalerの代替なんだ。デバイス間の通信ネットワークを作るより、認証付きでウェブからアクセスできるように公開することに特化してるんだ。
もっとコメントを表示(2)
Pangolinがpinggy.ioやCloudflare Tunnelsみたいなものってのは正しいよ。でも、PangolinはファイアウォールがIDチェックとかをするような、そこまで細かいアクセス制御はできないみたいだね。でも、VPNやメッシュネットワークじゃないってのは確かだよ。
PangolinもWireGuardを使ってるし、機能を有料プランの壁の向こうにロックしたりしないんだ。
/r/homelabではここ数ヶ月ずっと話題になってるよ。俺はVPSを買ったんだけど、後からProxmoxと組み合わせるなら安価な小型PCの方が自分の使い方に合ってるって気づいたんだ。次はもっとサービスを設定して、PangolinをVPSにインストールしてリバースプロキシの管理を楽にするつもり。まだ使ってないけど、全体的に素晴らしいし、見てきたレビューは圧倒的に肯定的だよ。作ってくれてありがとう!
これ、すごくいいね。俺は今、AWS VPCでTwingate(ホスト型・有料)を使ってるよ。AWSインスタンスはプライベートサブネットにあって、公開IPは付けてない。NATインスタンスを使ってアウトバウンドインターネットに接続してるんだけど、Pangolinを試すのはすごく興味あるな。Pangolinでも公開アクセスを提供できる?今はCaddyをリバースプロキシとして使ってるんだけど。
そうだよ!そこがPangolinの得意なところだと思うな。もしユーザーのために認証付きの公開アクセスが欲しいとか、自分のネットワークや分散した複数のネットワークに入り込むためのトンネリングの機能が必要なら、Pangolinは君の相棒になるよ!
俺はPangolinをもう数ヶ月使ってるけど、これ最高だよ。小さなVPS(固定IP)にインストールして、自分のホームラボ(動的IP)から友達や家族に公開したい全てのサービスのエントリポイントにしてるんだ。完全に安全で、管理もすごく簡単だよ。
いいね、それは良いニュースだ!
これ、すごく良さそう!
最近OPNSenseとWireGuard、Let’s Encryptで似たような構成を組んだんだ。SynologyのNginxリバースプロキシに証明書をプッシュして、クライアントからは内部IP範囲だけでWGトンネルを有効にしてる。自宅用ならこれでOKだけど、マルチサイトだとPangolinの方が洗練されてて設定も楽そう!
NewtってWireGuardサーバーのカスタム実装なの?セキュリティ監査は受けた?
訂正: ごめん、読み間違えたよ。NewtはWireGuardクライアントで、wireguard-goベースだよね?
そう、その通り!全部wireguard-goがベースだよ。
Pangolinと連携してトンネルを立ち上げるWireGuardラッパーなんだ。netstackユーザースペースで動くから、ポートを開くのにカーネル権限は不要だし、必要なネットワークにアクセスするためのTCP\UDPリバースプロキシが組み込まれてるよ。
プロによるセキュリティ監査があったか、公開のセキュリティペンテストプログラムがあるかも知りたいな。
認証サービスの爆発的な影響範囲を考えると、これは特に重要だよね。
常にセキュリティ専門家からのコードレビューやペンテストを求めてるよ。どんどん試して、問題があれば privacy@fossorial.io に教えてほしいな!
プロジェクトが成長してリソースが増えれば、プロのサービスに監査を依頼するつもりだよ。
監査があったら、きっとそう発表するだろうね。
外部からの貢献はあった?
AGPLと商用でデュアルライセンスらしいけど、貢献者たちがCLAにどう反応するか気になってね。(最近、僕がやってるプロジェクトも同じデュアルライセンスなんだ。)
CLAの簡潔さが好きだよ!
弁護士と文言を確認した?僕のプロジェクトでは、貢献者からの永続ライセンスを『AGPLで提供される限り付与されるライセンス』にしたかったんだけど、簡潔さと法的明確さを両立させるのが難しいかも。
うん、PRもいくつか来てるし、すぐにマージしないといけないアクティブなものもあるよ(笑)。
CLAについて懸念の声は今のところないね。個人のホー厶ラバーには無料で提供しつつ、企業がプロジェクトを資金援助できる方法を見つけるのが重要だったんだ。
これを使うなら、自宅で動かすのが賢明だね。
VPSで動かすと、トラフィックがVPS上で復号されちゃうから、Cloudflare Tunnelsと同じプライバシー問題があるよ。VPSプロバイダーを信頼しなきゃならないからね。
これって本当だよな!でも、信頼する相手を自分で選べる自由は大きいぞ。例えば、AWSがVMの中を覗き見するより、Cloudflareがトラフィックを解読して利用データを収集する方が心配だろ?
同意だね。CloudflareにTLS終端をお願いするのと、プロバイダがVMから暗号化されてないデータを抜き取ると疑うのは、全然違う話だろ。
VPSの方がCloudflareより監視が少ないってのは疑わしいな。あまり知られてない小さいVPS会社は、適切な監査やアクセスプロセスがない可能性もあるぞ。
VPSプロバイダを信頼できないなら、一体どうすればいいんだ?
TLSパススルーを使えばいいんだよ。暗号化されたトラフィックをそのまま家に送るんだ。そうすれば、鍵は全部自分ちにあるってこと!
もし俺のサーバーがVPN上で動いてて、IPがたまに変わるなら、Pangolinでサービスを公開できるかな?今、公開IPを晒すしかなくて嫌なんだ。ファイアウォールとTraefikは使ってるんだけどさ。
公開可能なアドレスは必須だね。それを知る方法も必要だよ。俺も自己ホスティングで同じ気持ちだ。ストレスを減らすために、公開VPSを借りて、クライアント側で永続的な接続を維持してるんだ。ポートフォワーディングは要らないよ。
うん!大抵の人は月1ドルくらいのVPSを借りて、これを入れるんだよ。Pangolinは自分のネットワークにトンネルで繋がるから、どんな環境でもホールパンチして接続できるはず。それに、VPSの公開アドレスにアクセスするから、君のネットワークは隠れるってわけさ!
frpとかsishでこんなことやろうとしてるけど、まだうまくいかないんだ。俺のユースケースはちょっと変で、k8sのTraefikインスタンスの裏でトンネルを動かして、TraefikにTLS終端させたいんだよね。Pangolin試してみようかな。
俺のホームラボでTraefikをリバースプロキシに使ってるんだけど、Pangolinと組み合わせて、既存のルートとかサービスをそのまま使えるかな?それとも、今あるTraefikの裏にPangolin用のTraefikを別に立てなきゃダメ?