Install Kamailio On Debian

For more details about Kamailio Project visit: kamailio.org.

Overview

Kamailio packages are included in the official Debian Stable repository. At the time of writing the initial version of this tutorial, Debian Stable codename is Jessie, version 8.x.

This tutorial should just work for latest Ubuntu versions as well.

The focus of this tutorial is to install Kamailio with MySQL backend using deb packages.

APT Install Commands

The apt tool is used for installing the packages. First run the update command to sync with the remote repository, then install MySQL server, Kamailio core and mysql packages.

apt update
apt install mysql-server
apt install kamailio kamailio-mysql-modules

Once the above commands are finished, you can check if kamailio application is available:

which kamailio

There are many Kamailio packages specific for various modules. You can see all available with:

apt search kamailio

For example, to be able to load websocket module, you have to install the package kamailio-websocket-modules:

apt install kamailio-websocket-modules

Configuration Files

Configuration files are located in /etc/kamailio/ folder.

kamctlrc

The /etc/kamailio/kamctlrc is the configuration file for kamctl and kamdbctl tools. You need to edit it and set the SIP_DOMAIN to your SIP service domain (or IP address if you don't have a DNS hostname associated with your SIP service).

Set also the DBENGINE to be MYSQL and adjust other setting as you want. Very important are the passwords to connect to MySQL server, respectively DBRWPW and DBROPW. By default, their values are kamailiorw and kamailioro. You should change them before executing kamdbctl create (step detailed the section Create Database).

kamailio.cfg

The /etc/kamailio/kamailio.cfg is the configuration file for kamailio. Edit it to enable some of the features shipped with it.

To enable use of MySQL server backend, user authentication and persistent user location, add after the first line:

#!define WITH_MYSQL
#!define WITH_AUTH
#!define WITH_USRLOCDB

Create Database

To create the database structure needed by Kamailio, run:

kamdbctl create

The database name created in MySQL is kamailio. Two access users to MySQL server were created:

  • kamailio - (with password set by DBRWPW in kamctlrc) - user which has full access rights to kamailio database

  • kamailioro - ((with password set by DBROPW in kamctlrc) - user which has read-only access rights to kamailio database

The access for the two users is restricted to localhost, but as advised above, it is recommended to change their default passwords.

If you changed the value of DBRWPW in kamctlrc, you must update the value of DBURL define inside kamailio.cfg.

#!define DBURL "mysql://kamailio:_NEW_DBRWPW_@localhost/kamailio"

Startup Scripts

Init.d Scripts

Depending on startup system, you may have an /etc/init.d/kamailio script that you can use to start/stop kamailio.

First you should edit /etc/default/kamailio and adjust the setting for kamailio startup script, in particular the one that enables kamailio to start.

/etc/init.d/kamailio start
/etc/init.d/kamailio stop

Systemd Scripts

If the default startup system is systemd, then kamailio can be managed via systemctl:

systemctl start kamailio
systemctl stop kamailio

First you may also need to edit /etc/default/kamailio and adjust the setting for kamailio startup script, in particular the one that enables kamailio to start.

Adding Subscribers

To add subscribers (users), you can use the kamctl command:

kamctl add userid password

Like:

kamctl add alice secret

Then you can configure your phone to register to Kamailio using the username and password set in the above command.

Alternative APT Repositories

You can check the list of APT repositories offered by Kamailio project for various Debian or Ubuntu versions, including nightly builds for stable and development versions: