Kamailio: Difference between revisions

From Alpine Linux
(Kamailio 3.1.1 Installation)
 
(replace /etc/init.d with rc-service)
 
(8 intermediate revisions by 6 users not shown)
Line 1: Line 1:
== Set up Kamailio on Alpine Linux ==
Kamailio (former OpenSER) is an Open Source SIP Server released under GPL, able to handle thousands of call setups per second. Among features: asynchronous TCP, UDP and SCTP, secure communication via TLS for VoIP (voice, video), SIMPLE instant messaging and presence, ENUM, least cost routing, load balancing, routing fail-over, accounting, authentication and authorization against MySQL, Postgres, Oracle, Radius, LDAP, XMLRPC control interface, SNMP monitoring. It can be used to build large VoIP servicing platforms or to scale up SIP-to-PSTN gateways, PBX systems or media servers like Asterisk, FreeSWITCH or SEMS.


Kamailio (former OpenSER) is an Open Source SIP Server released under GPL, able to handle thousands of call setups per second.  
This document will be a quick c/p guide to setup Kamailio 4.3.4 on Alpinelinux 3.3, and assume that you have already installed the alpinelinux base system.
Among features: asynchronous TCP, UDP and SCTP, secure communication via TLS for VoIP (voice, video), SIMPLE instant messaging
and presence, ENUM, least cost routing, load balancing, routing fail-over, accounting, authentication and authorization against
MySQL, Postgres, Oracle, Radius, LDAP, XMLRPC control interface, SNMP monitoring. It can be used to build large VoIP servicing
platforms or to scale up SIP-to-PSTN gateways, PBX systems or media servers like Asterisk™, FreeSWITCH™ or SEMS.


This document will be a quick c/p guide to setup Kamailio 3.1.1 on Alpinelinux 2.1. What we will setup is the following:
= Upgrade Installation =


* Postgresql
{{Cmd|apk upgrade -U}}
* Kamailio


== Install Postgresql ==
= Install Postgresql =


apk add postgresql postgresql-client
{{Cmd|apk add postgresql postgresql-client}}


* Setup postgresql
* Setup postgresql


#!sh
{{Cmd|rc-service postgresql setup}}
/etc/init.d/postgresql setup


* Direct logging information to syslog
== Direct logging information to syslog ==
The default behavior is to log activity to postmaster.log without rotation. This can result in large log files filling the ramdisk. Edit the postgresql.conf file to enable logging information to be sent to syslog (logs will appear in /var/log/messages which is rotated and older logs are automatically deleted).
The default behavior is to log activity to postmaster.log without rotation. This can result in large log files filling the ramdisk. Edit the postgresql.conf file to enable logging information to be sent to syslog (logs will appear in /var/log/messages which is rotated and older logs are automatically deleted).


The following command will update the file correctly.
The following command will update the file correctly.


#!sh
{{Cmd|<nowiki>sed "/^[# ]*log_destination/clog_destination = 'syslog'" -i /var/lib/postgresql/9.0/data/postgresql.conf</nowiki>}}
sed "/^[# ]*log_destination/clog_destination = 'syslog'" -i /var/lib/postgresql/9.0/data/postgresql.conf


* Start postgresql and enable auto start
== Start postgresql and enable auto start ==


#!sh
{{Cmd|rc-service postgresql start
/etc/init.d/postgresql start
rc-update add postgresql}}
rc-update add postgresql


* Create file for Kamailio to start after pg-restore when booting:
Create file for Kamailio to start after pg-restore when booting:


#!sh
{{Cmd|<nowiki>echo 'rc_after=pg-restore' > /etc/conf.d/kamailio</nowiki>}}
echo 'rc_after=pg-restore' > /etc/conf.d/kamailio


== Install SIP Router (Kamailio) ==
= Install SIP Router (Kamailio) =
* Install kamailio


apk add kamailio kamailio-presence kamailio-pcre kamailio-postgres
==Install Kamailio ==


