S0t4's Blog

Hanya Catatan dan Mencoba Untuk Berbagi

Saturday, June 5, 2010

Chat Server dengan Ejabberd2 + Log Message di Ubuntu

  Blogger Sejati       Saturday, June 5, 2010
Disini aku buat proyek untuk bikin Chat Server sendiri untuk intern kantorku dengan tambahan modul logging conversation.

Sebelum instalasi siapkan dulu yang diperlukan:
Untuk Ejabberd aku pakai versi 2.1.3, bisa diambil sorcenya disini
Modul log message-nya diambil disini

Asumsi server ejabberd pakai IP 192.168.1.1 , domain anu.com

Ok sekarang kita mulai

1. Sebelumnya, install paket pendukung (aku pakai ubuntu 10.04 /lucid)
$ sudo apt-get install libncurses5-dev
$ sudo apt-get install openssl libssl-dev
$ sudo apt-get install erlang




2. Extract source Ejabberd dan patch modulnya (asumsi patch ditaruh di folder src ejabberd)
$ tar xzvf ejabberd-2.1.3.tar.gz
$ cd ejabberd-2.1.3/src
$ patch -p0 < patch-src-mod_logdb-2.1.3.diff
(extract dahulu zip filenya)
3. Tahap instalasi ejabberd
src$./configure
apabila saat configure keluar error "configure: error: Could not find development files of Expat library", itu tandanya harus install expat-devel dulu di ubuntu, caranya:
$sudo apt-get install libexpat1-dev


src$make
src$ sudo make install



4. Setelah semua terinstall dengan baik, sekarang tahap konfigurasi /etc/ejabberd/ejabberd.cfg
Yang aku edit cuma :
4.1. Ganti host (host disini bisa berupa domain ataupun IP address servernya).
Host disini adalah host server chat yang dilayani oleh linux server, bisa lebih dari satu (ini kelihatan sebagai virtual hostnya)
misal : {hosts, ["localhost", "192.168.1.1", "anu.com"]}.
4.2. Untuk support koneksi SSL aktifkan baris ini
{5222, ejabberd_c2s, [

%%
%% If TLS is compiled in and you installed a SSL
%% certificate, specify the full path to the
%% file and uncomment this line:
%%
{certfile, "/etc/ejabberd/server.pem"}, starttls,

{access, c2s},
{shaper, c2s_shaper},
{max_stanza_size, 65536}
]},

cara generate certificate lihat bagian note dibawah

4.3. Untuk mendukung Loging Message, tambahkan baris berikut:
a. Di seksi akses
{access, mod_logdb, [{allow, all}]}.
{access, mod_logdb_admin, [{allow, nama_user_admin}]}.

b. Di seksi Modul, tambahkan baris berikut
{mod_logdb, [
{dbs, [
{mnesia, []}
]},
{vhosts, [{"localhost", mnesia},{"192.168.1.1", mnesia}, {"anu.com", mnesia}]},
{ignore_jids, ["nama_user_admin@192.168.1.1"]}, // user yg tidak dilog messagenya
{groupchat, none},
{purge_older_days, 365},
{dolog_default, true},
{poll_users_settings, 5}
]}



5. Jalankan server Ejabberd
$ sudo /sbin/ejabberdctl start

6. Buat user admin ejabberd
$ sudo /sbin/ejabberdctl register nama_user_admin 192.168.1.1 some_password

7. Agar user admin bisa akses sebagai admin, tambahkan baris berikut di baris ACL
{acl, admin, {user, "nama_user_admin", "192.168.1.1"}}.
{access, configure, [{allow, admin}]}.


8. Restart server ejabberd...
$ sudo /sbin/ejabberdctl stop
$ sudo /sbin/ejabberdctl start

9. Administrasi, penambahan user, pengaturan departemen (Shared Roster Group), Dan pengaturan Log message bisa dilakukan lewat browser dengan cara akses :
http://192.168.1.1:5280/admin
user : nama_user_admin
pass : some_password

10. Menu logging akan kelihatan di baris paling bawah di virtual host > Users Messages
dan masing masing user juga bisa diset apa di log chatnya atau tidak....

Silakan coba sendiri....



Note:
Membuat Self-Signed Certificate

Buat self-signed certificate, dalam contoh di bawah ini di set valid kurang lebih untuk 10 tahun (3650 hari)

$openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem

Jika saat membuat certificate Anda set password, maka setiap menjalankan ejabberd, Anda akan diminta memasukkan password untuk certificate tadi, dan tentu saja itu menjadi masalah ketika ejabberd dijalankan otomastis saat boot.

Untuk itu kita perlu buat versi privkey.pem yang tidak mengunakan password. Lalu hasilnya kita masukkan ke berkas server.pem. Lalu mengapa harus digabung? Karena konfigurasi di ejabberd mensyaratkannya begitu. Direktif certifle harus diarahkan ke berkas yang berisikan private key dan certificate.

$openssl rsa -in privkey.pem -out privkey.pem.tanpa-password
$cat privkey.pem.tanpa-password >> server.pem
$rm privkey.pem

Kemudian salin berkas certificate server.pem ke lokasi instalasi ejabberd.


$sudo mv server.pem /etc/ejabberd/server.pem
Dan untuk menerapkan konfigurasi, Anda harus merestart service ejabberd.

$sudo /sbin/ejabberdctl stop
$sudo /sbin/ejabberdctl start

Mengaktifkan koneksi SSL di port 5223

Sunting berkas konfigurasi /etc/ejabberd/ejabberd.cfg, cari baris seperti dibawah ini dan sesuaikan seperti contoh di bawah ini.

{5222, ejabberd_c2s, [
{certfile, "/etc/ejabberd/server.pem"}, starttls,
{access, c2s},
{shaper, c2s_shaper},
{max_stanza_size, 65536}
]},

%%
%% To enable the old SSL connection method in port 5223:
%%
{5223, ejabberd_c2s, [
{certfile, "/etc/ejabberd/server.pem"}, tls,
{access, c2s},
{shaper, c2s_shaper},
{max_stanza_size, 65536}
]},

Sama seperti di atas, untuk menerapkan konfigurasi yang baru, Anda harus merestart service ejabberd.

$sudo /sbin/ejabberdctl stop
$sudo /sbin/ejabberdctl start

Sekarang Anda bisa mengakses jabber server menggunakan TLS di port 5222 atau SSL di port 5223.
logoblog

Thanks for reading Chat Server dengan Ejabberd2 + Log Message di Ubuntu

Previous
« Prev Post

No comments: