無料でブラウザからSSH・RDP・VNCができる「Pangolin」、オープンソースでセルフホスト可能

固定IPもポート開放も不要でファイアウォール内のSSH・RDP・VNCをブラウザから直接操作でき、ポートの転送も簡単に設定できるリモートアクセス基盤「Pangolin」が、オープンソースソフトウェアとして公開されています。
Pangolin | Zero Trust Remote Access Platform - Better VPN
https://pangolin.net/

fosrl/pangolin: Identity-aware VPN and tunneled reverse proxy for remote access based on WireGuard.
https://github.com/fosrl/pangolin
◆Pangolinの機能
・設定の一元管理
通常このようなシステムでは接続元に専用の接続ソフトをインストールし公開ポートやプロトコルの設定を行う必要がありますが、Pangolinでは接続元に「Newt」をインストールし起動すれば、SSH・RDP・VNCなどの転送設定をPangolinの管理画面で行えます。

・ブラウザでSSH接続可能
リソース作成後、指定されたURLにアクセスするとSSH用の接続フォームが表示されるのでパスワード認証の場合「Username」にSSHのユーザー名、「Password」にSSHのパスワードを入力して「Connect」をクリック。

SSHのコンソールがブラウザ上で利用できます。

◆RDP・VNCによるリモート接続
リモート接続もSSH接続と同様に作成したURLにアクセスするとRDPやVNCの認証フォームが表示されます。VNCの場合「Password」にパスワードを入力して「Connect」をクリック。

ブラウザにデスクトップ画面が表示されウインドウの操作やツールが利用できます。

・ポート転送
LAN内部のサーバーで構築されたWEBアプリやNASの設定画面など外部からブラウザでアクセスできないアプリを外部から操作できます。

・複数ユーザーと権限の割り当て
Pangolinの認証を利用し、それぞれのリソースに対してロールやユーザー単位での許可が可能。

・多彩な認証
Pangolinの認証以外にもPINコード・共有パスコード・メールアドレスのホワイトリスト・BASIC認証などが選択できます。全ての認証をオフにした場合は公開状態となり自由にアクセス可能となります。

・クライアント経由で接続するPrivate Resource
ブラウザからアクセスできる公開型のリソースだけでなく、外部に公開しない「Private Resource」も作成でき、ユーザーの端末にインストールした「Pangolin Client」を経由して接続する方式で、許可されたユーザーやロールおよび端末だけがアクセスできます。

◆クラウド版Pangolinの登録方法
クラウド版では「5ユーザーまで無料」のアカウントが作成可能。公式サイトの右上にある「Sign up」をクリック。

登録フォームが表示されるので「Email」に任意のメールアドレス、「Password」「Confirm Password」に任意のパスワード、「I agree to the terms of service and privacy policy.」はチェック必須、「Keep me in the loop with news, updates, and new features by email.」は任意でチェックし、「Create Account」をクリック。

登録したメールアドレスに承認コードが送信されるので「Verify Email」の「コード」欄に入力し、「Submit」をクリック。

組織の登録フォームが表示されるので「Organization Name」に任意の組織名、「Organization ID」に任意のIDを入力して「Create Organization」をクリック。

次に「Name」に任意の接続元の名前を入力、「Operating System」では接続元のOSを選択、「Method」は実行方法を選択し、接続元でコネクターアプリ「Newt」のインストール用コマンドと起動用コマンドが表示されるのでコピーして保存し「Create Site」をクリック。

作成したサイトの接続状況が表示されます。

接続元でNewtのインストール用コマンドおよび起動コマンドを実行すると「Status」がOnlineに変わり正常に接続が完了したことが分かります。

◆ドメインの登録方法
ブラウザから公開リソースへアクセスするためのURLに使用するドメインを登録します。管理画面のサイドメニューから「Domains」アイコンをクリック。

ドメインの一覧画面で「Add Domain」をクリック。

ドメインの登録フォームが表示されるので「Domain Delegation(NS)」を選択し、「Domain」に利用するドメインを登録して「Create Domain」をクリック。

登録が完了するとドメインを管理するDNSに追加するレコードの内容が表示されます。

例としてAmazon Route 53の場合、レコードの追加から「レコード名」に任意のサブドメイン、「レコードタイプ」は「NS - ホストゾーンのネームサーバー」を選択、「値」に提示されたネームサーバーを入力してから「レコードを作成」をクリック。

Pangolinの管理画面に戻り「Status」が「Verified」の表示になればドメインの登録は完了です。

「example.com」を登録した場合はドメイン名全体をPangolinが利用する形になりますが、「remote.example.com」のようにサブドメインを指定すれば「ssh.remote.example.com」のようなサブ・サブドメインを公開リソース用のURLとして利用でき、既存サイト用の「example.com」や「www.example.com」と切り分けて運用できます。
◆公開リソースの作成方法
・SSH
サイドメニューの「Resource」の中にある「Public」をクリック。

リソースの一覧画面で「Add Resource」をクリック。

「Create Resource」画面で「Name」に任意の名前、「Type」は「SSH」、「Subdomain」に任意のサブドメインを入力、SSH Serverの設定では「Mode」を「Pangolin SSH」に、「Authentication Method」は「Manual Authentication」にし、接続元のサイトを「Sites」で選択してから「Create Resource」をクリック。

