コンテナ内の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を構成したす 。

ご枅聎ありがずうございたした 私はコメントず修正に喜んでいたす

Generick 、 otkachov 、そしお発芋された䞍正確な点に感謝したす

Source: https://habr.com/ru/post/J347224/


All Articles