MeilisearchをGoogle Compute Engineにデプロイして独自ドメインを設定する

はじめに
Firebaseで全文検索を実装するために調査していたところ、Meilisearchというオープンソースを見つけました。調べてみるとこのMeilisearchが良さそうだったため、Google Compute Engine上にデプロイし、独自ドメインを設定して動作確認してみました。その手順をメモします。 ちなみに、Meilisearchのリポジトリを見てみると、2022年9月時点でスター数も29kほどありかなりの人気でアップデートも頻繁で開発が活発に行われている印象です。JavascriptやPython、Ruby、さらにFlutter用のパッケージも公式で用意されています。
A lightning-fast search engine that fits effortlessly into your apps, websites, and workflow.
前提と環境
- 課金が有効になっているGoogleアカウントを持っていること
- ドメインを持っていること
以下の公式ドキュメントに従って作業します。
Using our GCP custom image, Meilisearch can be deployed on GCP in just a few minutes.
作業の流れ
作業の流れは以下のようになります。 Meilisearchが公式のGoogle Compute Engine用イメージを用意しているため、それを使用します。
Google Cloud Platformでの作業
- Meilisearch用のイメージをインポートする
- Meilisearchのインスタンスを作成する
ドメインプロバイダでの作業(独自ドメインを使用する場合のみ)
ドメインプロバイダで作成したインスタンスのIPと独自ドメインのレコードを登録しておきます。独自ドメインを使用しない場合はこの作業は不要です。
- Aレコードを設定する
Meilisearchインスタンス上での作業
Google Compute Engineで作成したMeilisearchインスタンスにSSH接続して、以下の作業をおこないます。
- Meilisearchの初期設定を行う
Google Cloud Platformでの作業
Meilisearch用のイメージをインポートする
Google Compute Engine用のMeilisearch公式イメージが用意されているためそれをインポートして使えるようにします。
以下のように、Compute Engineの左側のサイドメニュー内の「イメージ」をクリックし、表示されたページ内の「イメージを作成」をクリックします。
以下のようにイメージのインポート機能について「付与」をクリックします。
上記の「付与」をクリックして以下のように赤背景のメッセージが表示された場合は、メッセージの指示通りにCloud Buildを有効にしてから再度「付与」を実行します。(Cloud Buildの有効化方法は本記事の最後に補足として載せています。)
最終的には、以下の状態で「作成」をクリックします。以下の「仮想ディスクファイル」の部分に指定するファイル名(画像内のmeilisearch-image/meilisearch-v0.28.0-debian-10.vmdk
)は、本記事の「前提と環境」の中で記載したMeilisearchの公式ドキュメント内に記載されているものをコピー&ペーストして指定してください。
「作成」をクリックすると、以下の画面に遷移して、作成中状態になります。作成完了までおおよそ5、6分ほどかかりました。もしステータス欄のローディングアイコンが時間経過しても消えない場合は、一旦ブラウザのリロードでページ再読み込みしてみた方がいいかもしれません。
以上でMeilisearch用のイメージのインポートが完了です。
Meilisearchのインスタンスを作成する
インポートしたMeilisearchのイメージを使ってGoogle Compute Engineのインスタンスを作成します。
以下のように、Google Compute Engineのサイドメニューの「イメージ」のページを再度開いて、インポートしたMeilisearchのイメージをクリックします。私の場合はインポートしたイメージ名をmeilisearch-image-1
としたので、これをクリックします。
以下のような画面が表示されるので、「インスタンスを作成」をクリックします。
「インスタンスを作成」をクリックすると、以下のように作成するインスタンスの設定画面に遷移します。ここでは各自の状況に合わせて項目を設定します。
私は以下のようにしました。メモリが大きいほど検索に対する応答速度も速くなるようです。
次に同じページで以下のように「ブートディスク」という項目があるので、ここの「変更」をクリックします。
「変更」をクリックすると以下のようにブートディスクの設定パネルが展開するので、ここで
「カスタムイメージ」タブで「イメージ」部分に前節でインポートしたMeilisearchのイメージが指定されていることを確認して「選択」をクリックします。
「選択」をクリックするとパネルが閉じるので、最後に「ファイアウォール」部分の2つにチェックを入れて、「作成」をクリックします。
これでMeilisearch用のインスタンス作成が完了です。
なお、Meilisearch用のインスタンスが正常に作成できているかは自分のPCでcurl
コマンドを実行して確認できます。your_ip
部分は、作成したインスタンスの外部IPに置き換えてください。外部IPは、上記画像内のインスタンス名の並びに表示されていると思います。
上記のように{"status":"available"}
と表示されれば無事にMeilisearch用のインスタンス作成が完了し、稼働しています。
ドメインプロバイダでの作業(独自ドメインを使用する場合のみ)
Aレコードを設定する
続いて作成したMeilisearch用のインスタンスに独自ドメインを割り当てます。
私は今回Google Domainsで取得したnanolog.app
というドメインを使うため、以下のようにGoogle Domainsの管理画面からAレコードを追加しました。以下のAレコードを設定することで、search.nanolog.app
を使って今回作成したMeilisearchのインスタンスにアクセスできるようになります。34.100.200.300
は作成したMeilisearch用の外部IPに置き換えてください。
ドメインが反映されるまで少し時間がかかるかもしれませんが、自分のPCなどで以下のdig
コマンドを実行して反映されたかを確認できます。
もしくは以下のようにcurl
コマンドでドメイン設定の完了を確認できます。
以下のようにレスポンスが帰ってくればOKです。
以上でドメインの設定が完了です。
Meilisearch用インスタンス上での作業
Meilisearchの初期設定を行う
作成したMeiliserachインスタンスにSSH接続すると、以下のように表示されます。
(Google Compute EngineのインスタンスへのSSH接続方法はこちら)
このインスタンスをproduction
環境(本番環境)で使うか確認されるので、y
と入力してEnterを押します。
すると以下のように表示されて次にMEILI_MASTER_KEY
(マスターキー)を自身で設定するかを確認されます。ここでは、n
にして自動生成します。
n
でEnterを押下すると以下のようにマスターキーが自動生成されます(以下のKSjeon19dn3Ls93nFNl349FNS93nkljasIk39fnsa
がマスターキー)。このマスターキーを使って、外部からのアクセス用のAPIキーを作成したり、削除したりするために使用します。マスターキーはどこにも公開しないよう慎重に扱う必要があります。
続いてドメインを設定するか確認されるので、ここではy
として設定を進めます。
What is your domain name?
の後に設定したい自身の独自ドメインを入力し、Enterを押下します。
続いてSSLの設定をするか確認されるのでy
でEnterを押下してSSLの設定を進めます。
以下のようにcertbot
によるSSL設定が開始されて完了します。
完了後に自分のPCから以下のようにcurl
を実行して以下のように表示されれば完了です。
以上でMeiliserach用のインスタンスに独自ドメインの割り当てとSSL設定が完了し、Meilisearchを使えるようになりました。 後は実際にWebサイトやスマートフォンアプリから作成したMeilisearchへリクエストを投げて使います。
なお、Meilisearchは初期状態では保護されておらず、誰からでもアクセスを受け付ける状態になっています。実際のサービスでは認証ユーザのみに使用許可したい場合が多いと思います。この場合は、別途APIキーを作成、設定する必要があります。 これについては以下に別途まとめました。
認証ユーザにのみMeilisearchの使用を許可して保護するためには、Meilisearchのマスターキーの設定とAPIキーの作成が必要になります。この手順をまとめます。
補足
Cloud Build を有効にする手順
Google Cloud Platformのサイドメニューの中にある「APIとサービス」→「ライブラリ」をクリックします。
以下のように「cloud build」と検索し、表示された「Cloud Build API」をクリックします。
以下のページが表示されるので、「有効にする」をクリックします。
以上でCloud Buildの有効化が完了です。もしCloud Build以外にも有効化が必要なサービスがあれば、同じ手順で有効化できると思います。
まとめ
全文検索のためにMeilisearchをGoogle Compute Engineにデプロイする手順をまとめました。Google Compute Engine以外にも、Digital OceanやAWS、Azureでのデプロイ手順も公式ドキュメントに記載されています。
関連記事
- 公開日:2022/09/11 更新日:2022/09/11
Google Compute EngineのインスタンスにSSH接続できなくなった時の対処方法
Google Compute EngineのインスタンスにSSH接続できていたのにSSHの設定ミスや原因不明でSSH接続できなくなった時の対処方法をメモします。自分のPCからだけでなく、Google Cloud Platform上での管理画面からもSSHできない場合にも有効です。
- 公開日:2022/09/09 更新日:2022/09/09
Meilisearchを認証ユーザのみ使用できるようAPIキーを設定する
認証ユーザにのみMeilisearchの使用を許可して保護するためには、Meilisearchのマスターキーの設定とAPIキーの作成が必要になります。この手順をまとめます。
- 公開日:2022/09/08 更新日:2022/09/08
Google Compute EngineのインスタンスにSSH接続する
Google Compute Engineのインスタンスにssh接続するための手順をまとめます。
開発アプリ
