コンテナ内のATS。 Proxmox VE 4 lxcコンテナ内のCentos 7上のアスタリスク14 + Nginx + Freepbx 14 + srtp

私たちの時代には、コンテナに多くの興味深いシステムをインストールできます

しかし、カットの下には、アスタリスク+ freepbxの比較的標準的なインストール手順しかありません。 すべてのソフトウェアのバージョンが「最後の安定」であり、apache-nginxの代わりに暗号化があり、インストール全体が最近「成熟した」lxcであるという事実により、退屈さはわずかに払拭されます。 出力は非常にモバイルで、コンパクトで最新のIP-PBXになり、保存時に200〜300 MBのRAMを消費します。





0.インストールの前に



始める前に、この指示はDAHDIのインストールを意味するものではなく、アナログ回線で作業することを考慮してください。 さらに、システムはFreePBXによって公式に配布されていないため、将来的に商用のFreePBXモジュールを接続することはできません。

現時点では、ディストリビューションでは商用モジュールのみをサポートしています。 Yoyは非ディストリビューションシステムを使用してディストリビューションにすることはできません( Andrew Nagy、ソフトウェアエンジニアリングディレクター




1. LXC.Proxmox



まず、Centosでコンテナーを作成する必要があります。 私と同じようにproxmox veを使用している場合は、Webインターフェースからこれを行うのが最も便利です。 「機器」の設定は最小限です。 次に、コア:1メモリ:1024 rootfs:8Gスワップ:256のニーズを満たすために増やすことができ、OSテンプレートとしてcentos-7-default_20171212_amd64.tar.xzを使用します。



テンプレートをダウンロードできない場合は、ホストでpveamの更新を実行してください。 コンテナをインストールして起動した後、通常はすぐにsshを配置します。 統合されたproxmox Webコンソールでの作業はあまり便利ではありません。



yum -y install openssh-server systemctl enable sshd --now
      
      





2. LEMP



リポジトリと基本ユーティリティ



 yum -y install epel-release rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm yum -y update
      
      





webtaticの選択は、php56wをさらにインストールすることにより正当化されます。php56wを使用すると、freepbxの動作が保証されます。 しかし、あなたはレミを試すことができます。



mariadb、nginx、ユーティリティを配置します。 net-toolsパッケージも便利です。 centos7では、デフォルトでfreepbxが機能するifconfigはありません。



 yum -y install wget tar nano bzip2 unzip curl net-tools make gcc gcc-c++ openssl openssl-devel mariadb-server mariadb-devel nginx tftp-server crontabs cronie cronie-anacron sendmail sendmail-cf
      
      





Freepbxはまだphp7をサポートしていないため、推奨される5.6を追加しました。



 yum -y install php56w php56w-pdo php56w-mysql php56w-mbstring php56w-pear php56w-process php56w-xml php56w-opcache php56w-ldap php56w-intl php56w-soap php56w-fpm php56w-gd
      
      





mariadbとnginxを起動し、Apacheを切断し、php.iniを修正します。 そうしないと、Webインターフェースを介してfreepbxモジュールを更新できなくなります。



 systemctl enable mariadb.service systemctl start mariadb sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php.ini systemctl enable nginx --now systemctl disable httpd
      
      





その後、ルートパスワードを設定せずにmysql_secure_installationを実行できます-これはfreepbxインストーラーに必要です。



LEMPサーバーの作業用の「準備」ができたので、システムをバックアップして、ロールバックしたり、バックアップを使用して別のサーバーを準備したりできます。 1分もかからず、完全なアーカイブは約350MBになります。



3.アスタリスク.SRTP



基本的に、すべてがアスタリスクをインストールする準備ができています。 オプション--with-pjproject-bundledを使用して、アセンブリ中にSIPとPJSIPを提供します。 欠落しているのは、メディア暗号化サポートを有効にするsrtpです。 小さなプラグがあります アスタリスク14のドキュメントでは、srtpには1.5.4以上のlibsrtpが必要であり、理論的にはlibsrtp 2.xがサポートされていますが、安定した結果を得るには1.5.4を使用することが実際に必要です。 つまり、リポジトリのバージョン1.4.4は機能しないため、自分で組み立てる必要があります。



 cd /usr/src/ wget https://github.com/cisco/libsrtp/archive/v1.5.4.tar.gz tar xvzf v1.5.4.tar.gz cd libsrtp-1.5.4 ./configure --libdir=/usr/lib64 --enable-openssl make shared_library make install
      
      





念のため、目的地で図書館の利用可能性を確認することができます



 ls /usr/lib64 | grep srtp
      
      





ldconfigを介して



 ldconfig -p | grep srtp
      
      





ヒント! make shared_libraryを指定しない場合、デフォルトでmakeはlibsrtp.aアーカイブライブラリをビルドし、make runtest中間テストが必要です。 libsrtp.aが必要な場合は、このテストのために事前に辞書をダウンロードしてください。



 wget -O /usr/share/dict/words https://github.com/cisco/libsrtp/blob/master/test/words.txt
      
      





アスタリスクをダウンロードして展開します。



 cd /usr/src wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-14-current.tar.gz tar xvfz asterisk-14-current.tar.gz cd asterisk-14*/
      
      





この段階で、開発者から親切に提供されたスクリプトを使用して、必要なパッケージの可用性を確認し、インストールできます。 一部のパッケージは既にインストールされているため、このテストはtest



モードで実行することをお勧めします。



 ./contrib/scripts/install_prereq test
      
      





スクリプト出力からmysql-devel、srtp-develを削除し、gmime22-develをgmime-develに置き換えます。 現時点では、リポジトリ内のlameパッケージとjanssonパッケージは新しいため、リポジトリからもそれらを配置します。



 yum -y install patch ncurses-devel uuid-devel libuuid-devel jansson-devel lame lame-libs libxml2-devel sqlite-devel automake unixODBC-devel libcurl-devel libogg-devel libvorbis-devel speex-devel spandsp-devel freetds-devel net-snmp-devel iksemel-devel corosynclib-devel newt-devel popt-devel libtool-ltdl-devel lua-devel libsqlite3x-devel radiusclient-ng-devel portaudio-devel neon-devel libical-devel openldap-devel sqlite2-devel bluez-libs-devel jack-audio-connection-kit-devel gsm-devel libedit-devel pjproject-devel gmime-devel subversion git libxslt-devel python-devel
      
      





次に、サウンドファイルソースをロードし、アスタリスク構成を実行します



 ./contrib/scripts/get_mp3_source.sh ./configure --libdir=/usr/lib64 --with-pjproject-bundled --with-crypto --with-ssl=ssl --with-srtp
      
      





すべてがエラーなしで完了した場合、構成メニューを開始します



 make menuselect
      
      





mp3サポートを有効にし、コアサウンドパッケージ、保留音ファイルパッケージ、およびエクストラサウンドパッケージで目的のオーディオファイルパッケージを選択します。 また、念のため、リソースモジュールでres_srtpアイテムの可用性を確認します。 できた 次:



 make && make install && make config && ldconfig
      
      





これで、アスタリスクを実行して、srtpモジュールが選択されたかどうかを確認できます。



 systemctl start asterisk systemctl status asterisk rasterisk Asterisk 14.7.5, Copyright (C) 1999 - 2016, Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details. This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details. =============================================================== Connected to Asterisk 14.7.5 currently running on pbx4 (pid = 28020) pbx4*CLI>
      
      





アスタリスクは機能します。srtpモジュールがロードされているかどうかを確認します。 アスタリスクコンソールで、次の操作を行います。



 pbx4*CLI> module show like srtp Module Description Use Count Status Support Level res_srtp.so Secure RTP (SRTP) 0 Running core 1 modules loaded
      
      





モジュールがロードされていない場合は、ロードしてみてください。



 pbx4*CLI> module load res_srtp.so Loaded res_srtp.so
      
      





すべてがうまくいった場合-サービスを停止し、アスタリスクの起動をオフにします。 将来的には、freepbxサービスによって起動されます。



 systemctl stop asterisk systemctl disable asterisk
      
      





4. Freepbx.Nginx



ユーザーにアスタリスクを取得し、ディレクトリへの権限を与えます



 adduser asterisk -m -c "Asterisk User" chown asterisk. /var/run/asterisk chown asterisk. /var/spool/mqueue/ chown -R asterisk. /etc/asterisk chown -R asterisk. /var/{lib,log,spool}/asterisk chown -R asterisk. /usr/lib64/asterisk chown -R asterisk. /var/www/ chown -R asterisk. /var/lib/nginx
      
      





nodeJSをインストールします。



 curl -sL https://rpm.nodesource.com/setup_8.x | bash - yum install -y nodejs
      
      





nginxとphp-fpmを構成します。 これを行うには、/ etc / nginx / conf.d /および/etc/php-fpm.d/内のすべてのファイルを削除し、代わりに独自のファイルを作成します。 この例は、マシンのIPアクセスを示しています。



 nano /etc/nginx/conf.d/freepbx.conf
      
      





  server { server_name 10.10.0.126; listen 80; index index.php; client_max_body_size 120m; root /var/www/html/; location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; if (!-f $document_root$fastcgi_script_name) { return 404; } fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_param SERVER_NAME $host; } }
      
      





  nano /etc/php-fpm.d/freepbx.conf
      
      





 [freepbx] listen = /var/run/php-fpm.sock listen.owner = asterisk listen.group = asterisk listen.mode = 0666 user = asterisk group = asterisk pm = dynamic pm.max_children = 30 pm.start_servers = 3 pm.min_spare_servers = 3 pm.max_spare_servers = 21 pm.max_requests = 1000 php_admin_value[memory_limit] = 512M
      
      







