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)
- IP: 192.168.11.8
- VirtualBoxのポートフォワーディング設定 5222 -> 5222
VirtulaBoxのネットワーク設定
今回の内容とはあんまり関係ないんだけど、いつも忘れるのでメモがてらVirtualBoxのネットワーク設定です。NAT(アダプター1)+ホストオンリーアダプタ(アダプター2)を使ってい、アダプター2のポートフォワーディング設定で5222をフォワードするようにしています。これは、VirtualBox上のUbuntuに外の人(ホストOSと同じネットワーク上の別のMacとか)がアクセスできるようにするため。
VirtualBoxのポートフォワーディングの設定は以下の記事を参考にさせて頂きました。
VirtualBox ゲストOSのWebサーバに外部から接続する - ソースコードから理解する技術-UnderSourceCode
アダプター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となる。
- user: admin@localhost
- password: test
ログインすると以下のような画面が表示される。
管理画面にログインしてヴァーチャルホスト > localhost > ユーザと移動して、ユーザを3つ追加。
- hironemu
- john
- mary
1台目のMacのMessageアプリでhironemuユーザを登録。
以下のように証明書の警告がでるが、今回はテストなのでそのまま続行を押す。
2台目以降のMacやJabber対応のアプリでmaryユーザ、johnユーザを登録。するとチャットができるようになる。
ejabberdはMulti-User Chat(mod_muc)というモジュールがあってデフォルトでONになっていたけど、MacのMessageアプリから複数ユーザを宛先に指定すると「このサーバは、グループチャットには対応していません」と表示される。グループチャットとMutti-User Chatは違うのそれとも設定が他に必要なのかどうなのか、次回の宿題ですね。