Jabber/XMPP実装のejabberdをインストールしてみる

ejabberdというErlangでかかれたJabber/XMPP実装があるのを知ったのでとりあえずインストールしてテストしてみた。

インストールは以下のサイトを参考にしてみる。
How To Install eJabberd XMPP Server on Ubuntu | DigitalOcean

環境

  • ゲストOS Ubuntu 12.04.4 LTS
    • IP: 192.168.56.2
  • ホストOS(Mac、VirtulaBox)

VirtulaBoxのネットワーク設定

今回の内容とはあんまり関係ないんだけど、いつも忘れるのでメモがてらVirtualBoxのネットワーク設定です。NAT(アダプター1)+ホストオンリーアダプタ(アダプター2)を使ってい、アダプター2のポートフォワーディング設定で5222をフォワードするようにしています。これは、VirtualBox上のUbuntuに外の人(ホストOSと同じネットワーク上の別のMacとか)がアクセスできるようにするため。

VirtualBoxのポートフォワーディングの設定は以下の記事を参考にさせて頂きました。
VirtualBox ゲストOSのWebサーバに外部から接続する - ソースコードから理解する技術-UnderSourceCode

アダプター1の設定

アダプター2の設定

アダプター1のポートフォワーディング設定

インストール&設定

Ubuntuの場合、インストールはaptitude installで一発。

hironemu@ubuntu:~$ sudo aptitude install ejabberd
以下の新規パッケージがインストールされます:
  ejabberd erlang-asn1{a} erlang-base{a} erlang-crypto{a} erlang-inets{a} erlang-mnesia{a} erlang-odbc{a} erlang-public-key{a}
  erlang-runtime-tools{a} erlang-ssl{a} erlang-syntax-tools{a} libltdl7{a} libodbc1{a} libsctp1{a} lksctp-tools{a}
0 個のパッケージを更新、 15 個を新たにインストール、 0 個を削除予定、0 個が更新されていない。
13.4 M バイトのアーカイブを取得する必要があります。 展開後に 22.9 M バイトのディスク領域が新たに消費されます。
先に進みますか? [Y/n/?]

ここから設定。まず、以下のコマンドで、admin(となる予定の)ユーザの追加(testの部分はパスワード)

$ sudo ejabberdctl register admin localhost test

次に、/etc/ejabberd/ejabberd.cfgを以下のように変更して、上で追加したadminユーザを管理者として設定する。

#{acl, admin, {user, "", "localhost"}}.
{acl, admin, {user, “admin”, "localhost"}}.

ejabberd.cfgには以下のようにホスト名の設定がデフォルトで設定されている。ログインする際に使用するユーザ名の@の後ろはこの値を利用する(admin@localhostみたいな感じで)。今回はデフォルトのまま変更はしない。

%% Hostname
{hosts, ["localhost"]}.

設定を変更したらサービスを再起動する。

$ sudo service ejabberd restart

Chromeなどから以下のURLにアクセスして管理画面にログインする。

ユーザ名とパスワードは以下のとおり。ユーザ名、パスワードは上の「ejabberdctl register」で追加した値。ユーザ名については、ejabberd.cfgに設定したHostnameの値を使うのでadmin@localhostとなる。

ログインすると以下のような画面が表示される。

管理画面にログインしてヴァーチャルホスト > localhost > ユーザと移動して、ユーザを3つ追加。

  • hironemu
  • john
  • mary

1台目のMacのMessageアプリでhironemuユーザを登録。


以下のように証明書の警告がでるが、今回はテストなのでそのまま続行を押す。

2台目以降のMacJabber対応のアプリでmaryユーザ、johnユーザを登録。するとチャットができるようになる。

ejabberdはMulti-User Chat(mod_muc)というモジュールがあってデフォルトでONになっていたけど、MacのMessageアプリから複数ユーザを宛先に指定すると「このサーバは、グループチャットには対応していません」と表示される。グループチャットとMutti-User Chatは違うのそれとも設定が他に必要なのかどうなのか、次回の宿題ですね。