Google Cloudを使用して(ほぼ)無料でBitwardenをセルフホストする方法

パスワードマネージャーは、悪意のある攻撃者や盗難からオンラインIDを保護する最も簡単な方法の1つです。利用可能な無数のオプションの中で、BitwardenやKeepassのようなオープンソースプロジェクトは、世界的に最も信頼できると見なされています。

しかし、さらに一歩進んだ場合はどうでしょうか。セキュリティを強化するために、プライベートサーバーでBitwardenをホストできますか?

なぜセルフホストBitwarden?

Bitwardenはほとんどのユーザーに便利なホスト型ソリューションを提供します。必要な機能セットに応じて、誰でも無料またはわずかな月額料金で使用できます。パスワードは暗号化された形式で保存されているため、Bitwardenの開発者でさえパスワードにアクセスできません。

ただし、より目の肥えたプライバシー志向の人々は、暗号化されているかどうかに関係なく、パスワードを完全に制御したいと思うかもしれません。そのために、Bitwardenはセルフホストオプションを提供します。これにより、パスワード管理ソフトウェア全体を独自のハードウェアに展開できます。パスワードマネージャーは、この「オンプレミス」オプションを公式にサポートしています。

ただし、セルフホスティングの最大のハードルは、ソフトウェアを展開するために常に利用可能なコンピューターを見つけることです。予備のコンピューターやRaspberryPiをホームサーバーとして絶対に使用することはできますが、信頼性にはほど遠いものです。

一方、オフサイトサービスは稼働時間を保証します。たとえば、Google Cloudは、 Compute Engineのサービスレベル契約に基づいて、サーバーが少なくとも99%の時間利用可能であることを保証します。

さらに、サーバーが動作不能になると、修正するまで同期先が表示されなくなります。一方、新しいクラウドサーバーインスタンスの起動は迅速であり、ハードウェアの広範なトラブルシューティングは必要ありません。

セルフホスティングとは、パスワードマネージャーのセキュリティを管理していることも意味します。パブリックBitwardenサービスが将来セキュリティ違反の犠牲になった場合でも、データベースは非公開のままで影響を受けません。

どのクラウドストレージプロバイダーを選択する必要がありますか?

Google Cloud、Microsoft Azure、Amazon AWSは、市場シェアで3大クラウドサービスプロバイダーです。

幸いなことに、3つすべてに無料枠があり、少数のサービスを無料でホストできます。当然、ハードウェアの仕様や地理的な場所など、いくつかの制限がありますが、Bitwardenを単にセルフホスティングする場合はそれほど重要ではありません。

ただし、利用可能な3つのオプションのうち、Google Cloudは、最初の12か月の試用期間を超えて常に無料の階層を提供する唯一のサービスです。このサーバーの最大の制限は、わずかな帯域幅とストレージの許容量が付属していることです。ただし、パスワードホスティングにのみ使用しているため、これらの制限はどちらも問題にはなりません。

具体的には、Google Cloudは、特定の地域でホストしている限り、1つのf1-microサーバーインスタンスを無料で提供します。公開時点では、オプションはオレゴン、アイオワ、サウスカロライナに限定されています。

ただし、これらの地域から遠く離れた場所に住んでいても、Bitwardenのユーザビリティはそれほど影響を受けません。ビデオストリーミングなどの大きなファイルを含むアプリケーションでは、ユーザーとデータセンター間の物理的な距離がはるかに重要になります。

最後に、Googleは毎月1GBの発信ネットワーク帯域幅のみを無料インスタンスにプロビジョニングします。 BitwardenのWebインターフェースは、ロードするたびに数メガバイトのデータを使用しますが、パスワードを定期的に同期するだけでは、この制限を超えることはありません。

注: Googleの無料利用枠ではハードウェアを無料でリースできますが、静的IPアドレスを予約するには少額の料金を支払う必要があります。これは、インターネットですでにIPv4アドレスが不足しているためです。需要が供給を上回っているため、GoogleCloudは現在IPアドレスごとに1時間あたり0.002ドルを請求しています。 Bitwardenサーバーを24時間年中無休で1か月間実行すると、1.44ドルが請求されます。

最初のステップ:Bitwarden用のサーバーのプロビジョニング

開始するには、 Google Cloudコンソールにアクセスして、Googleアカウントにログインします。次に、プラットフォームのCompute Engineセクションに移動し、[作成]ボタンを押して新しい仮想マシンインスタンスを起動します。

マシンの名前を入力し、ドロップダウンメニューで前述のリージョンの1つを選択します。次に、[マシン構成]セクションで、サーバータイプとして[f1-micro]を選択してください。これらの設定により、サーバーはGoogleのAlwaysFree階層に分類されます。

最後に、仮想マシンのブートイメージとして「Debian」または「Ubuntu」を選択し、ディスクサイズを最大許容値である30GBに設定します。新しい仮想マシンの作成を確認したら、VMのリストに表示されるまで数分待ちます。

次に、仮想マシンに静的IPアドレスを割り当てる必要があります。このようにして、毎回同じIPからBitwardenインスタンスにアクセスできます。これを行うには、 このドキュメントページに従ってください

静的IPを取得したら、ドメインプロバイダーに移動し、同じアドレスを指すDNSレコードを設定します。この手順の手順は、使用するプロバイダーによって異なります。単にそのドキュメントを参照してください。

すべてが正しく設定されていると仮定すると、ドメイン名(abc.xyz)はまもなくGoogle CloudVMを直接指すようになります。

これで、この仮想マシンにBitwardenをインストールする準備が整いました。ここをクリックしてVMのリストに戻り、SSHボタンをクリックしてVMに接続します。

Bitwardenをサーバーにデプロイする

仮想マシンに正常に接続したら、次のコマンドを実行してベースオペレーティングシステムを更新します。

 Sudo apt-get update
 Sudo apt-get upgrade

次に、次のように入力してDockerをインストールします。

 curl -fsSL https://get.docker.com -o get-docker.sh
 sh get-docker.sh

上記のインストールスクリプトが失敗した場合は、 Dockerを手動でインストールするか、 公式ドキュメントに従ってください。

この時点で、あとはBitwardenのDockerイメージをダウンロードして実行するだけです。次のコマンドはまさにそれを実現します。

 docker pull bitwardenrs/server:latest
 docker run -d --name bitwarden -v /bw-data/:/data/ -p 80:80 bitwardenrs/server:latest

この時点で、Bitwardenはサーバーに完全にインストールされています。ただし、外部クライアントはまだBitwardenインスタンスに接続できません。そのためには、Webサーバーに有効なTLS証明書を提供する必要があります。この要件は、パスワードが送受信されている間、パスワードを安全に保つためのものです。

キャディを使用したリバースプロキシとSSL

Caddyは、この複雑さのほとんどを抽象化するオープンソースのリバースプロキシです。ドメインが正しく構成されている限り、Caddyは必要な証明書を自動的に生成して更新します。

Docker経由でCaddyをインストールするには、次のコマンドを入力するだけです。

 docker pull caddy/caddy:alpine

次に、Caddyが実行し、証明書とファイルを保存するためのディレクトリを作成します。 2番目のコマンドは、空の構成ファイルを作成します。

 sudo mkdir /etc/caddy
 sudo nano /etc/Caddyfile

次の内容を貼り付けます。

 yourbitwardendomain.com {
reverse_proxy /notifications/hub/negotiate 0.0.0.0:80
reverse_proxy /notifications/hub 0.0.0.0:3012
reverse_proxy 0.0.0.0:80
}

上記のブロックの「yourbitwardendomain.com」を独自のドメインに置き換えることを忘れないでください。 Ctrl + Xを押して保存します。

次に、Dockerコンテナを開始するだけです。

 sudo docker run -d --name caddy -v /etc/Caddyfile:/etc/caddy/Caddyfile -v /etc/caddy:/root/.local/share/caddy --net host --restart on-failure caddy/caddy:alpine

以上です!ドメインにアクセスすると、安全な接続を介して、Bitwardenに直接アクセスできるようになります。

何らかの理由でページの読み込みに失敗した場合は、手順を見逃したか、Caddyを正しく構成していない可能性があります。 BitwardenはHTTPS接続でのみ機能するため、サーバーのパブリックIPアドレスに移動して直接アクセスすることはできません。

Bitwardenへのパスワードのバックアップを開始します

Bitwardenセルフホストサーバーが稼働すると、パスワードのアップロードと安全な保存を自由に開始できます。

Maxim Zhgulev / Unsplash