Author Archives: Anton Raharja

Do It Yourself IPPBX with CentOS 6.7 minimal, Asterisk 11 and FreePBX 12


Do It Yourself an IPPBX.

This article is divided into three parts:

  • Part 1: Prepare The Server
  • Part 2: Install Asterisk 11
  • Part 3: Install FreePBX 12

The goal is to get the PC provides Private Branch eXchange services, a phone system, using Free and Open Source Software.

Part 1: Prepare The Server

Linux CentOS 6.7 Minimal

Linux server installation:

  • You may use VirtualBox or any other virtualization software, or a real server
  • You need fast Internet connection, we will be downloading lots of stuffs from the server
  • Install CentOS 6.7 minimal version, get minimal version of ISO here
  • Configure the network so that the server will have access to the Internet
  • Access the server using SSH, work from outside
  • You will need to login as root during installation

Suggestion on partition layout:

  • 4GB for /
  • 1GB for swap
  • the rest of available space for /var

Continue reading


Secure Calling with Asterisk

In VoIP network with Asterisk being the server or SIP proxy the secure calling can be achieved by enabling TLS to encrypt the signalling and enabling SRTP or ZRTP to encrypt the media or data/voice. Once implemented SIP UA, softphone or IP phone, can be set to use TLS instead of UDP or TCP as it’s transport. The advantage of choosing TLS is that the SIP traffic exchanged between SIP UA and Asterisk will be encrypted, it means it will take a considerable amount of time and effort for the Man in The Middle to decrypt it without the encryption key, if not possible.

Below are screenshots of CSipSimple (Free and Open Source SIP softphone on Android) calling the other party and having end-to-end encryption during the call with Asterisk as the server:

tls_zrtp_sas_confirmation tls_zrtp_sas_confirmed

Continue reading

Install playSMS using Docker in DigitalOcean

So far I’m satisfied with what I get from docker-playsms project, in such a short time. From the project I have built the Docker image and push it to the registry so that people can use it right away. The project also intended for people who want to build the image them self, customize it, fix it, add or remove stuffs, re-package it and then push it under their own name, for their own purposes.

I might be too early to get satisfied, but I do, so be it :)

I realize that so much things can be improved, so much stuffs can be added and enhanced. But I leave that to us all, can’t do it my self for sure, for now.


This article is the tutorial on how to install playSMS, a Free and Open Source SMS portal or SMS gateway, using Docker in DigitalOcean. We will be using the Docker application image available on DigitalOcean and playSMS Docker image available in Docker hub.

The tutorial can be followed in about 30 minutes. Once you learnt then you can do this again faster, I’d say less than 15 minutes.

Let’ start.

Continue reading

Introducing Docker for playSMS

This week I spent my time to understand more about Docker. It looks like something useful that I may use in the future, or now.

Hooking playSMS project with Docker seems reasonable, Docker will make playSMS installation easier, much faster and consistent. So I did. I setup a new Free and Open Source Software project to learn more about Docker and how it can be used to install playSMS.

Here is the playSMS Docker project:

Continue reading

Convert Nikon D7000 MOV to MP4

I shot several videos during our family trip to Universal Studio Singapore and Legoland on my D7000. Nikon D7000 saves video on MOV format file, but I would like to keep them as MP4 files to match our smartphones videos from Note 2 and LG G2.

Here is how I converted Nikon D7000 MOV to MP4 on my Ubuntu 15.04:

apt-get install ffmpeg
ffmpeg -i DSC_2041.MOV -vcodec libx264 -strict -2 -pix_fmt yuv420p result.mp4

Continue reading

Persistent paths for dynamic device file

This post is related to playSMS and Kannel, how to configure Kannel when you know that the device file names aren’t persistent.


When USB GSM modem plugged to a server Linux kernel assigned dynamic device file /dev/ttyUSB*, such as /dev/ttyUSB0 or /dev/ttyUSB1. For example, USB GSM modem with 2 ports will then be assigned to /dev/ttyUSB0 for port 1 and /dev/ttyUSB1 for port 2.

Problem starts when we unplug the GSM modem and re-plug back afterwards. Linux kernel will then assign different device file to it, was /dev/ttyUSB0 now /dev/ttyUSB2 and was /dev/ttyUSB1 now /dev/ttyUSB3.

Continue reading

Serve GitHub Flavored Markdown

I do not want to forget how to do this, so I’m writing it down now. To me this is important as I wrote manuals and training materials in markdown format, like in GitHub wiki.

The article is about how to serve markdown formatted files just like you browse it in GitHub, locally or when offline. The markdown files are written in GitHub Flavored Markdown (GFM).

Here goes the manual.

First, prepare your server or desktop, install npm.

apt-get install npm
ln -s /usr/bin/nodejs /usr/bin/node

Continue reading

How I Install playSMS

With the very long period between official releases and the habit of playSMS developer (me!) to postpone the official release until it felt its time to, this is what I would do in my box to install playSMS:

mkdir -p /opt/git
cd /opt/git
git clone playsms
cd playsms
ls -l

Above commands will get you the master version of playSMS from Github and saved them in your git local repo that is /opt/git/playsms.

Whenever you have plan to update your playSMS installation and want to get the latest updates you can simply do this:

cd /opt/git/playsms
git pull