* Edit the kamctlrc file - uncomment and/or change the following variables. Please note that in your production environment it is recommended
{{Cmd|apk add kamailio kamailio-presence kamailio-postgres kamailio-json}}
that usernames and passwords be customized (defaults as used below should be avoided if at all possible) for added security.


sed "/^[# ]*SIP_DOMAIN/cSIP_DOMAIN=sip.<DOMAIN>.net" -i /etc/kamailio/kamctlrc
== Configuration of Kamailio ==
sed '/^[# ]*DBENGINE/cDBENGINE=PGSQL' -i /etc/kamailio/kamctlrc
sed '/^[# ]*DBHOST/cDBHOST=localhost' -i /etc/kamailio/kamctlrc
sed '/^[# ]*DBNAME/cDBNAME=openser' -i /etc/kamailio/kamctlrc
sed '/^[# ]*DBRWUSER/cDBRWUSER=openser' -i /etc/kamailio/kamctlrc
sed '/^[# ]*DBRWPW/cDBRWPW="openser"' -i /etc/kamailio/kamctlrc
sed '/^[# ]*DBROUSER/cDBROUSER=openserro' -i /etc/kamailio/kamctlrc
sed '/^[# ]*DBROPW/cDBROPW=openserro' -i /etc/kamailio/kamctlrc
sed '/^[# ]*DBROOTUSER/cDBROOTUSER="postgres" ' -i /etc/kamailio/kamctlrc


* Create Kamailio database
Edit the kamctlrc file - uncomment and/or change the following variables. Please note that in your production environment it is recommended that usernames and passwords be customized (defaults as used below should be avoided if at all possible) for added security.


echo postgres >/root/.pgpass
{{Cmd|<nowiki>sed "/^[# ]*SIP_DOMAIN/cSIP_DOMAIN=sip.<DOMAIN>.net" -i /etc/kamailio/kamctlrc
chmod 600 /root/.pgpass
sed '/^[# ]*DBENGINE/cDBENGINE=PGSQL' -i /etc/kamailio/kamctlrc
kamdbctl create openser
sed '/^[# ]*DBHOST/cDBHOST=localhost' -i /etc/kamailio/kamctlrc
sed '/^[# ]*DBNAME/cDBNAME=openser' -i /etc/kamailio/kamctlrc
sed '/^[# ]*DBRWUSER/cDBRWUSER=openser' -i /etc/kamailio/kamctlrc
sed '/^[# ]*DBRWPW/cDBRWPW="openser"' -i /etc/kamailio/kamctlrc
sed '/^[# ]*DBROUSER/cDBROUSER=openserro' -i /etc/kamailio/kamctlrc
sed '/^[# ]*DBROPW/cDBROPW=openserro' -i /etc/kamailio/kamctlrc
sed '/^[# ]*DBROOTUSER/cDBROOTUSER="postgres" ' -i /etc/kamailio/kamctlrc</nowiki>}}


* Start Kamailio and setup for auto start on reboot
== Create the Kamailio database ==


/etc/init.d/kamailio start
{{Cmd|<nowiki>echo postgres > /root/.pgpass
rc-update add kamailio
chmod 600 /root/.pgpass
echo 'rc_after=postgresql' >> /etc/conf.d/kamailio
kamdbctl create openser</nowiki>}}


* Create a few SIP ROUTER users (extensions)
== Start Kamailio and setup for auto start on reboot ==


Note: You can add as many extensions you want to use this command: kamctl extension and password.  
{{Cmd|<nowiki>rc-service kamailio start
rc-update add kamailio
echo 'rc_after=postgresql' >> /etc/conf.d/kamailio</nowiki>}}
 
= Create a few SIP ROUTER users (extensions) =
 
{{Note|You can add as many extensions you want to use this command: kamctl extension and password.}}
Example:
Example:


kamctl add 5000 5000
{{Cmd|kamctl add 5000 5000
kamctl add 5001 5001
kamctl add 5001 5001}}
 
Xlite (or other Software-based IP Phone) can be used for this preliminary test. You can register a soft-phone or sip-phone with the account "5000" and password "5000", using the SIP-Router aip as "domain" and other one with 5001 and call each other.


