Real-Time Communications Quick Start Guide

Daniel Pocock

Table of Contents

1. Introduction
Choosing between SIP and XMPP
Using IPv6
Example network used in the documentation
2. Architecture overview
3. DNS setup
Sample DNS zone file
Testing the DNS settings
4. Firewall rules
5. User and credential storage
Password encryption
HA1 in detail
SQL databases
Product-specific file formats
6. Server setup
7. TLS certificate creation
Install the OpenSSL utility
Certificate Common Name
Install an SSL/TLS certificate
8. ICE/STUN/TURN server installation
Choosing a TURN server
reTurnServer from reSIProcate
Provisioning users
9. SIP proxy server installation
Choose your SIP proxy
repro SIP proxy
Package installation
Testing with s_client
Login to web administration
User management
Adding a user
Adding routes for numeric dialing
Kamailio SIP proxy
Package installation
10. XMPP (Jabber) server installation
Choosing an XMPP server
Prosody XMPP server
Package installation
User management
Further reading
ejabberd XMPP server
Package installation
11. WebRTC
Technical overview
Media streaming capabilities
Signalling protocols
User privacy and security
Practical WebRTC deployment
Getting through firewalls
JsSIP and JSCommunicator
Content Management Systems and other frameworks
12. Client devices and softphones
IP desk phones
Smartphone apps
The Firefox Telify plugin
Mozilla Thunderbird and GNOME Evolution address books
Using sipdialer
Using Asterisk or FreeSWITCH
13. Adding ENUM to DNS
How ENUM works
Consuming ENUM data
Publishing ENUM data
Public ENUM
Private and third-party ENUM suffixes
Dynamic ENUM from LDAP with dlz-ldap-enum
14. Troubleshooting
Common problems and solutiuons
Google Talk/Hangouts users not receiving XMPP chat messages
Audio and video quality issues
Monitoring tools
Check the logs
Check the web interface
Operating system utilities
Packet sniffers
Debugging mode
WebRTC and WebSockets
15. PBX Setup
16. Frequently Asked Questions
17. Community support
Mailing lists
Strategy and advocacy
Collaboration between operators and service providers
Server support
Popular blogs and news sites

List of Figures

2.1. Overview
9.1. repro web administration: adding a domain
9.2. repro web administration: adding a user
9.3. repro web administration: listing users
9.4. repro web administration: adding a route
9.5. repro web administration: listing routes
9.6. repro web administration: routing test

List of Tables

3.1. DNS records for the example
4.1. Firewall rules summary
4.2. Firewall rules summary (IPv6)
9.1. Comparison of SIP proxy servers
9.2. TLS client verification modes

List of Examples

3.1. ISC Bind zone file entries
3.2. Inspecting DNS entries with dig
4.1. Firewall setup with iptables
5.1. Computing HA1
5.2. OpenLDAP ACL for protecting ha1Password
6.1. Adding IP addresses in /etc/network/interfaces
7.1. Installing openssl on Debian/Ubuntu
7.2. Installing openssl on Fedora/RHEL/CentOS
7.3. PKI directories (Debian/Ubuntu)
7.4. PKI directories (Fedora/RHEL/CentOS)
7.5. Creating RSA key pair and CSR
7.6. Installing the certificate
8.1. Installing reTurnServer on Debian/Ubuntu
8.2. Install reTurnServer on Fedora/RHEL/CentOS
8.3. reTurnServer.config entries
8.4. Restarting the reTurnServer daemon (systemd)
8.5. Using netstat to verify reTurnServer is running
9.1. Installing repro on Debian/Ubuntu
9.2. Install repro on Fedora/RHEL/CentOS
9.3. Sample values for repro.config
9.4. Using htdigest to set admin user password
9.5. Restarting the repro daemon (systemd)
9.6. Using s_client to test SIP ports (Debian/Ubuntu)
9.7. Using s_client to test SIP ports (Fedora/RHEL/CentOS)
9.8. Installing kamailio on Debian/Ubuntu
9.9. Install kamailio on Fedora/RHEL/CentOS
9.10. Restarting the kamailio daemon (systemd)
10.1. Installing Prosody on Debian/Ubuntu
10.2. Install Prosody on Fedora/RHEL/CentOS
10.3. Domain configuration file
10.4. Restarting the prosody daemon (systemd)
10.5. Using prosodyctl to add a user
10.6. prosody.cfg.lua settings for mod_auth_ldap
10.7. Installing Prosody on Debian/Ubuntu
10.8. Install Prosody on Fedora/RHEL/CentOS
10.9. ejabberd interface example
13.1. Using dig to perform ENUM queries
13.2. Installing dlz-ldap-enum on Debian/Ubuntu
13.3. Install dlz-ldap-enum on Fedora/RHEL/CentOS
13.4. Sample dlz_ldap_enum.conf
13.5. Additions to named.conf for Debian/Ubuntu
13.6. Additions to named.conf for Fedora/RHEL/CentOS