ejabberd を MariaDB に対応させた

ejabberd を MariaDB/MySQL に対応させたので、メモ。

pkg で入れられる ejabberd は、MySQL 対応でコンパイルされていないので、ports から入れ直す。

まず、ejabberd を停止して、パッケージを削除

次に、ports を最新版にして、ports をビルド/インストール。MySQL 対応にチェックを入れるのを忘れない。

/usr/local/etc/ejabberd/ejabberd.yml を修正。

なぜか、DDL ファイルが添付されていないので、github からダウンロードする。

MariaDB にログインして、データベース/テーブルを作成。

ejabberd を起動して、ユーザーを登録し直す。

Growi をインストールしてみた

備忘録置き場に Wiki を使いたくてググってみたところ、Growi というよさげな Wiki エンジンがあった。Linux へのインストールは色々記事が見つかったけど、FreeBSD にインストールしてる人はいなさげなので、作業記録をメモっておく。

Growi は、全文検索に ElasticSearch を使うので、まずそれをインストール。

必要なプラグインもあわせてインストール。

次に、Node.js が必要なので、これもパッケージからインストール。ただし、バージョンは LTS10.x でないといけないので、そこだけ注意。

Yarn が必要なので、npm でインストール。

続けて、MongoDB をインストール。

gcc でビルドが前提のモジュール (DTraceProviderBindings) があるため、gcc をインストール。12.0-RELEASE は (それ以前もだが)、llvm がシステムデフォルトなので、別途導入が必要なのだ。

最後に、Git をインストール。

Growiリポジトリをクローンする。

最新リリースを確認して、チェックアウトしておく。

Yarn で必要なパッケージをインストール。

DTraceProviderBindings が、DTrace 機能を必要とするので、カーネルモジュールをロードする。ロードしておかないとエラーになって起動しない。

/boot/loader.conf に追記しておくと便利。

起動スクリプトを /usr/local/bin/startgrowi.sh として作成。以下のような感じ。

ここで、試しに起動してみると、

とかいうようなエラーが出るかも知れない。が、慌てず騒がず、

する。すると、依存パッケージが更新されて、uws は消えてなくなり、上記のスクリプトで起動するようになる。

ejabberd へ移行

FreeBSD 12.0 へアップグレードしたら、Prosody がパッケージから消えたw

ので、ejabberd へ移行。ググっても古いバージョンの情報しかないので、公式サイトを参照しつつ設定。後々参考にするために、設定変更点を残しておく。

XMPP (Jabber) サーバー Prosody

Prosody をインストールして、いつでもチャット。とか思ってたら、なぜかログインできない。
クライアントが、「不明なホストです」とかエラーを返す。サーバー側の設定を見直してみても特におかしいところはない。
ていうか、レン鯖で動かしている Prosody の設定と変わりない。

もうお手上げで、XMPP サーバーは諦めることにした。

なぜ、FreeBSD なのか。

鯖 OS に、FreeBSD を選択したのは、zfs を使ってみたかったからです。シングルディスクの Mac mini で zfs を使う意味はないっちゃない。パーティションの構成に頭を悩ませたくなかったというのもあるけど、FFS2 でスワップ以外、全部 / に割り振ってもよかったわけだし。でもね、z ですよ、z。この厨二感溢れるネーミングにそこはかとなく惹かれるという。

BSD なら、他にも DragonFly BSD とか、OpenBSD とか、NetBSD とかあるんだけど、オンラインでバイナリアップデートできるのが、FreeBSD だけっていうのもある。このへんの感覚は、Debian に慣れた身体が楽をしたがるからです。Debian だと、

でアップグレード完了しますからね。(尤も、設定ファイルの類は自分で調べて書き換えなきゃならんのだけど、大抵はそのままでも動く)FreeBSD は近いところにきてる。将来的には、pkg 一発でカーネルもユーザーランドもアップグレードできるようにしよう、てな話が上がってるようですが、そうなるとますます FreeBSD なんですよ。

で、この Mac mini、Intel(R) Core(TM) i7-3615QM CPU @ 2.30GHz (4C8T)を積んでるなかなかのマシン。まさに鯖向き。メモリも 16GB あるので、やろうと思えば BhyVe使ってインスタンスを役割別に四つくらいに分けてとか一瞬考えたんだけど、そうするとメンテの手間が増える。主戦場は、外部に借りた専用サーバー2台の上に構築されている仮想サーバー20台なのだ。も、余計なことしたくない。げっぷ出そう。

ま、そんな感じなんですわ。