====== Kamailio SIP Server ======
Installation mit MariaDB-Datenbank
apt-get install kamailio kamailio-tls-modules kamailio-mysql-modules kamailio-presence-modules
#!define WITH_MYSQL
#!define WITH_AUTH
#!define WITH_TLS
#!define WITH_PRESENCE
#!define WITH_USRLOCDB
alias="sip.mydomain.com"
listen=udp:192.168.0.2:5060
listen=tcp:192.168.0.2:5061
SIP_DOMAIN=mydomain.com
DBENGINE=MYSQL
DBHOST=localhost
DBNAME=kamailio
DBRWUSER="kamailio"
DBRWPW="********"
DBROUSER="kamailioro"
DBROPW="******"
Für den Fall daß der RPTProxy verwendet werden soll, noch folgendes ergänzen:
#!define WITH_NAT
Datenbank erstellen mit
  kamdbctl create
===== Logging =====
Ergänzung in ''rsyslog.conf''
# Kamailio
local0.*		-/var/log/kamailio.log
/var/log/kamailio*.log {
  daily
  missingok
  rotate 14
  compress
  delaycompress
  create 0644 root adm
  postrotate
    /usr/lib/rsyslog/rsyslog-rotate
  endscript
}
===== TLS =====
Zertifikat normal mit Let's Encrypt anlegen.
Anschließend in die Konfiguration eintragen:
method = TLSv1.2+
verify_certificate = yes
require_certificate = yes
private_key = /etc/ssl/private/sip.key
certificate = /etc/ssl/certs/sip.crt
===== Datenbank =====
Zugangsdaten in ''kamctlrc'' eintragen.
===== RTP-Proxy =====
Es existiert kein Debian-Paket mehr.
Erstellen aus den Quellen:
apt-get install libssl-dev libsrtp2-dev
cd /usr/local/src
git clone -b master https://github.com/sippy/rtpproxy.git
git -C rtpproxy submodule update --init --recursive
cd rtpproxy
git checkout v3.0.1
./configure
make clean all
make install
++++ Init-Script |
#! /bin/sh
### BEGIN INIT INFO
# Provides:          rtpproxy
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: RTP Proxy
# Description:       Relay for VoIP media streams
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=rtpproxy
DESC="RTP relay"
DAEMON=/usr/local/bin/$NAME
USER=$NAME
GROUP=$USER
PIDFILE="/var/run/$NAME/$NAME.pid"
PIDFILE_DIR=`dirname $PIDFILE`
CONTROL_SOCK="unix:$PIDFILE_DIR/$NAME.sock"
test -x $DAEMON || exit 0
umask 002
. /lib/lsb/init-functions
# Include defaults if available
if [ -f /etc/default/$NAME ] ; then
	. /etc/default/$NAME
fi
DAEMON_OPTS="-s $CONTROL_SOCK -u $USER:$GROUP -p $PIDFILE $EXTRA_OPTS"
if [ ! -d "$PIDFILE_DIR" ];then
	mkdir "$PIDFILE_DIR"
    chown $USER:$GROUP "$PIDFILE_DIR"
fi
set -e
case "$1" in
  start)
	echo -n "Starting $DESC: "
	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS
	echo "$NAME."
	;;
  stop)
	echo -n "Stopping $DESC: "
	start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON
	echo "$NAME."
	;;
  status)
	echo -n "Status $DESC: "
	if [ ! -e "$PIDFILE" ]; then
		echo "$NAME is NOT running. No PID-File."
		exit 7
	fi
	PID=$(cat $PIDFILE)
	kill -0 $PID
	rc=$?
	# Check exit code
	if [ "$rc" -ne 0 ]
	then
		echo "$NAME is NOT running."
		exit 7
	else
		echo "$NAME is running with PID: $PID"
	fi
	;;
  restart|force-reload)
	echo -n "Restarting $DESC: "
	start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON
	sleep 1
	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS
	echo "$NAME."
	;;
  *)
	N=/etc/init.d/$NAME
	echo "Usage: $N {start|stop|status|restart|force-reload}" >&2
	exit 1
	;;
esac
exit 0
++++
Einstellungen für das Init-Skript
USER=kamailio
GROUP=kamailio
CONTROL_SOCK="unix:/var/run/rtpproxy/rtpproxy.sock"
EXTRA_OPTS="-l  -d INFO"
Die Kommunikation lassen wir über einen Unix-Socket stattfinden und nicht
wie im Standard über UDP. Dafür ist noch eine Anpassung in Kamailio erforderlich:
#!define WITH_NAT
[...]
modparam("rtpproxy", "rtpproxy_sock", "unix:/var/run/rtpproxy/rtpproxy.sock")
===== Befehle =====
Anzeige der angelegten Geräte
  kamctl db show subscriber
Anzeige der angemeldeten Geräte (kamailio muß laufen)
  kamctl ul show
  kamctl online
Nummern (Subscriber) anlegen
  kamctl add  
Nummer wieder entfernen
  kamctl  rm 
===== VoIP-Clients =====
Selbstverständliche kann jedes IP-Telefon verwendet werden.
Hersteller sind z.B. Grandstream und Snom.
Softphones auf dem PC:
  * Twikle
  * Linphone, anscheinend kein vernänftiges Logging
Apps auf dem Smartphone:
  * ???