CRTMP Server Documentation

Dokumentasi dari anak cupu, jika ada kesalahan mohon sensei2 yang lebih ahli mengoreksi saya :)

CRTMPSERVER merupakan server untuk streaming yang menggunakan script dari bahasa C++. Di sini saya menggunakan linux dari distro centos dan untuk testing koneksi serta capture nya saya menggunakan Adobe flash media live encoder 3.2. Berikut dokumentasi langkah-langkah yang saya lakukan :
1. Install perl net ssleay

yum install perl-Net-SSLeay gcc gcc-c++ autoconf automake subversion make
openssl-devel dstat 

2. Install cmake, yaitu tool yang anda butuhkan untuk menjalankan c++ rtmp

sudo yum install cmake

3. Download C++ RTMP

sudo svn co –username anonymous –password "" https://svn.rtmpd.com/crtmpserver/branches/1.0 crtmpserver 

choose yes to store password unencrypted

4. Masuk ke cmake directory

cd crtmpserver/builders/cmake 

Lalu ketik command berikut

sudo cmake –DCRTMPSERVER_INSTALL_PREFIX=/usr/local .  

Build files telah dibuat di directory /home/onyit/crtmpserver/builders/cmake

Lalu ketik make install command

sudo make install  

5. Set the permission

chmod -R 755 /usr/local/sbin/crtmpserver  

Lalu copy file crtmpserver.lua ke /usr/local/etc/

sudo cp crtmpserver/crtmpserver.lua /usr/local/etc/

6. Edit file crtmpserver.lua
Ubah tulisan “applications”
ke

/usr/local/lib/crtmpserver/applications

Kemudian mediaFolder, ubah ke directory yang telah anda sediakan untuk penyimpanan media anda.

7. Sebelum menjalankan server kita membutuhkan Self-Signed SSL Certificate
Apa itu? Secure socket layer digunakan untuk mengenkripsi web traffic agar tidak mudah di-intip oleh orang lain, karena pada umumnya traffic nya tidak dienkripsi. SSL ini akan mengenkripsi data stream antara web server dan client. SSL menerapkan asymmetric key atau Public Key Cryptography, jadi nantinya akan dibuat dua buah key yaitu public dan private, nah sebuah key yang dienkripsi hanya dapat didekripsi oleh key pasangannya, misal ada sebuah key private maka key ini hanya dapat didekripsi oleh key public yang sesuai dengannya. Lalu untuk apa sertifikatnya? Sertifikat ini lebih ke aturan proses komunikasi, sertifikat ini untuk memastikan bahwa pihak yang sedang berkomunikasi dengan kita adalah benar-benar pemegang sertifikat, jadi untuk menghindari serangan impersonation atau peniruan.

a. Generate a Private Key
Openssl digunakan untuk membuat RSA Private Key and CSR (Certificate Signing Request) yang digunakan untuk membuat self-signed certificate yang nantinya bisa digunakan untuk testing atau pemakaian internal.

Key RSA ini key 1024 bit yang dienkripsi menggunakan Triple DES dan disimpan dalam format PEM sehingga dapat dibaca sebagai teks ASCII. (nanti dibahas diartikel lain aja ya masalah kriptografi :) )

sudo openssl genrsa -des3 -out server.key 1024

Anda akan diminta password, ketik saja password apapun namun jangan lupa diingat untuk step
selanjutnya

b. Generate a Certificate Signing Request

sudo openssl req -new -key server.key -out server.csr

di sini nanti anda akan diminta memasukkan beberapa informasi seperti nama Negara, provisi, kota,
organisasi, nama domain dan email.

c. Remove Passphrase from Key, perintah ini digunakan agar apache tidak meminta pass-phrase tiap
kali web server start. Pertama, copy dulu file server.key ke server.key.org

sudo cp server.key server.key.org

command selanjutnya adalah

openssl rsa -in server.key.org -out server.key

jangan lupa mengetikkan password yang telah anda definisikan di step sebelumnya.

d. Generating a temporary self-signed certificate for 365 days

openssl x509 -req -days 365 -in server.csr -signkey server.key -out
 server.crt

e. Copy file server.crt and server.key ke /usr/local/lib/crtmpserver/applications/appselector

sudo cp server.key /usr/local/lib/crtmpserver/applications/appselector
sudo cp server.crt /usr/local/lib/crtmpserver/applications/appselector

f. Jalankan servernya

/usr/local/sbin/crtmpserver /usr/local/etc/crtmpserver.lua

Anda nanti akan mendapat hasil kira-kira seperti ini

start the server

start the server

Note : Jika anda sudah pernah menjalankan server lain sebelumnya, misalnya red5, stop dulu
servernya.jika tidak ada, ya tidak perlu :)

sudo /etc/init.d/red5 stop

8. Agar server secara otomatis jalan saat booting, langkahnya pertama-tama kita buat dulu file
crtmpserver di directory /etc/init.d/ ketikkan init script dari Brian Jones,
a. Masuk ke init.d directory

cd /etc/init.d

b. Buat crtmpserver file

vi crtmpserver

c. Lalu copy script di bawah ini

#!/bin/bash
#
# /etc/rc.d/init.d/crtmpserver
# crtmpserver This shell script takes care of starting and stopping
#
#### BEGIN INIT INFO
# Author: Brian Jones jonesy@cs.princeton.edu
#
# chkconfig: 2345 13 87
# description: crtmpserver is the C-RTMP-Server Service daemon.
### END INIT INFO

# Source function library.
. /etc/init.d/functions

ROOTDIR=/usr/local
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=crtmpserver
DAEMON_ARGS="--daemon /usr/local/etc/crtmpserver.lua"
NAME=crtmpserver
DESC=crtmpserver
PIDFILE=/var/run/$NAME.pid

start() {
 echo -n "Starting crtmpserver Server: "
 if [ -f $PIDFILE ]; then
 PID=`cat $PIDFILE`
 echo crtmpserver already running: $PID
 exit 2;
 else
 daemon $DAEMON $DAEMON_ARGS
 RETVAL=$?
 echo
 [ $RETVAL -eq 0 ] && touch /var/lock/subsys/crtmpserver
 return $RETVAL
 fi

}

stop() {
 echo -n "Shutting down crtmpserver Server: "
 #echo
 killproc crtmpserver
 echo
 rm -f /var/lock/subsys/crtmpserver
 return 0
}

case "$1" in
 start)
 start
 ;;
 stop)
 stop
 ;;
 status)
 status crtmpserver
 ;;
 restart)
 stop
 start
 ;;
 *)
 echo "Usage: {start|stop|status|restart}"
 exit 1
 ;;
esac
exit $?

d. Start script nya

sudo /etc/init.d/crtmpserver start

sudo /sbin/chkconfig crtmpserver on

9. Coba connect dengan by adobe flash live encoder, ganti tulisan localhost dengan ip server anda, klik
connect

connect!

connect!

Lalu start capture dengan mengklik start

start

start

see? video anda akan diencode, lalu dikirim ke server, lalu server akan mengirim ke client dan didecode di sisi client

 

Reference :

http://wiki.rtmpd.com/tutorial_full_centos_build

http://www.akadia.com/services/ssh_test_certificate.html

About these ads

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s