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


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 to 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.


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:


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


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.


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


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.