Xlite (or other Software-based IP Phone) can be used for this preliminary test.
[[Category:Telephony]]
You can register a soft-phone or sip-phone with the account "5000" and password "5000", using the SIP-Router aip as "domain" and other one with 5001 and call each other.

Latest revision as of 09:49, 17 November 2023

Kamailio (former OpenSER) is an Open Source SIP Server released under GPL, able to handle thousands of call setups per second. Among features: asynchronous TCP, UDP and SCTP, secure communication via TLS for VoIP (voice, video), SIMPLE instant messaging and presence, ENUM, least cost routing, load balancing, routing fail-over, accounting, authentication and authorization against MySQL, Postgres, Oracle, Radius, LDAP, XMLRPC control interface, SNMP monitoring. It can be used to build large VoIP servicing platforms or to scale up SIP-to-PSTN gateways, PBX systems or media servers like Asterisk, FreeSWITCH or SEMS.

This document will be a quick c/p guide to setup Kamailio 4.3.4 on Alpinelinux 3.3, and assume that you have already installed the alpinelinux base system.

Upgrade Installation

apk upgrade -U

Install Postgresql

apk add postgresql postgresql-client

  • Setup postgresql

rc-service postgresql setup

Direct logging information to syslog

The default behavior is to log activity to postmaster.log without rotation. This can result in large log files filling the ramdisk. Edit the postgresql.conf file to enable logging information to be sent to syslog (logs will appear in /var/log/messages which is rotated and older logs are automatically deleted).

The following command will update the file correctly.

sed "/^[# ]*log_destination/clog_destination = 'syslog'" -i /var/lib/postgresql/9.0/data/postgresql.conf

Start postgresql and enable auto start

rc-service postgresql start rc-update add postgresql

Create file for Kamailio to start after pg-restore when booting:

echo 'rc_after=pg-restore' > /etc/conf.d/kamailio

Install SIP Router (Kamailio)

Install Kamailio

apk add kamailio kamailio-presence kamailio-postgres kamailio-json

Configuration of Kamailio

Edit the kamctlrc file - uncomment and/or change the following variables. Please note that in your production environment it is recommended that usernames and passwords be customized (defaults as used below should be avoided if at all possible) for added security.

sed "/^[# ]*SIP_DOMAIN/cSIP_DOMAIN=sip.<DOMAIN>.net" -i /etc/kamailio/kamctlrc sed '/^[# ]*DBENGINE/cDBENGINE=PGSQL' -i /etc/kamailio/kamctlrc sed '/^[# ]*DBHOST/cDBHOST=localhost' -i /etc/kamailio/kamctlrc sed '/^[# ]*DBNAME/cDBNAME=openser' -i /etc/kamailio/kamctlrc sed '/^[# ]*DBRWUSER/cDBRWUSER=openser' -i /etc/kamailio/kamctlrc sed '/^[# ]*DBRWPW/cDBRWPW="openser"' -i /etc/kamailio/kamctlrc sed '/^[# ]*DBROUSER/cDBROUSER=openserro' -i /etc/kamailio/kamctlrc sed '/^[# ]*DBROPW/cDBROPW=openserro' -i /etc/kamailio/kamctlrc sed '/^[# ]*DBROOTUSER/cDBROOTUSER="postgres" ' -i /etc/kamailio/kamctlrc

Create the Kamailio database

echo postgres > /root/.pgpass chmod 600 /root/.pgpass kamdbctl create openser

Start Kamailio and setup for auto start on reboot

rc-service kamailio start rc-update add kamailio echo 'rc_after=postgresql' >> /etc/conf.d/kamailio

Create a few SIP ROUTER users (extensions)

Note: You can add as many extensions you want to use this command: kamctl extension and password.

Example:

kamctl add 5000 5000 kamctl add 5001 5001

Xlite (or other Software-based IP Phone) can be used for this preliminary test. You can register a soft-phone or sip-phone with the account "5000" and password "5000", using the SIP-Router aip as "domain" and other one with 5001 and call each other.