1. Installation
Requirements
Operating system: CentOS, Debian or Ubuntu.
The hardware should be chosen according to the workload you want to be able to sustain. Although Flexisip is not quite CPU intensive (unless you are transcoding), you should make sure that your machine has enough RAM. Up to about 10000 connections, you should be OK with 8 GB of RAM.
Installation from our repositories
Supported distributions
CentOS 7 | RockyLinux 8 | RockyLinux 9 | Debian 8 (Jessie) | Debian 9 (Stretch) | Debian 10 (Buster) | Debian 11 (Bullseye) | Debian 12 (Bookworm) | Ubuntu 18.04 LTS (Bionic Beaver) | Ubuntu 22.04 LTS (Jammy Jellyfish) | |
---|---|---|---|---|---|---|---|---|---|---|
Flexisip 2.0 | ✓ | ✓ | ✓ | ✓ | ||||||
Flexisip 2.1 | ✓ | ✓ | ✓ | ✓ | ||||||
Flexisip 2.2 | ✓ | ✓ | Deprecated | ✓ | ✓ | ✓ | ✓ | |||
Flexisip 2.3 | Deprecated | ✓ | ✓ | Deprecated | Deprecated | ✓ | ✓ | Deprecated | ✓ | |
Flexisip 2.4 (beta) | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
Flexisip 2.5 (alpha) | ✓ | ✓ | ✓ | ✓ | ✓ |
Centos/RockyLinux
1. Install “Extra Packages for Enterprise Linux (EPEL)” repository ; it is used for some Flexisip dependencies (example: Hiredis library).
2. Enable PowerTools repository (⚠ RockyLinux/Centos 8 only):
3. Add Belledonne Communications repository by creating /etc/yum.repos.d/BelledonneCom.repo with the following content:
[Belledonne-stable]
name=Belledonne-stable
baseurl=http://www.linphone.org/snapshots/$contentdir/$releasever/stable
enabled=1
gpgcheck=0
# enable this if you want post-release patches
[Belledonne-hotfix]
name=Belledonne-hotfix
baseurl=http://www.linphone.org/snapshots/$contentdir/$releasever/hotfix
enabled=0
gpgcheck=0
# enable this if you want next release beta packages
[Belledonne-beta]
name=Belledonne-beta
baseurl=http://www.linphone.org/snapshots/$contentdir/$releasever/beta
enabled=0
gpgcheck=0
# enable this to have development (unstable) packages
[Belledonne-alpha]
name=Belledonne-alpha
baseurl=http://www.linphone.org/snapshots/$contentdir/$releasever/alpha
enabled=0
gpgcheck=0
4. Install the following package:
The installation is complete. You can now go straight to the Post-installation instructions section.
Debian/Ubuntu
1. Create the Belledonne Communications APT repository in /etc/apt/sources.list.d/belledonne.list.
deb [arch=amd64] http://linphone.org/snapshots/debian stretch stable # hotfix beta alpha
# For Debian 10
deb [arch=amd64] http://linphone.org/snapshots/debian buster stable # hotfix beta alpha
# For Debian 11
deb [arch=amd64] http://linphone.org/snapshots/debian bullseye stable # hotfix beta alpha
# For Debian 12
deb [arch=amd64] http://linphone.org/snapshots/debian bookworm stable # hotfix beta alpha
# For Ubuntu 18.04 LTS
deb [arch=amd64] http://linphone.org/snapshots/ubuntu bionic stable # hotfix beta alpha
# For Ubuntu 22.04 LTS
deb [arch=amd64] http://linphone.org/snapshots/ubuntu jammy stable # hotfix beta alpha
You may uncomment 'beta' and/or 'alpha' branches if you need access to pre-release and/or development packages, but keep in mind that stable branch must always be enabled because some external dependencies of Flexisip are provided through it.
2. Install Belledonne Communications PGP key for package signature checking
wget https://linphone.org/snapshots/debian/keyring.gpg -O - | sudo apt-key add -
# For Ubuntu
wget https://www.linphone.org/snapshots/ubuntu/pubkey.gpg -O - | sudo apt-key add -
3. Install development packages for the SQL back-end (example below for Mariadb, classic use case)
⚠ Not doing this can result in the following error: "[SOCI] connection pool open error: Failed to find shared library for backend mysql"
4. Update APT cache and install Flexisip and its dependencies
apt install bc-flexisip
The installation is complete. You can now go straight to the Post-installation instructions section.
Installation from sources using git
The source code of Flexisip is available on our GitLab instance.
1. Fetch the source code by cloning the repository recursively:
Replace <branch_name> by one of the following:
- A release tag name if you want a specific release (e.g. "2.0.0").
- A release branch name if you want a specific release plus all post release fixes (e.g. "release/2.0")
- "master" if you want the development version.
2. Follow the instructions in README.md at the root of the project.
Post-installation instructions
Generate the configuration file
This file is now automatically installed [version >= 2.3].
Make Flexisip generate its default configuration file:
/opt/belledonne-communications/bin/flexisip --dump-default all > /etc/flexisip/flexisip.conf
This generated file contains all the available settings with their respective documentation and default values.
By default, Flexisip behaves as a simple forwarding proxy. See the Configuration chapter for more information on how to customize it.
Starting services
Flexisip executable is installed in /opt/belledonne-communications/bin/flexisip . Without any arguments, Flexisip behaves as a SIP proxy. However, it can provide many more services. These can be started using --server command-line argument:
- proxy: launch Flexisip as a SIP proxy (default behavior).
- presence: launch Flexisip as a presence server.
- conference: launch Flexisip as a conference server.
- regevent: launch Flexisip as a regevent server.
Flexisip is also provided with several systemd scripts in order to run as a system daemon. There is one systemd service for each type of server. For instance, the following command will run the proxy and the presence server:
By default, Flexisip is not programmed to start at system boot-up. You may do so by calling:
systemctl enable flexisip-proxy flexisip-presence
The services (proxy, presence, conference, regevent) run in their own processes. These can be run together on the same machine or distributed across several hosts.
Firewall configuration
On a fresh RedHat or CentOS installation, the firewall is turned ON by default, with almost all ports forbidden. Flexisip will not be able to operate at all under these conditions.
Simply turning off the firewall will allow full operation:
However your system administrator may not like this approach, and will prefer enabling selective ports. A Flexisip server will generally need:
- TCP ports for SIP/SIPS: these are the ports mentioned in the transports definition of global section of the configuration file ;
- UDP port 3478 for the builtin STUN server that helps clients to use ICE for efficient media stream transmissions ;
- Media relay UDP ports, for the media relay service of Flexisip, which uses randomly selected ports in a configurable range ;
Update Flexisip
1. Before updating, you should note the current running version in order to rollback if the update breaks your service:
Last metadata expiration check: 0:00:30 ago on Wed 19 Apr 2023 03:01:32 PM CEST.
Installed Packages
Name : bc-flexisip
Epoch : 1
Version : 2.2.2
Release : 1.el8
[...]
Package: bc-flexisip
Status: install ok installed
Priority: optional
Section: net
Installed-Size: 57972
Maintainer: info@belledonne-communications.com
Architecture: amd64
Version: 2.2.2-1
[...]
2. Update the packages:
3. Check the start date of systemd services to ensure the servers restarted after the update:
● flexisip-proxy.service - Flexisip proxy server
Loaded: loaded (/usr/lib/systemd/system/flexisip-proxy.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2023-04-19 14:56:02 CEST; 1min 14s ago
Docs: http://www.linphone.org/technical-corner/flexisip/overview
Process: 2825287 ExecStart=/opt/belledonne-communications/bin/flexisip --server proxy --daemon --syslog --pidfile /var/run/flexisip-proxy.pid (code=exited, status=0/SUCCESS)
Main PID: 2825291 (flexisip)
Tasks: 15 (limit: 203469)
Memory: 1.6G
CGroup: /system.slice/flexisip-proxy.service
├─2825291 /opt/belledonne-communications/bin/flexisip --server proxy --daemon --syslog --pidfile /var/run/flexisip-proxy.pid
└─2825293 /opt/belledonne-communications/bin/flexisip --server proxy --daemon --syslog --pidfile /var/run/flexisip-proxy.pid
[...]
● flexisip-presence.service - Flexisip presence server
Loaded: loaded (/usr/lib/systemd/system/flexisip-presence.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2023-04-19 14:55:56 CEST; 20s ago
Docs: http://www.linphone.org/technical-corner/flexisip/overview
Process: 2825314 ExecStart=/opt/belledonne-communications/bin/flexisip --server presence --daemon --syslog --pidfile /var/run/flexisip-presence.pid (code=exited, status=0/SUCCESS)
Main PID: 2825315 (flexisip)
Tasks: 5 (limit: 203469)
Memory: 458.7M
CGroup: /system.slice/flexisip-presence.service
├─2825315 /opt/belledonne-communications/bin/flexisip --server presence --daemon --syslog --pidfile /var/run/flexisip-presence.pid
└─2825316 /opt/belledonne-communications/bin/flexisip --server presence --daemon --syslog --pidfile /var/run/flexisip-presence.pid
[...]
● flexisip-conference.service - Flexisip conference server
Loaded: loaded (/usr/lib/systemd/system/flexisip-conference.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2023-04-19 14:55:56 CEST; 20s ago
Docs: http://www.linphone.org/technical-corner/flexisip/overview
Process: 2825289 ExecStart=/opt/belledonne-communications/bin/flexisip --server conference --daemon --syslog --pidfile /var/run/flexisip-conference.pid (code=exited, status=0/SUCCESS)
Main PID: 2825290 (flexisip)
Tasks: 3 (limit: 203469)
Memory: 567.5M
CGroup: /system.slice/flexisip-conference.service
├─2825290 /opt/belledonne-communications/bin/flexisip --server conference --daemon --syslog --pidfile /var/run/flexisip-conference.pid
└─2825292 /opt/belledonne-communications/bin/flexisip --server conference --daemon --syslog --pidfile /var/run/flexisip-conference.pid