Asterisk18 & FreePBX16 install


構成

Debian 11 Apache2.4 MariaDB 10.5.15 PHP 7.4 asterisk 18 FreePBX 16

事前準備

  1. パッケージの更新
# apt update # apt full-upgrade -y #
  1. 必要に応じて、アップグレード後にシステムを再起動させる
# [ -f /var/run/reboot-required ] && sudo reboot -f #

Asterisk のインストール

※ aptでインストールすると asterisk 16 がインストールされてしまうのでソースからダウンロードする

# date Sun 28 Aug 2022 04:18:47 AM JST # # apt policy asterisk asterisk: Installed: (none) Candidate: 1:16.16.1~dfsg-1+deb11u1 Version table: 1:16.16.1~dfsg-1+deb11u1 500 500 http://ftp.jp.debian.org/debian bullseye/main amd64 Packages 500 http://security.debian.org/debian-security bullseye-security/main amd64 Packages #
  1. 必要なパッケージをインストールする
# apt -y install build-essential git curl wget libnewt-dev libssl-dev libncurses5-dev subversion libsqlite3-dev libjansson-dev libxml2-dev uuid-dev default-libmysqlclient-dev #
  1. ソースファイルをダウンロード&解凍する
# cd /usr/src/ # curl -O http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz # tar xvf asterisk-18-current.tar.gz # cd asterisk-18*/ #
  1. MP3 デコーダライブラリをダウンロードする
# pwd /usr/src/asterisk-18.14.0 # contrib/scripts/get_mp3_source.sh A addons/mp3 A addons/mp3/MPGLIB_README A addons/mp3/common.c A addons/mp3/huffman.h A addons/mp3/tabinit.c A addons/mp3/Makefile A addons/mp3/README A addons/mp3/decode_i386.c A addons/mp3/dct64_i386.c A addons/mp3/MPGLIB_TODO A addons/mp3/mpg123.h A addons/mp3/layer3.c A addons/mp3/mpglib.h A addons/mp3/decode_ntom.c A addons/mp3/interface.c Exported revision 202. #
  1. 必要な依存関係が解決されているかをスクリプトで確認
# pwd /usr/src/asterisk-18.14.0 # contrib/scripts/install_prereq install #
成功の場合下記表示が出力される
Setting up odbcinst (2.3.6-0.1+b1) ... Setting up odbcinst1debian2:amd64 (2.3.6-0.1+b1) ... Setting up unixodbc-dev:amd64 (2.3.6-0.1+b1) ... Processing triggers for initramfs-tools (0.140) ... update-initramfs: Generating /boot/initrd.img-5.10.0-8-amd64 Processing triggers for libglib2.0-0:amd64 (2.66.8-1) ... No schema files found: doing nothing. Processing triggers for libc-bin (2.31-13) ... Processing triggers for man-db (2.9.4-2) ... Setting up libgmime-3.0-dev:amd64 (3.2.7-1) ... ############################################# ## install completed successfully #############################################
  1. ソースファイルをビルドする
# ./configure #
成功の場合下記表示が出力される
configure: creating ./config.status config.status: creating makeopts config.status: creating autoconfig.h configure: Menuselect build configuration successfully completed .$$$$$$$$$$$$$$$=.. .$7$7.. .7$$7:. .$$:. ,$7.7 .$7. 7$$$$ .$$77 ..$$. $$$$$ .$$$7 ..7$ .?. $$$$$ .?. 7$$$. $.$. .$$$7. $$$$7 .7$$$. .$$$. .777. .$$$$$$77$$$77$$$$$7. $$$, $$$~ .7$$$$$$$$$$$$$7. .$$$. .$$7 .7$$$$$$$7: ?$$$. $$$ ?7$$$$$$$$$$I .$$$7 $$$ .7$$$$$$$$$$$$$$$$ :$$$. $$$ $$$$$$7$$$$$$$$$$$$ .$$$. $$$ $$$ 7$$$7 .$$$ .$$$. $$$$ $$$$7 .$$$. 7$$$7 7$$$$ 7$$$ $$$$$ $$$ $$$$7. $$ (TM) $$$$$$$. .7$$$$$$ $$ $$$$$$$$$$$$7$$$$$$$$$.$$$$$$ $$$$$$$$$$$$$$$$. configure: Package configured for: configure: OS type : linux-gnu configure: Host CPU : x86_64 configure: build-cpu:vendor:os: x86_64 : pc : linux-gnu : configure: host-cpu:vendor:os: x86_64 : pc : linux-gnu :
  1. メニューオプションでasteriskをカスタマイズする

CLIで設定するば場合

6.1.1. 設定項目の確認

# pwd /usr/src/asterisk-18.14.0 # menuselect/menuselect --list-options #

6.1.2. アドオンの有効化

# menuselect/menuselect --enable chan_mobile --enable chan_ooh323 --enable format_mp3 --enable res_config_mysql #

6.1.3. CORE-SOUNDS モジュールを有効化

# menuselect/menuselect --enable CORE-SOUNDS-JA-WAV --enable CORE-SOUNDS-JA-ULAW --enable CORE-SOUNDS-JA-ALAW --enable CORE-SOUNDS-JA-GSM --enable CORE-SOUNDS-JA-G729 --enable CORE-SOUNDS-JA-G722 --enable CORE-SOUNDS-JA-SLN16 --enable CORE-SOUNDS-JA-SIREN7 --enable CORE-SOUNDS-JA-SIREN14 #

6.1.4. Music On Hold モジュールを有効化

# menuselect/menuselect --enable MOH-OPSOUND-WAV --enable MOH-OPSOUND-ULAW --enable MOH-OPSOUND-ALAW --enable MOH-OPSOUND-GSM #

6.1.5. Extra Sound Packages モジュールを有効化

# menuselect/menuselect --enable EXTRA-SOUNDS-EN-WAV --enable EXTRA-SOUNDS-EN-ULAW --enable EXTRA-SOUNDS-EN-ALAW --enable EXTRA-SOUNDS-EN-GSM --enable EXTRA-SOUNDS-EN-G729 --enable EXTRA-SOUNDS-EN-G722 --enable EXTRA-SOUNDS-EN-SLN16 --enable EXTRA-SOUNDS-EN-SIREN7 --enable EXTRA-SOUNDS-EN-SIREN14 #

6.1.7. マクロ機能の有効化

# menuselect/menuselect --enable app_macro #

GUIで設定する場合

6.2.1. 設定メニューの起動

# pwd /usr/src/asterisk-18.14.0 # menuselect #

6.2.2. アドオンの有効化 6.2.3. CORE-SOUNDS モジュールを有効化 6.2.4. Music On Hold モジュールを有効化 6.2.5. Extra Sound Packages モジュールを有効化 6.2.7. マクロ機能の有効化


  1. asterisk 18 をビルド
# pwd /usr/src/asterisk-18.14.0 # make #
ビルド完了画面
..... [LD] res_pjsip_publish_asterisk.o -> res_pjsip_publish_asterisk.so [CC] res_calendar_exchange.c -> res_calendar_exchange.o [LD] res_calendar_exchange.o -> res_calendar_exchange.so [CC] res_pjsip_registrar.c -> res_pjsip_registrar.o [LD] res_pjsip_registrar.o -> res_pjsip_registrar.so Building Documentation For: third-party channels pbx apps codecs formats cdr cel bridges funcs tests main res addons +--------- Asterisk Build Complete ---------+ + Asterisk has successfully been built, and + + can be installed by running: + + + + make install + +-------------------------------------------+
  1. asterisk18 のインストール
# pwd /usr/src/asterisk-18.14.0 # make install #
  1. Asterisk 18 LTS を構成する 9.1. ドキュメントをインストール (時間かかる)
# pwd /usr/src/asterisk-18.14.0 # make progdocs
  1. Asterisk の サンプル構成の設定をインストールします。
# pwd /usr/src/asterisk-18.14.0 # make samples # make config # ldconfig #
  1. Asterisk を実行するためのユーザの作成及び権限の付与
# groupadd asterisk # useradd -r -d /var/lib/asterisk -g asterisk asterisk # usermod -aG audio,dialout asterisk # chown -R asterisk.asterisk /etc/asterisk # chown -R asterisk.asterisk /var/{lib,log,spool}/asterisk # chown -R asterisk.asterisk /usr/lib/asterisk #
  1. Asteriskを実行するユーザとグループを指定
