Ubuntu 24.04 に Asterisk22 と FreePBX17 をインストール

ubuntu 24.04 に Asterisk22 と FreePBX17 をインストールする手順

sudo apt update
sudo apt dist-upgrade -y
sudo apt install -y sox wget build-essential subversion ubuntu-drivers-common
cd /usr/src/
sudo wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-22-current.tar.gz
sudo tar zxf asterisk-22-current.tar.gz
cd asterisk-22.*/
sudo contrib/scripts/get_mp3_source.sh
sudo contrib/scripts/install_prereq install
sudo ./configure
menuselect/menuselect --enable chan_mobile --enable chan_ooh323
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
menuselect/menuselect --enable MOH-OPSOUND-WAV --enable MOH-OPSOUND-ULAW --enable MOH-OPSOUND-ALAW --enable MOH-OPSOUND-GSM
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
sudo make -j2
sudo make install
sudo make samples
sudo make basic-pbx
sudo make config
sudo ldconfig
sudo addgroup --quiet --system asterisk
sudo adduser --quiet --system --ingroup asterisk --no-create-home --disabled-password asterisk
sudo sed -i -e 's/#AST_USER=/AST_USER=/' /etc/default/asterisk
sudo sed -i -e 's/#AST_GROUP=/AST_GROUP=/' /etc/default/asterisk
sudo usermod -a -G dialout,audio asterisk
sudo chown -R asterisk: /var/{lib,log,run,spool}/asterisk /usr/lib/asterisk /etc/asterisk
sudo chmod -R 750 /var/{lib,log,run,spool}/asterisk /usr/lib/asterisk /etc/asterisk
sudo systemctl enable asterisk
sudo systemctl restart asterisk
sudo apt update
sudo apt install -y apache2
sudo systemctl enable apache2
sudo systemctl restart apache2
sudo apt update
sudo apt install -y mariadb-server
sudo systemctl enable mariadb
sudo systemctl restart mariadb
cat <<EOF > createasteriskdb.sql
CREATE DATABASE asterisk;
CREATE DATABASE asteriskcdrdb;
CREATE USER 'DBユーザー名'@'localhost' IDENTIFIED BY 'DBユーザーパスワード';
GRANT ALL PRIVILEGES ON asterisk.* TO 'DBユーザー名'@'localhost';
GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO 'DBユーザー名'@'localhost';
FLUSH PRIVILEGES;
EOF
mysql -u root -p < createasteriskdb.sql
sudo apt install -y php libapache2-mod-php php-intl php-mysql php-curl php-cli php-zip php-xml php-gd php-common php-mbstring php-xmlrpc php-bcmath php-json php-sqlite3 php-soap php-zip php-ldap php-imap php-cas curl dirmngr apt-transport-https lsb-release ca-certificates gcc g++ make nodejs
curl -sL https://deb.nodesource.com/setup_22.x | sudo bash
sudo apt-get install -y gcc g++ make
sudo apt install -y nodejs
cd /tmp
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-17.0-latest.tgz
tar xfz freepbx-17.0-latest.tgz
cd freepbx
sudo cp /etc/asterisk/asterisk.conf.old /etc/asterisk/asterisk.conf
sudo mkhomedir_helper asterisk
sudo ./start_asterisk start
sudo ./install -n --dbuser DBユーザー名 --dbpass DBユーザーパスワード
sudo sed 's/APACHE_RUN_USER=www-data/APACHE_RUN_USER=asterisk'
sudo sed 's/APACHE_RUN_GROUP=www-data/APACHE_RUN_GROUP=asterisk'
cat <<EOF > insert_envvars.txt
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
EOF
sudo sed '<\/VirtualHost>/i cat insert_envvars,txt' /etc/apache2/envvars
sudo sudo a2enmod rewrite
sudo usermod -aG www-data asterisk
sudo systemctl restart apache2
sudo fwconsole ma downloadinstall arimanager
sudo fwconsole ma downloadinstall pm2
sudo fwconsole chown

あとは、http://アドレス/admin にアクセス
モジュールのエラー出たら、

sudo fwconsole ma downloadinstall モジュール名

FastAGI が落ちる問題

「高度な設定」の「Launch local AGIs through FastAGI Server」を「いいえ」にする
大規模なシステムじゃなきゃ「はい」でも「いいえ」でも速度には操作が出ないようです。
ときどき FastAGI が落ちてつながらなくなるので切っていた方が無難かな。

Virtualmin との両立

やりようはあるだろうけど、今のとこうまくいかず。Virtualhost を使えばよさそうなんですが。
力尽きてしまいました。

YAMAHA RTXの後ろにひかり電話直収

NTT西日本のひかり電話直接収容は成功してます。
ポート番号は 5060 を使うんですが 0.0.0.0-udp とかち合うので注意が必要です。
PJSIP 標準のポート番号を 5060 から変えていれば問題ないですが、そのままだと
ひかり電話用の 5060 とぶつかって from-internal からの着信を受けません。(Trunk 等)
ぶっちゃげダミーで 5060 変更しといてもひかり電話用の pjsip.transports_custom.conf に 5060 あれば 5060 で受けちゃうんで、5060 から変更しても 5060 使えるんですけどね。124.200.201.202:5060 とかしても 10.0.0.100 とかの 5060 でうけれるんですよね。複数 IP には対応しない(All は OK)仕様のようなんですけど釈然としません。僕的にはバグかなぁ。aor でブロックはできるんですが。 まとめて近いうちに別に書いときます。RTX の後ろに置くのは試験中です。
少々お待ちを。