Flexisip 2.4.1, Flexisip Account Manager on Podman

Podによる構成

Podと役割

Pod名 ホスト名(コンテナ) 用途/サービス ポート公開
pod-nginx nginx.flexisip リバースプロキシ (Let’s Encrypt対応) 9080, 9443
pod-apache apache.flexisip HTTPファイル転送サーバ (HFT) 8080, 8443
pod-php-fpm php-fpm.flexisip LaravelベースのAccount Manager 9000
pod-mariadb mariadb.flexisip データベース (MariaDB) 3306
pod-phpmyadmin phpmyadmin.flexisip DB管理ツール 9000 (Nginx経由)
pod-redis redis.flexisip Redisキャッシュ 6379
pod-flexisip sip-proxy.flexisip Flexisipコア (SIP/UDP対応) 5060, 5061, 3478, 10000-10500/UDP

Network

$ podman network create \
  --subnet 10.8.8.0/24 \
  --ip-range 10.8.8.0/24 \
  --gateway 10.8.8.1 \
  --ipv6 \
  --subnet fd6c::8::/64 \
  --gateway fd6c::8::1 \
  net.flexisip

pod-redis

$ podman pod create \
  --name pod-redis \
  --hostname redis.flexisip \
  --network net.flexisip \
  --ip 10.8.8.2 \
  --ip6 fd6c::8::2 \
  -p 127.0.0.1:6379:6379

$ podman create \
  --name redis \
  --pod pod-redis \
  --restart=always \
  -v $(pwd)/redis:/etc/redis \
  redis:alpine \
  redis-server /etc/redis/redis.conf
  
$ echo 'vm.overcommit_memory=1' | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p

pod-nginx

$ podman pod create \
  --name pod-nginx \
  --hostname nginx.flexisip \
  --network net.flexisip \
  --ip 10.8.8.3 \
  --ip6 fd6c::8::3 \
  -p 8080:80 \
  -p 8443:443

$ podman create \
  --name nginx \
  --pod pod-nginx \
  --restart=always \
  -v $(pwd)/nginx:/etc/nginx/conf.d \
  -v $(pwd)/letsencrypt:/etc/letsencrypt \
  -v $(pwd)/flexisip-account-manager/flexiapi:/var/www/html/flexiapi \
  -v phpmyadmin:/var/www/html/phpmyadmin \
  -v $(pwd)/lime-server/lime:/var/www/html/lime \
  nginx:alpine

pod-apache

$ podman pod create \
  --name pod-apache \
  --hostname apache.flexisip \
  --network net.flexisip \
  --ip 10.8.8.4 \
  --ip6 fd6c::8::4 \
  -p 9080:80 \
  -p 9443:443

$ podman create \
  --name apache \
  --pod pod-apache  \
  --restart=always \
  -v $(pwd)/apache/httpd_ft.conf:/usr/local/apache2/conf/httpd.conf \
  -v $(pwd)/apache/extra/httpd-ssl.conf:/usr/local/apache2/conf/extra/httpd-ssl.conf \
  -v $(pwd)/letsencrypt:/etc/letsencrypt \
  -v $(pwd)/hft:/opt/belledonne-communications/share/flexisip-http-file-transfer-server \
  -v $(pwd)/hft-tmp:/var/opt/belledonne-communications/flexisip-http-file-transfer-tmp \
  -v $(pwd)/hft_conf/flexisip-http-file-transfer-server.conf:/etc/flexisip-http-file-transfer-server/flexisip-http-file-transfer-server.conf \
  -v $(pwd)/log/flexisip-http-file-transfer-server.log:/var/opt/belledonne-communications/log/flexisip-http-file-transfer-server.log \
  httpd:alpine

pod-mariadb

$ podman pod create \
  --name pod-mariadb \
  --hostname mariadb.flexisip \
  --network net.flexisip \
  --ip 10.8.8.5 \
  --ip6 fd6c::8::5 \
  -p 127.0.0.1:3306:3306

$ podman create \
  --pod pod-mariadb \
  --name mariadb \
  --restart=always \
  --env-file $(pwd)/.env \
  -v $(pwd)/db:/var/lib/mysql \
  mariadb:11.7 \
  --event-scheduler=ON \
  --max-connections=300

pod-flexisip

$ podman pod create \
  --name pod-flexisip \
  --hostname sip-proxy.flexisip \
  --network host
  