登録が完了するとリソース一覧に作成したリソースと接続用公開URLが表示されます。

・リモート接続
上記と同じ手順で「Add Resource」をクリック後、「Create Resource」画面で「Name」に任意の名前、「Type」は接続元のプロトコル「RDP」・「VNC」に合わせて選択、「Subdomain」に任意のサブドメインを入力し、サーバーの設定では接続元のサイトを「Sites」で選択して「Destination」に接続先のIPもしくはホスト名、「Port」に設定したポートを入力して「Create Resource」をクリック。

登録が完了するとリソース一覧に作成したリソースと接続用公開URLが表示されます。

・ポート転送
上記と同じ手順で「Add Resource」をクリック後、「Create Resource」画面で「Name」に任意の名前、「Type」は「HTTP」を選択、「Subdomain」に任意のサブドメインを入力し、「Targets Configuration」では「Site」に接続元のサイトを選択し「Address」と「Port」には接続先となるWEBアプリやデバイスの設定用のIPもしくはホスト名とPortを入力して「Create Resource」をクリック。

登録が完了するとリソース一覧に作成したリソースと接続用公開URLが表示されます。

◆セルフホスト版Pangolinの登録方法
セルフホスト版も公開URLでの転送を行う場合はドメインが必要です。サブ・サブドメイン形式でRoute 53のDNSに登録する例として「レコードを作成」ページで「レコード名」に「*.【任意のサブドメイン】」を入力、「レコードタイプ」は「A」を選択、「値」にはセルフホストのIPを入力し「レコードを作成」をクリックして登録して利用するサブドメインの準備をしておきます。

今回はGoogle CloudのVMインスタンス上のUbuntuでDockerが利用できる環境に構築します。インストールフォルダを作成して移動後、コマンドを実行しインストーラーを取得。
sudo mkdir -p /opt/pangolin sudo chown "$USER":"$USER" /opt/pangolin cd /opt/pangolin curl -fsSL https://static.pangolin.net/get-installer.sh | bash
sudoコマンド付きで実行します。
sudo ./installer
参考としてインストール中の質問には以下のように答えました。
# インストール先 Installation directory: /opt/pangolin # エンタープライズエディションを利用するかどうか # 個人利用・ホビー用途・年間売上10万米ドル(約1600万円)未満の事業者であれば無料で利用できます you want to install the Enterprise version of Pangolin? The EE is free for personal use or for businesses making less than 100k USD annually.: No # PostgreSQLを利用する? Do you want to use PostgreSQL (not recommended for most users)?: No # 用意したサブドメイン、no subdomainとありますが利用できます Enter your base domain (no subdomain e.g. example.com): 【用意したサブドメイン】 # ダッシュボードのアドレス domain for the Pangolin dashboard: pangolin.【用意したサブドメイン】 # Let's Encrypt用のメールアドレス Enter email for Let's Encrypt certificates: 【メールアドレス】 # トンネル作成にGerbilを利用 Do you want to use Gerbil to allow tunneled connections: Yes # SMTPサーバーを利用 Enable email functionality (SMTP): No # IPv6を利用 Is your server IPv6 capable?: No # 国別・ASN別制限を利用 want to download the MaxMind GeoLite2 Country and ASN databases for blocking functionality?: No # コンテナをインストールして起動 Would you like to install and start the containers?: Yes # Docker or Podman? Would you like to run Pangolin as Docker or Podman containers?: docker
すべての質問が終わるとPangolinのコンテナが起動し、初回接続に必要な「Setup token」が表示されるのでメモしておきます。
=== Setup Token === Waiting for Pangolin to generate setup token... Setup token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx This token is required to register the first admin account in the web UI at: https://【ダッシュボードのドメイン】/auth/initial-setup
ブラウザでダッシュボードのドメインにアクセスすると管理者登録フォームが表示されるので、「Setup token」に取得したトークン、「Email」に任意のメールアドレス、「Password」「Confirm Password」に任意のパスワードを入力して「Create Admin Account」をクリック。

ログインフォームが表示されるので「Email」に入力したメールアドレス、「Password」にパスワードを入力して「Log In」をクリック。

新規サイトの登録画面になれば構築は完了となり、後はクラウド版と同じ操作で利用可能です。

なお、オープンソース版ではブラウザSSHやリモート接続が利用できませんが、「TCP」・「UDP」ポートの転送が可能なため、クライアントソフトがあればポート転送経由でSSHやRDP・VNCが利用できます。
・関連記事
スマホ・PC間で安全なネットワークを簡単に構築できる「Tailscale」レビュー - GIGAZINE
AdGuardが独自のVPNプロトコル「TrustTunnel」をオープンソース化 - GIGAZINE
無料でローカルで動きデバイス間で同期可能な自分だけのObsidianを作ってメモや知識をため込んで整理できる「Files.md」、オープンソースでセルフホストも可能 - GIGAZINE
無料で使えてデバイス間での自動同期にも対応しているパスワードマネージャー「bitwarden」を使ってみた - GIGAZINE
特別な設定なしにPCのリモート操作やファイルのやり取りが行えるリモートデスクトップソフトウェア「RustDesk」 - GIGAZINE
・関連コンテンツ
in ソフトウェア, レビュー, Posted by darkhorse_logmk
You can read the machine translated English article Pangolin is a free, open-source, self-ho….







