Misskey 2023.11.1にMeilisearchを導入し,インデックスを作成する

Meilisearchを導入したのでメモ

最近,Misskey上で検索を実施すると,時間内に処理が終わらず(?)エラーが返ってくることが多くなりました.
そのため,以下のページを参考に,Meilisearchを導入しました.

MisskeyでMeilisearchを導入するやり方 – https://nanasi-apps.xyz/misskey-meilisearch
https://fedibird.com/@noellabo/111419037137255692
Running Meilisearch in production — Meilisearch documentation – https://www.meilisearch.com/docs/learn/cookbooks/running_production

構成

前提

  • 検索対象はすべての投稿(グローバルTL)
  • HDD・SSDに十分な余裕があること(msky.haruyjsn.netでは初回のインデックス作成で17GB程度消費した.)
  • index作成ツールを実行する環境で,MeilisearchとPostgresqlに対してアクセスが可能であること

NW

内部: 172.16.5.0/24
外部: 10.0.1.9

リバースプロキシ

OS: Ubuntu 22.04 LTS
HTTPServ: apache2
IP: 172.16.5.2

Misskeyサーバ

OS: Ubuntu 22.04 LTS
HTTPServ: Nginx
FQDN: mi.example.net
Misskey: 2023.11.1
configの場所: /home/mk/misskey/.config/
IP: 172.16.5.3

Postgresql

OS: Ubuntu 22.04 LTS
IP:172.16.5.4

Meilisearch

OS: Ubuntu 22.04 LTS
IP: 172.16.5.5

Melisearchのインストール

基本的に公式と同じ手順でインストールすれば良いです

実行ファイルのダウンロード

sudo apt update

apt install curl -y
# Install Meilisearch latest version from the script
curl -L https://install.meilisearch.com | sh
chmod +x meilisearch
mv ./meilisearch /usr/local/bin/
useradd -d /var/lib/meilisearch -b /bin/false -m -r meilisearch
https://www.meilisearch.com/docs/learn/cookbooks/running_production

設定ファイルの変更

この部分はあなたの環境に合わせて修正してください

curl https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml > meilisearch.toml

# ---以下の部分はあなたの環境に合わせて修正してください---
# ---master_keyは任意の文字列に設定してください---
sed -i 's/env = "development"/env = "production"/' meilisearch.toml
sed -i 's/http_addr = "localhost:7700"/http_addr = "172.16.5.5:7700"/' meilisearch.toml
sed -i 's/# master_key = "YOUR_MASTER_KEY_VALUE"/master_key = "YOUR_MASTER_KEY_VALUE"/' meilisearch.toml

# 設定ファイルのコピー
sudo cp ./meilisearch.toml /etc/meilisearch.toml

# 関連ディレクトリの作成
mkdir /var/lib/meilisearch/data /var/lib/meilisearch/dumps /var/lib/meilisearch/snapshots
chown -R meilisearch:meilisearch /var/lib/meilisearch
chmod 750 /var/lib/meilisearch

サービスファイルの作成

cat << EOF > /etc/systemd/system/meilisearch.service
[Unit]
Description=Meilisearch
After=systemd-user-sessions.service

[Service]
Type=simple
WorkingDirectory=/var/lib/meilisearch
ExecStart=/usr/local/bin/meilisearch --config-file-path /etc/meilisearch.toml
User=meilisearch
Group=meilisearch

[Install]
WantedBy=multi-user.target
EOF

サービスの有効化

sudo systemctl daemon-reload
sudo systemctl enable --now meilisearch

Misskeyの設定変更

vim misskey/.config/default.yml

グローバルTLのすべてのnoteを検索対象にする場合,以下の設定を追記します.

meilisearch:
  host: '172.16.5.5'
  port: 7700
  apiKey: 'YOUR_MASTER_KEY_VALUE'
  index: 'misskey'
  scope: 'global'

localのノートのみを検索対象にする場合は,scopeのglobalをlocalに変更してください

インデックスを事前に作成するため,Misskeyインスタンスのリロードはここでは実施しません.

導入以前のnoteに対してindexを作成する.

のえる様作成のツールを使用します.
https://github.com/noellabo/misskey_meilisearch_importer

このツールにはnodejsの実行環境と,Postgresqlとmeilisearchに対してアクセスでき,なおかつmisskeyのconfigファイルが必要だったため,今回はMisskeyサーバで実施しました.

git clone https://github.com/noellabo/misskey_meilisearch_importer.git
cd misskey_meilisearch_importer
pnpm install

node importer.js --config ~/misskey/.config/default.yml
$ node importer.js --config ~/misskey/.config/default.yml
Preparing for import...
Importing |████████████████████████████████████████| 100% | 14059530/14059529 Chunks 
$

エラーが表示されず,インポート処理が完了したら,misskeyインスタンスを再起動します.
サービス名はあなたの環境に合わせて修正してください.

sudo systemctl restart misskey.service

これでmeilisearchが動作します.
動作していなかったらおおよそ設定不備,入力コマンドの抜けな気がします.
systemctl status meilisearch などでサービスが正常に動作しているか,各種設定ファイルに誤りはないか,確認してください.

Related Posts:

Share

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です