b-shock. Fortress

Mastodon 2.3にアップグレードした。全文検索できるようになった。

2.3.0がリリースされた。
今回の目玉は何か。LDAP対応?ノンノン、全文検索に決まってんだろw

2.3へのアップグレード以外にもいくつか作業したので、以下にご報告する次第。

2.3へのアップグレード

いつもどおりの手順である。DBのマイグレーションと、アセットの再構築を含む。
特に補足することはない。

Node.js 9.xを適用

少し前から、管理対象サーバ上の古いNode 6.xを少しづつアップグレードしてたが、 Mastodonインスタンスだけが未対応だった。

FreeBSDでは、 pkg install node ってやるとなんと8.xを飛び越えて、 9.xがインストールされる。 9.xでもストリーミングAPIは正常に動作する模様。

以下、FreeBSDでNode 6.xから9.xへのアップグレードを行った手順。

1
2
3
4
5
su
pkg delete node6 npm3
pkg install node npm
cd ~mastodon
yarn upgrade

faviconを変更

Mastodonのfaviconは、かなり面倒な手順を踏まなければ変更できない様だ。
最近某所で仲良くさせて頂いているワイヤード・パンチ氏に教えてもらったまとめがこちら。

マストドンのインスタンスのfaviconを変更する方法。

めんどくさすぎだろw
faviconを作るところまではいいとして、その先はもっと簡単に済ませた。

即ち、nginxが直接返すようにすれば良いのである。
nginx.confにもともと以下の記述があったので、今回特に対応不要だった。

1
2
3
location ~ \.(html|png|gif|xml|ico|json|svg|txt|ogg|mp3)$ {
root /usr/local/www/mastodon/public;
}

全文検索の導入

公式にある、この手順の通りであるが。

Elasticsearch Guide

aptコマンドを操作する手順、多分Ubuntuのものだろう。Debianでも動くのかは知らない。
FreeBSDでは当然、全く手順が異なる。

1
2
3
su
cd /usr/ports/textproc/elasticsearch6
make install clean

上記手順で、依存パッケージであるopenjdk8も一緒にインストールされる。

引き続き、以下実行。
必要なら /usr/local/etc/elasticsearch/elasticsearch.yml を編集するが、 通常は不要と思う。

1
2
sysrc elasticsearch_enable="YES"
service elasticsearch start

起動したら、一応、 curl http://localhost:9200 で動作確認を。

Elasticsearchの正常動作を確認したら、Mastodonを全文検索に対応させる。
.env.productionに、以下追記。

1
2
3
ES_ENABLED=true
ES_HOST=localhost
ES_PORT=9200

追記したら、以下実行。

1
2
cd ~mastodon
RAILS_ENV=production bundle exec rails chewy:deploy

このrakeタスクでインデックスの作成なんかも行う様だが、かなり時間がかかる。 5,000トゥートほどある弊インスタンスでは、16分ほど要した。

終了後、Mastodonの再起動。

全文検索の使い方

今まであった検索窓にワードを投入するだけ。
以前は間違いなくヒットしなかった、すごく古いトゥートもヒットするようになった。

この機能、クライアント側の対応が必要な模様。
Kurotodon では動かなかったが、他のクライアントの分をあとで試してみようかと。以上。