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のインストール
基本的に公式と同じ手順でインストールすれば良いです
実行ファイルのダウンロード
https://www.meilisearch.com/docs/learn/cookbooks/running_productionsudo 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
設定ファイルの変更
この部分はあなたの環境に合わせて修正してください
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
などでサービスが正常に動作しているか,各種設定ファイルに誤りはないか,確認してください.