-
Flexisip : Ubuntu 24.04, Version 2.4.3-1
https://gitlab.linphone.org/BC/public/flexisip/-/tree/release/2.4 https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/1. Installation/ https://download.linphone.org/snapshots/ubuntu/dists/noble/stable/binary-amd64/PackagesNote: Release/2.5 is available; however, it has not yet been distributed in the form of Linux packages.
-
Flexisip Account Manager : Version 2.0
https://gitlab.linphone.org/BC/public/flexisip-account-manager/-/tree/release/2.0?ref_type=heads
-
Http File Transfer Server : Version 1.1
https://gitlab.linphone.org/BC/public/flexisip-http-file-transfer-server/-/tree/release/1.1?ref_type=heads
-
Lime Server : Version 1.3
https://gitlab.linphone.org/BC/public/lime-server/-/tree/release/1.3?ref_type=heads
When containerizing and separating the Flexisip system, the following three files are the key components.
Docker Compose File
Note: The php-fpm container is built from the php:8.4-fpm image, while Flexisip is deployed using a custom image based on ubuntu:24.04.
docker-compose.yaml
services:
##### redis-server
redis:
container_name: redis
image: redis:alpine
ports:
- 127.0.0.1:6379:6379
volumes:
- ./redis/etc:/etc/redis
- ./redis/redis-data:/data
command: ["redis-server", "/etc/redis/redis.conf"]
restart: unless-stopped
networks:
flexisip-net:
##### nginx
nginx:
container_name: nginx
image: nginx:alpine
ports:
- 80:80
- 443:443
volumes:
- ./nginx:/etc/nginx/conf.d
- ./letsencrypt:/etc/letsencrypt:ro
restart: unless-stopped
networks:
flexisip-net:
##### apache https://hub.docker.com/_/httpd
apache:
container_name: apache
image: httpd:2.4
volumes:
- ./apache/httpd.conf:/usr/local/apache2/conf/httpd.conf
- ./apache/custom_settings:/usr/local/apache2/conf/custom_settings
- ./flexisip-account-manager/flexiapi:/opt/belledonne-communications/share/flexisip-account-manager/flexiapi
- ./hft/hft-server:/opt/belledonne-communications/share/flexisip-http-file-transfer-server
- ./hft/hft-tmp:/var/opt/belledonne-communications/flexisip-http-file-transfer-tmp
- ./hft/hft_conf/flexisip-http-file-transfer-server.conf:/etc/flexisip-http-file-transfer-server/flexisip-http-file-transfer-server.conf
- ./lime/lime-server:/opt/belledonne-communications/share/lime-server
- ./lime/lime_conf/lime-server.conf:/etc/lime-server/lime-server.conf
- phpmyadmin:/var/www/html
restart: unless-stopped
depends_on:
- mariadb-flexisip
- php-fpm
networks:
flexisip-net:
##### mariadb
mariadb-flexisip:
container_name: mariadb-flexisip
image: mariadb:lts
restart: unless-stopped
ports:
- 127.0.0.1:3306:3306
command: --event-scheduler=ON --max-connections=300
volumes:
- ./db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
networks:
flexisip-net:
### flexisip
ubuntu-flexisip:
container_name: ubuntu-flexisip
image: ubuntu-flexisip:20260105
volumes:
- ./letsencrypt:/etc/letsencrypt:ro
- ./flexisip_conf:/etc/flexisip
- ./linphone:/root/.local/share/linphone
- ./tmp/ld:/tmp/ld
- ./log/flexisip:/var/opt/belledonne-communications/log/flexisip
depends_on:
- redis
- nginx
- mariadb-flexisip
restart: unless-stopped
command: ["--server","all"]
cap_add:
- NET_ADMIN
- SYS_RESOURCE
privileged: true
network_mode: "host"
### PHP(+ Composer)
php-fpm:
container_name: php-fpm
image: php-fpm-8.4:20260105
volumes:
- ./php-fpm_conf/php.ini:/usr/local/etc/php/php.ini
- ./flexisip-account-manager/flexiapi:/opt/belledonne-communications/share/flexisip-account-manager/flexiapi
- /opt/belledonne-communications/share/flexisip-account-manager/flexiapi/vendor
- ./hft/hft-server:/opt/belledonne-communications/share/flexisip-http-file-transfer-server
- ./hft/hft_conf/flexisip-http-file-transfer-server.conf:/etc/flexisip-http-file-transfer-server/flexisip-http-file-transfer-server.conf
- ./hft/hft-tmp:/var/opt/belledonne-communications/flexisip-http-file-transfer-tmp
- ./lime/lime-server:/opt/belledonne-communications/share/lime-server
- ./lime/lime_conf/lime-server.conf:/etc/lime-server/lime-server.conf
- ./log/flexisip:/var/opt/belledonne-communications/log/flexisip
- ./log/flexisip-http-file-transfer-server.log:/var/opt/belledonne-communications/log/flexisip-http-file-transfer-server.log
- ./log/lime-server:/var/opt/belledonne-communications/log/lime-server
- ./log/php_errors.log:/var/log/php/php_errors.log
restart: unless-stopped
networks:
flexisip-net:
##### phpmyadmin-fpm
phpmyadmin-fpm:
container_name: phpmyadmin-fpm
image: phpmyadmin/phpmyadmin:fpm-alpine
expose:
- "9000"
environment:
- PMA_HOST=mariadb-flexisip
- PMA_PORT=3306
- PMA_ABSOLUTE_URI=https://www.example.com/phpmyadmin
volumes:
- phpmyadmin:/var/www/html
depends_on:
- mariadb-flexisip
restart: unless-stopped
networks:
flexisip-net:
networks:
flexisip-net:
enable_ipv6: true
ipam:
driver: default
config:
- subnet: "10.x.x.0/24"
- subnet: "xxxx:xxxx:xxxx:x::/64"
volumes:
phpmyadmin:
Nginx config file
/etc/nginx/conf.d/default.conf
resolver 127.0.0.11 valid=15s;
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name www.example.com;
client_max_body_size 100M;
ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_pass http://apache:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header Authorization $http_authorization;
}
}
server {
listen 80;
listen [::]:80;
server_name www.example.com;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://$host$request_uri;
}
}
Apache(httpd) config file
Please uncomment and enable the required modules, comment out the default document root, and add a <VirtualHost *:80> section.
Note: Deploy “httpd” config files supplied from the each source into
Include conf/custom_settings/*.conf.
/usr/local/apache2/conf/httpd.conf
LoadModule remoteip_module modules/mod_remoteip.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule rewrite_module modules/mod_rewrite.so
#####ServerName 127.0.0.1:80
#####DocumentRoot "/usr/local/apache2/htdocs"
#####<Directory "/usr/local/apache2/htdocs">
#####Options Indexes FollowSymLinks
#####AllowOverride None
#####Require all granted
#####</Directory>
<VirtualHost *:80>
ServerName www.example.com
Include conf/custom_settings/*.conf
<IfModule remoteip_module>
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
</IfModule>
<IfModule setenvif_module>
SetEnvIf X-Forwarded-Proto "https" HTTPS=on
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
</IfModule>
<IfModule proxy_module>
<FilesMatch "\.php$">
SetHandler "proxy:fcgi://php-fpm:9000"
</FilesMatch>
</IfModule>
</VirtualHost>
User Registry by E-Mail
Display for Admin User
User Resistry with QR Code
A QR code for user registration is sent by email, and the user registration is completed simply by scanning the QR code with Linphone.