If that was my first time and I planned to install playSMS, I would follow manual in provided by playSMS from /opt/git/playSMS/ to install playSMS.

In many installation I’ve done so far, I went for the easiest way to keep sync with the latest. I symlink the git local repo to playSMS installation directory.

For example if my playSMS installation directory would be /var/www/html/playsms then I would do this symlink instead of copying files, like this:

ln -s /opt/git/playsms/web /var/www/html/playsms

So, basically this is how I install playSMS:

Mostly, I’ll use master version. I’ll get playSMS source codes from Github git repository instead of download it from sourceforge or tags.

I’ll install based on manual written in and for web folder I will symlink my git local repo to playSMS installation directory.

That is all.


Telepon Rakyat Butuh Tambahan Programmer

Pada kesempatan ini saya ingin berbagi informasi lowongan kerja part time atau freelance. Saat ini tim Telepon Rakyat butuh bantuan rekan-rekan yang mempunyai keahlian sebagai berikut:

  1. Biasa bekerja dengan Linux
  2. Biasa bekerja secara remote
  3. Biasa bekerja dengan git
  4. Mengenal Trello dan mampu mempelajarinya dan menggunakannya
  5. Harus berpengalaman dalam menggunakan PHP dan Laravel

Kandidat programmer akan bekerja dengan source code aplikasi VoIP ID yang sifatnya terbuka, artinya seluruh kontribusi programmer akan terbuka untuk umum. Kandidat diharapkan dapat membantu tim Telepon Rakyat untuk menambahkan fitur-fitur dan memperbaiki bugs yang ada.

Besaran honor dapat didiskusikan, pembayarannya per bulan dan waktunya tidak lama, mungkin jangka waktunya antara 3 sampai 12 bulan saja. Cara bekerjanya adalah saya akan tuliskan pekerjaan di Trello board, saya assign kepada programmer lalu programmer mengerjakannya. Tidak perlu ketemuan secara fisik, tetapi kadang-kadang ada undangan untuk bertemu untuk menyamakan persepsi.

Mereka yang mempunyai 5 keahlian diatas dapat menghubungi saya melalui email saya


Petunjuk Memulai Telepon Rakyat

Telepon Rakyat adalah penyedia layanan gratis untuk Voice over Internet Protocol atau VoIP, jaringan komunikasi berbasis IP. Pengguna dapat menggunakan aplikasi tertentu atau perangkat keras tertentu yang khusus untuk VoIP berbasis SIP untuk terdaftar dan kemudian dapat melakukan panggilan telepon antar sesama pengguna Telepon Rakyat dan layanan VoIP lainnya berbasis SIP.

Untuk saat ini panggilan telepon hanya dapat dilakukan antar sesama pengguna Telepon Rakyat dan layanan VoIP lainnya berbasis SIP. Keterbatasan ini karena penyedia layanan Telepon Rakyat memerlukan izin khusus agar dapat menghubungkan penggunanya dengan PSTN maupun jaringan GSM, dan saat ini kami belum memilikinya, bahkan sebenarnya belum ada niat untuk mengarah kesana.

Pengguna Telepon Rakyat dibedakan dalam 2 jenis akun, yaitu tipe Manager dan tipe User. Sekilas mengenai fungsi Manager dan User sebagai berikut :

  • Akun tipe Manager dapat mendaftarkan domain di Telepon Rakyat. Telepon Rakyat akan memilihkan prefix secara acak pada domain tersebut dan menghasilkan URL khusus untuk control panel
  • Akun tipe User dapat mendaftarkan diri mereka melalui URL khusus yang diberikan oleh Manager, setelah itu mereka dapat menambahkan nomor telepon VoIP pada akun mereka
  • Akun tipe Manager dirancang untuk dimiliki oleh sistem administrator sebuah komunitas, organisasi atau perusahaan, atau bahkan lembaga negara
  • Sedangkan akun tipe User lebih merupakan perorangan atau perangkat saja yang menjadi bagian dari komunitas tersebut

Kesimpulan singkat :

  • Manager mendaftarkan domain di Telepon Rakyat dan mendapatkan informasi URL khusus untuk pendaftaran akun tipe User
  • Anggota komunitas yang merupakan calon pengguna layanan VoIP dapat mendaftarkan diri mereka melalui URL khusus yang dimaksud untuk mendapatkan akun tipe User
  • Akun tipe User dapat menambahkan nomor telepon pada akun mereka dan kemudian menggunakan aplikasi khusus atau perangkat keras khusus untuk VoIP berbasis SIP untuk dapat menikmati layanan Telepon Rakyat dengan nama domain yang didaftarkan oleh Manager, yaitu nama domain komunitas mereka sendiri

Apabila asing dengan layanan VoIP maka anda dapat mencobanya dengan gratis di VoIP Rakyat,

Perbedaan utama dari Telepon Rakyat dengan VoIP Rakyat adalah pada fungsi pendaftarannya. VoIP Rakyat hanya mengizinkan satu komunitas yaitu komunitas VoIP Rakyat dan pengguna layanan wajib menggunakan domain untuk terhubung, sedangkan Telepon Rakyat dapat mengakomodasi lebih dari satu komunitas dan masing-masing komunitas dapat menggunakan domain mereka sendiri untuk terhubung.

Petunjuk memulai Telepon Rakyat selengkapnya dapat diperoleh dari link berikut:

Selamat mencoba.