# vim.tiny /etc/default/asterisk AST_USER="asterisk" AST_GROUP="asterisk" #
  1. Asteriskが読込むデフォルトの設定ファイルも変更しておく
# vim.tiny /etc/asterisk/asterisk.conf runuser = asterisk ; The user to run as. rungroup = asterisk ; The group to run as. #
  1. Asteriskサービスを起動& 永続化
# systemctl restart asterisk # systemctl enable asterisk
  1. 動作の確認
# asterisk -rvvvv #
uptimeの確認
*CLI> core show uptime System uptime: 1 hour, 48 minutes, 34 seconds Last reload: 1 hour, 48 minutes, 34 seconds *CLI> *CLI> quit #

FreePBX のインストール

  1. 必要なパッケージをインストール
# apt install -y util-linux apache2 mariadb-server mariadb-client php php-curl php-cli php-pdo php-mysql php-pear php-gd php-mbstring php-intl php-bcmath curl sox mpg123 lame ffmpeg sqlite3 git unixodbc sudo dirmngr postfix odbc-mariadb php-ldap nodejs npm pkg-config libicu-dev libapache2-mpm-itk #
  1. 起動しているAsteriskを停止させる
# systemctl stop asterisk # systemctl disable asterisk #
  1. 既存のAsteriskの構成のバックアップを取る
# cd /etc/asterisk # kdir DIST # mv * DIST # cp DIST/asterisk.conf . # sed -i 's/(!)//' asterisk.conf # touch modules.conf # touch cdr.conf #
  1. Apache の設定 今回は /var/www/html/pbx に配置することにする 4.1. ディレクトリの作成
# mkdir /var/www/html/pbx #

4.2. virtualhostの設定

# cat <<EOF > /etc/apache2/sites-available/pbx.conf <VirtualHost *:80> #ServerName www.example.com ServerAdmin webmaster@localhost DocumentRoot /var/www/html/pbx Alias /pbx "/var/www/html/pbx/" AssignUserID asterisk asterisk # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /var/www/html/pbx> AllowOverride All </Directory> </VirtualHost> EOF #

4.3. rewrite モジュールの有効化

# a2enmod rewrite #

4.4. apache の再起動

# a2ensite pbx.conf # systemctl restart apache2 #
  1. ODBCの設定 5.1. /etc/odbcinst.ini の設定
# cat <<EOF > /etc/odbcinst.ini [MySQL] Description = ODBC for MySQL (MariaDB) Driver = /usr/lib/x86_64-linux-gnu/odbc/libmaodbc.so FileUsage = 1 EOF #

5.2./etc/odbc.ini の設定

cat <<EOF > /etc/odbc.ini [MySQL-asteriskcdrdb] Description = MySQL connection to 'asteriskcdrdb' database Driver = MySQL Server = localhost Database = asteriskcdrdb Port = 3306 Socket = /var/run/mysqld/mysqld.sock Option = 3 EOF

6. FreePBXのインストール 6.1. ソースファイルのダウンロード&解凍

# cd /usr/local/src # wget http://mirror.freepbx.org/modules/packages/freepbx/7.4/freepbx-16.0-latest.tgz # tar zxvf freepbx-16.0-latest.tgz # cd /usr/local/src/freepbx/

6.2. asterisk の有効化

# cd /usr/local/src/freepbx/ # ./start_asterisk start ←機能してない? # systemctl start asterisk # systemctl enable asterisk

6.3. freepbxのインストール (./install --help でオプションを確認できる)

# pwd /usr/local/src/freepbx/ # ./install --webroot="/var/www/html/pbx" --ampcgibin="/var/www/html/pbx/cgi-bin" -n #
  1. freepbxで必要なもづーるをインストールする
# fwconsole ma installall #
  1. 設定の有効化
# fwconsole reload # fwconsole restart #
  1. systemd へ登録
cat <<EOF > /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 EOF

10.systemdのreload及びfreepbxの永続化

# systemctl daemon-reload # systemctl enable freepbx
  1. web ページにアクセス

参考文献