nginxの起動もユーザーアスタリスクから設定されます。 そうしないと、モジュール管理はfreepbxで機能しません。

 nano /etc/nginx/nginx.conf
      
      





の代わりに
 user nginx;
      
      



置く
 user asterisk;
      
      







php-fpm autoloadを許可し、nginxを再起動します。



 systemctl enable php-fpm --now systemctl restart nginx
      
      







更新(2019年3月18日) :新鮮なアスタリスクは、adaptive_odbcを介してmysqlで機能するため、CDRレポートを機能させるにはodbcコネクタをインストールする必要があります。 mysqlコネクタを配置できます

  yum -y install mysql-connector-odbc
      
      





ただし、CDRとCELは機能しますが、キリル文字全体はUTF8 krakozyabryになります。

すべてが正しいために-mariadbコネクタを配置することをお勧めします。 現時点では、安定バージョンは3.0.8です。 libmaodbc.soライブラリをダウンロードし、解凍して登録します

  wget -qO- https://downloads.mariadb.com/Connectors/odbc/connector-odbc-3.0.8/mariadb-connector-odbc-3.0.8-ga-rhel7-x86_64.tar.gz | tar xvz -C / && ldconfig
      
      







次に、セクションを追加して/etc/odbcinst.iniにドライバーを登録する必要があります。

 [MariaDB] Description=ODBC for MariaDB Driver=/usr/lib64/libmaodbc.so Setup=/usr/lib64/libodbcmyS.so UsageCount=1
      
      







そして、 / etc / odbc.iniでドライバーをMariaDBに変更します。

 [MySQL-asteriskcdrdb] Description=MySQL connection to 'asteriskcdrdb' database driver=MariaDB server=localhost database=asteriskcdrdb Port=3306 Socket=/var/lib/mysql/mysql.sock option=3 Charset=utf8
      
      







FreePBXをダウンロードしてインストールします。



 cd /usr/src wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-14.0-latest.tgz tar xvfz freepbx-14.0-latest.tgz cd freepbx ./start_asterisk start ./install -n
      
      





確認します。 すべてがうまくいけば、/ etc / nginx / conf.d / freepbx.confで指定されたIPアドレスのFreePBX管理パネルにアクセスする必要があります。管理パスワード/電子メールを設定し、エラーがある場合は検索できます。



次に、freepbx起動用のsystemdユニットを作成します。



 nano /etc/systemd/system/freepbx.service [Unit] Description=FreePBX VoIP Server After=mariadb.service [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/sbin/fwconsole start -q ExecStop=/usr/sbin/fwconsole stop -q [Install] WantedBy=multi-user.target
      
      





freepbxを停止し、サービスを開始して、以下を確認します。



 fwconsole stop systemctl enable freepbx --now
      
      







すべてうまくいけば、おめでとうございます! PBXの準備ができました!



指示の作成中に発生した可能性のあるエラー:



-エラーがWebアスタリスクでアスタリスクと通信できない場合:パスワードを確認します。 manager.confセクション[admin]の/etc/asterisk/manager.confおよび/etc/amportal.confパスワードはamportal.confのパスワードと一致する必要があります



-モジュールのいずれかが改ざんされているとマークされている場合:コンソールでfwconsole ma refreshsignatures



を実行し、freepbxサービスを再起動して、モジュールをオンラインで更新してください




使用資料の説明を準備する際に:

CentOS 7にFreePBX 14をインストールする

Centos 7にAsterisk 14をインストールします

アスタリスクはPJSIPのTLS SRTPを構成します



ご清聴ありがとうございました! 私はコメントと修正に喜んでいます



Generickotkachov 、そして発見された不正確な点に感謝します!



All Articles