$ podman build -f $(pwd)/docker_files/flex-from-ubuntu22-apt-repo-24 -t ubuntu-flexisip:20250514 $(pwd)/docker_files

$ podman create \
  --pod pod-flexisip \
  --name flexisip \
  --restart=always \
  -v $(pwd)/letsencrypt:/etc/letsencrypt \
  -v $(pwd)/flexisip_conf:/etc/flexisip \
  -v $(pwd)/linphone:/root/.local/share/linphone \
  -v $(pwd)/tmp/ld:/tmp/ld \
  -v $(pwd)/firebase/flexisip-push-notification-firebase-adminsdk-fbsvc-xxxxxxxx.json:/etc/flexisip/flexisip-push-notification-firebase-adminsdk-fbsvc-xxxxxxxx.json \
  ubuntu-flexisip:20250514 ""

pod-php-fpm

$ podman pod create \
  --name pod-php-fpm \
  --hostname php-fpm.flexisip \
  --network net.flexisip \
  --ip 10.8.8.6 \
  --ip6 fd6c::8::6
  
$ podman build -f $(pwd)/docker_files/php-fpm-alpine-laravel -t php-fpm-8.2:20250514 $(pwd)

$ podman create \
  --pod pod-php-fpm \
  --name php-fpm \
  --restart=always \
  -v $(pwd)/php-fpm_conf/php.ini:/usr/local/etc/php/php.ini \
  -v $(pwd)/flexisip-account-manager/flexiapi:/var/www/html/flexiapi \
  -v $(pwd)/xmlrpc:/opt/belledonne-communications/share/flexisip-account-manager/xmlrpc \
  -v $(pwd)/tmp/ld:/tmp/ld \
  -v /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock \
  -v $(pwd)/firebase/flexisip-push-notification-firebase-adminsdk-fbsvc-xxxxxxxx.json:/etc/flexisip/flexisip-push-notification-firebase-adminsdk-fbsvc-xxxxxxxx.json \
  -v $(pwd)/hft:/opt/belledonne-communications/share/flexisip-http-file-transfer-server \
  -v $(pwd)/hft-tmp:/var/opt/belledonne-communications/flexisip-http-file-transfer-tmp \
  -v $(pwd)/hft_conf/flexisip-http-file-transfer-server.conf:/etc/flexisip-http-file-transfer-server/flexisip-http-file-transfer-server.conf \
  -v $(pwd)/log/flexisip-pusher.log:/var/opt/belledonne-communications/log/flexisip/flexisip-pusher.log \
  -v $(pwd)/log/flexisip-http-file-transfer-server.log:/var/opt/belledonne-communications/log/flexisip-http-file-transfer-server.log \
  -v $(pwd)/lime-server/lime:/var/www/html/lime \
  -v $(pwd)/lime-server/lime-server.conf:/etc/lime-server/lime-server.conf \
  -v $(pwd)/lime-server/log/lime-server:/var/opt/belledonne-communications/log/lime-server \
  -v $(pwd)/log/php_errors.log:/var/log/php/php_errors.log \
  php-fpm-8.2:20250514

pod-phpmyadmin

$ podman pod create \
  --name pod-phpmyadmin \
  --hostname phpmyadmin.flexisip \
  --network net.flexisip \
  --ip 10.8.8.7 \
  --ip6 fd6c::8::7
  
$ podman volume create phpmyadmin

$ podman create \
  --pod pod-phpmyadmin \
  --name phpmyadmin \
  --restart=always \
  -e PMA_HOST=mariadb.flexisip \
  -e PMA_PORT=3306 \
  -e PMA_ABSOLUTE_URI=http://localhost/phpmyadmin \
  -v phpmyadmin:/var/www/html \
  -v /sessions \
  phpmyadmin/phpmyadmin:fpm-alpine

上記一連のコマンドでPodを作成し内部にコンテナを配置したらPodman-Desktopで各Podをスタートします。

Podリスト

コンテナリスト

podman composeによるコンテナ運用からpodによる運用へ移行した場合、NginxのFast_CGIパス、Redis、MariaDBへのIPなどを再設定する必要があります。以下再設定が必要なファイルです。

flexisip-account-manager/flexiapi/.env
nginx/default.conf
nginx/lime.conf
lime-server/lime-server.conf
hft_conf/flexisip-http-file-transfer-server.conf


リモート操作

podman(desktop)からのリモート操作については下記参照。