「ABS インストール」の版間の差分

提供: VoIP-Info.jp
ナビゲーションに移動 検索に移動
Takahashi (トーク | 投稿記録)
Takahashi (トーク | 投稿記録)
編集の要約なし
2行目: 2行目:
[[カテゴリ:インストール]]
[[カテゴリ:インストール]]
[[カテゴリ:Asterisk]]
[[カテゴリ:Asterisk]]
注意:ABSはクラウド向けではありません。インターネット上に公開しているサーバ上にインストールすることは想定していません。<br>
注意:ABSはクラウド向けではありません。インターネット上に公開しているサーバ上にインストールすることは想定していません。あくまでもローカル環境向けです。<br>
あくまでもローカル環境向けです。
<br>
==Asteriskインストール==
以下はDebian 12(bookworm)ベースの環境でインストールする方法です。Raspberry Piもこの方法です。<br>
[[Asterisk 18]]以降のページを参考にソースインストールしてください。<br>
<br>
make samples, make configもやっておきます。<br>
まずOSを入れ最新の状態にアップデートしておいてください。(apt -y update, apt -y upgrade)。<br>
/etc/asteriskに展開されるサンプルの設定ファイルは不要なので削除しておきます。
作業は基本的にrootの権限が必要です。sudoしろなどはいちいち説明しませんので、特記なき場合にはroot権>限で作業を行ってください。<br>
当たり前ではありますが、ネットワークの設定等も正しく行っておいてください。特にPBXで使用する場合にはIPアドレスは固定すると思いますので、固定しておいてください。また、ssh等でアクセスできる環境を想定していますので、sshも設定しておいてください。<br>
 
==Asteriskのインストール==
以下をパッケージ追加します。Asteriskのコンパイルに必要です。<br>
Raspberry Piのデフォルトインストールならば開発環境はインストールされていますが、以下のコマンドを実行しても、すでに入っているパッケージはそのままなので問題ありません。<br>
 
apt -y install build-essential libedit-dev uuid-dev libxml2-dev libncurses-dev libsqlite3-dev sqlite3 libssl-dev subversion git net-tools dnsutils libsrtp2-dev libunbound-dev
 
Asteriskのソースをダウンロードします。ここではAsterisk 22を入れます。<br>
ABS自体はAsterisk 18でも動作しますが、古いバージョンを入れる理由は特にはないでしょう。<br>
 
wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-22-current.tar.gz
 
参考:githubからcloneしてきてもかまいませんが、ブランチによっては最新版(未リリース)なので注意<br>
展開します。<br>


==必要なパッケージ類のインストール==
  tar zxvf asterisk-22-current.tar.gz
Raspbian(Raspberry Pi) Strecthを例に説明します。他のディストリビューションでは読み替えて実行してください。<br>
Apacheとphp,php-mbstringをインストールしておきます。Gitも入れておいてください。
# apt-get -y install apache2 php php-mbstring
# apt-get -y install git
Web UIからファイル編集等を可能にするためAsteriskの実行ユーザをasteriskとし、そのグループにApache(www-data)を追加します。<br>
# adduser -uid 5060 asterisk
# adduser www-data asterisk
/etc/default/asteriskファイルを編集し、以下の2行のコメントを外しておきます。
AST_USER="asterisk"
AST_GROUP="asterisk"
==ABS自体のインストール==
ABS一式を入手します
# git clone https://github.com/takao-t/abs.git abs
absディレクトリの中のextenを/etc/asteriskに、panelを/var/www/html/abs(例)にコピーします。
# cd abs/exten
# cp -r * /etc/asterisk
# cd ../panel
# mkdir /var/www/html/absp
# cp -r * /var/www/html/absp
Asteriskの音声ファイルをABS用に入れ替えます(上書きするだけ)
# cd ../sounds
  # cp sounds-ja.tar.z /var/lib/asterisk/sounds/.
# cd /var/lib/asterisk/sounds
# tar zxvf sounds-ja.tar.z
時間外応答用のデフォルト音声を用意しておきます
# mkdir /var/spool/asterisk/recording
# cp ja/abs-tc*.wav /var/spool/asterisk/recording/.
ABSのユーザ認証用ファイルをWebからアクセスできない位置に移動します。
# cd /var/www
# mkdir absp
# mv html/abs/userinfo.dat absp/.
ファイルのパーミッションを適切に設定します
# cdown -R www-data:www-data /var/www
内線情報を作成します。この操作を行うと内線のパスワードも再生成されるので注意してください。
# cd /etc/asterisk
# ./pj_phonegen.sh > pjsip_wizard.conf
'''注意:このスクリプトが動作しないケースがあります。動作しない場合には最初の方にある /dev/random を /dev/urandom に書き換えてください。'''<br>
SALT=`dd if=/dev/urandom bs=512 count=1|md5sum`


Asteriskのファイル類も適切に設定しますが、付属するスクリプトで一気に行うことができます。
Asteriskを展開したディレクトリで作業します。<br>
# cd /etc/asterisk/scripts
# sh -x ./changemode.sh


==注意事項==
cd asterisk-22.5.2 (22の最新版が22.5.2の場合)
PjSIPに慣れていない人が多いため、PjSIPの罠にはまるケースが出ています。ABSの現在のバージョンでは内線はPjSIPを標準としています。<br>
*ポート番号に注意
:ABSデフォルトではSIPのポート番号は5070です
*アクセスリスト(ACL)
:pjsip.confのアクセスリスト(ACL)にハマらないように注意してください


  [acl]
configureを実行します
  type=acl
 
  deny=0.0.0.0/0.0.0.0
./configure --with-jansson-bundled
  permit=192.168.0.0/16
 
  permit=61.213.230.145/32
もし途中でエラーが出て失敗する場合には何か足りないものがあるはずです。<br>
  permit=61.213.230.153/32
makeします。
  permit=202.173.5.198/32
 
make
 
完了したらmake install,make samples,make configします
 
  make install
  make samples
make config
 
インストールが完了したら以下のコマンドで asterisk:asterisk のユーザ/グループを登録します。<br>
応答が要求されたら適当に答えます
 
addgroup --gid 5060 asterisk
adduser --uid 5060 --gid 5060 asterisk --disabled-password
 
ディレクトリとファイルの所有者/グループをasteriskにします
 
chown -R asterisk:asterisk /var/log/asterisk
chown -R asterisk:asterisk /var/lib/asterisk
chown -R asterisk:asterisk /var/spool/asterisk
chown -R asterisk:asterisk /usr/lib/asterisk
chown -R asterisk:asterisk /etc/asterisk
 
Asteriskの実行ユーザ/グループを"asterisk"にします。<br>
/etc/default/asterisk ファイルを編集します(Debianの場合)。以下の個所のコメントを外します。
 
# Uncomment the following and set them to the user/groups that you
# want to run Asterisk as. NOTE: this requires substantial work to
# be sure that Asterisk's environment has permission to write the
# files required  for  its  operation, including logs, its comm
# socket, the asterisk database, etc.
AST_USER="asterisk"    <-ここ
  AST_GROUP="asterisk"  <-ここ
 
Asteriskの音声ファイルも日本語化しておきましょう。コンパイルしたディレクトリとは別なディレクトリで
以下を実行して日本語音声を入手します。
 
git clone https://github.com/takao-t/asterisk-sound-ja.git
 
cloneが終わったら、以下のコマンドで音声ファイルをコピーしておきます。
 
cp ./asterisk-sound-ja/core-sound-ja.tgz /var/lib/asterisk/sounds/.
 
ディレクトリを移動して展開します
 
cd /var/lib/asterisk/sounds
tar xvf core-sound-ja.tgz
 
展開し終わったらcore-sound-ja.tgzは要らないのですが、よほどディスク容量に困ってなければ置いたまま>でかまいません。<br>
オーナ/グループを変更しておきます
 
  chonw -R asterisk:asterisk /var/lib/asterisk/sounds/ja
 
==ABSのインストール==
 
ABS「そのもの」はAsteriskのextenのかたまりなのですが、操作用のWebUI(ABS Panel)が付属するため、以下
をインストールします。
 
apt install apache2 php php-mbstring php-sqlite3
 
githubから適当なディレクトリにcloneします。
 
git clone https://github.com/takao-t/abs.git
 
cloneしたディレクトリに移動し作業します。<br>
まず/etc/asteriskを削除します。samplesで入れたサンプル設定が入っているだけなので通常は問題ないはず
ですが、もしも自分で設定した何かが入っている場合にはバックアップしてください。
 
rm -r /etc/asterisk/*
 
ABSのexten類をコピーします
 
  cp -r exten/* /etc/asterisk/.
 
ABSのサウンドファイルをコピーします
 
cp sound/abs-sounds-ja.tgz /var/lib/asterisk/sounds/.
 
ABSのサウンドファイルを展開しておきます
 
cd /var/lib/asterisk/sounds
  tar xvf abs-sounds-ja.tgz
 
/etcに移動しファイルの権限を変更します。
 
cd /etc/asterisk
chown -R asterisk:asterisk asterisk/*
 
初期のpjsip_wizard.confを生成します。pjsip_wizard.confは最初から入っていますが、パスワードが公開さ
れているのと同じなので必ず初期pjsip_wizard.confを生成するようにしてください。/etc/asteriskに移動し、以下を実行します。
 
  ./pj_phonegen.sh > pjsip_wizard.conf
 
Asteriskを起動します。起動したらCLIで動作していることを確認してください。
 
systemctl restart asterisk
 
Asteriskが正常に起動されていればAsteriskの設定は一旦ここまでです。<br>
<br>
次にWebUIのインストールを行います。gitでcloneしたABSのディレクトリに戻ってください。<br>
WebUIのトップディレクトリ(URL)を決めます。ここでは http://{IPアドレス}/absp とします。この場合、De
bianのApache標準インストールでは/var/www/html/abspとなります。ここにWebUI関連のファイルをコピーしま
す。
 
mkdir /var/www/html/absp
cp -r panel/* /var/www/html/absp/.
chown -R www-data:www-data /var/www/html/absp


permitに書かれていないIPアドレス帯からの接続は拒否されますので、デフォルトの設定と異なるIPアドレス帯を使用する場合には書き換えてください。pjsip.confだけをリロードする方法が見つかっていないので設定を反映させるにはAsterisk自体を再起動してください。
これでほぼ使えるのですが、1点だけ確認しておきます。ABS PanelはAMI経由でAsteriskを操作します。デフ>ォルトのインストールではユーザ名とパスワードが『決め打ち』になっていますが、AMIのbindがlocalhostだ>けになっているのでサーバを他の用途に使っておらず、ログインユーザもいないようなら問題はないのですが>、他にログインユーザがいるような場合にはユーザとパスワードを変更してください。<br>
<br>
/etc/asterisk/manager.confの次のセクションがWebUI用です。


==ちょっとした内部解説==
ABSの基本はAstDBによる動作です。このため通常はextenを書き換える必要はありません。<br>
ABSのUIとAsteriskはAMIで通信しています。このためファイルのパーミッションが適切でなくとも基本的な機能は動作します。<br>
ABS UIのファイル編集機能を使う場合には上記で示したようにWebからAsteriskのファイルが編集できるように調整する必要があります。<br>
AMIはデフォルトでは以下の設定で認証していますので、なるべくデフォルトでは使用せず調整してください。<br>
/etc/asterisk/manager.conf
  ;ABS Panel接続情報
  ;ABS Panel接続情報
  [abspadmin]
  [abspadmin]
83行目: 155行目:
  read = system,call
  read = system,call
  write = system,all
  write = system,all
上記の例でインストールした場合、/var/www/html/absp/php/amiauth.php
 
この設定内容にあわせて/var/www/html/absp/php/amiauth.phpを修正します。
 
  <?php
  <?php
 
  define('AMIUSERNAME', 'abspadmin');
  define('AMIUSERNAME', 'abspadmin');
  define('AMIPASSWORD', 'amipass1234');
  define('AMIPASSWORD', 'amipass1234');
 
  ?>
  ?>


==トランク設定==
これで基本のインストールは終わりです。http://{IPアドレス}/abspにアクセスしてください。最初のユーザ
外線を使用する場合にはトランクを正しく設定しておいてください。トランクは必ず"番号"で着信させます。ひかり電話のHGW,OGW等いくつかのトランクに関しては前処理用のcontextが用意してあります。extensions_incoming.confを参照してください。<br>
登録画面が開きますので、ユーザ名とパスワードを登録してログインしてください。このユーザが最初の管理ユーザとなります。従来はファイルでユーザを管理していたため、最初の管理ユーザの設定はファイルで行う必要がありましたが、新しいWebUIではユーザ情報をAstDBに保存するようにしたため、このようにWebUIだけで
最終的には番号を付けて(incoming,番号,1)へ落とせばABSで着信処理ができます。番号がない着信の場合には以下のようにします。
ユーザの新規登録が可能となっています。もし管理ユーザのパスワードがわからなくなってしまった場合には、AstDBから/ABS/PANELUSER/のキーにあるユーザ名を削除してください。
exten => s,1,Goto(incoming,0312345678,1)
 
こうすれば0312345678で着信したことになります。<br>
*CLI> database show ABS/PANELUSER
==AsteriskとWebサーバの起動==
/ABS/PANELUSER/admin                                : ======hashed password======
# systemctl start asterisk
 
# systemctl start apache2
このような形でユーザ情報が保存されています。<br>
==Web UIへのアクセス==
つまりAsteriskが動作していないとWebUIは使えません。<br>
http://サーバのIPアドレス/absp/ にアクセスするとログイン画面が出る(はず)です。ユーザ名 admin パスワード password でログインできます。<br>
この認証は(見ればわかりますが)簡単なシカケで /var/www/abs/userinfo.dat を見ている(md5)だけです。
==Web UIの使い方がよくわからない==
おおよそ見ればわかるようにしてあるつもりなのですが、わかりにくい場合にはサンプルの設定を読み込ませてみてください。
# cd /etc/asterisk/scripts
# ./dbrestore.sh < astdb.sample
サンプルの設定が読み込まれるので参考にしてください。<br>
Web UIからの設定反映は'''即時'''反映です。ですので着信条件等を変更した場合には即時で反映されますので注意してください。<br>
==電話機の設定==
注意:ABSではPjSIPを標準としSIPポート番号をデフォルトで5070に変更しています。<br>
<br>
ABSでは内線電話機(ピア)は抽象化されているため内線番号と電話機はABSの設定(内線設定)で紐付けます。<br>
電話機を登録する場合には pjsip_wizard.confに記載されているユーザ名(phoneX)とパスワードで登録してください。<br>
ラインキー、固定パークキーを使用する場合にはキーの属性BLFにし、以下の値を設定します。
ラインキー keyX (Xは1~16)
パークキー ParkX (Xは1~8)
各内線には"規制値"があります。規制値が2以上でないと外線発信は行えません。通常の内線では2に設定します。規制値"3"は管理機能が使える内線です。

2025年9月9日 (火) 15:11時点における版

注意:ABSはクラウド向けではありません。インターネット上に公開しているサーバ上にインストールすることは想定していません。あくまでもローカル環境向けです。

以下はDebian 12(bookworm)ベースの環境でインストールする方法です。Raspberry Piもこの方法です。

まずOSを入れ最新の状態にアップデートしておいてください。(apt -y update, apt -y upgrade)。
作業は基本的にrootの権限が必要です。sudoしろなどはいちいち説明しませんので、特記なき場合にはroot権>限で作業を行ってください。
当たり前ではありますが、ネットワークの設定等も正しく行っておいてください。特にPBXで使用する場合にはIPアドレスは固定すると思いますので、固定しておいてください。また、ssh等でアクセスできる環境を想定していますので、sshも設定しておいてください。

Asteriskのインストール

以下をパッケージ追加します。Asteriskのコンパイルに必要です。
Raspberry Piのデフォルトインストールならば開発環境はインストールされていますが、以下のコマンドを実行しても、すでに入っているパッケージはそのままなので問題ありません。

apt -y install build-essential libedit-dev uuid-dev libxml2-dev libncurses-dev libsqlite3-dev sqlite3 libssl-dev subversion git net-tools dnsutils libsrtp2-dev libunbound-dev

Asteriskのソースをダウンロードします。ここではAsterisk 22を入れます。
ABS自体はAsterisk 18でも動作しますが、古いバージョンを入れる理由は特にはないでしょう。

wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-22-current.tar.gz

参考:githubからcloneしてきてもかまいませんが、ブランチによっては最新版(未リリース)なので注意
展開します。

tar zxvf asterisk-22-current.tar.gz

Asteriskを展開したディレクトリで作業します。

cd asterisk-22.5.2 (22の最新版が22.5.2の場合)

configureを実行します

./configure --with-jansson-bundled

もし途中でエラーが出て失敗する場合には何か足りないものがあるはずです。
makeします。

make

完了したらmake install,make samples,make configします

make install
make samples
make config

インストールが完了したら以下のコマンドで asterisk:asterisk のユーザ/グループを登録します。
応答が要求されたら適当に答えます

addgroup --gid 5060 asterisk
adduser --uid 5060 --gid 5060 asterisk --disabled-password

ディレクトリとファイルの所有者/グループをasteriskにします

chown -R asterisk:asterisk /var/log/asterisk
chown -R asterisk:asterisk /var/lib/asterisk
chown -R asterisk:asterisk /var/spool/asterisk
chown -R asterisk:asterisk /usr/lib/asterisk
chown -R asterisk:asterisk /etc/asterisk

Asteriskの実行ユーザ/グループを"asterisk"にします。
/etc/default/asterisk ファイルを編集します(Debianの場合)。以下の個所のコメントを外します。

# Uncomment the following and set them to the user/groups that you
# want to run Asterisk as. NOTE: this requires substantial work to
# be sure that Asterisk's environment has permission to write the
# files required  for  its  operation, including logs, its comm
# socket, the asterisk database, etc.
AST_USER="asterisk"    <-ここ
AST_GROUP="asterisk"   <-ここ

Asteriskの音声ファイルも日本語化しておきましょう。コンパイルしたディレクトリとは別なディレクトリで 以下を実行して日本語音声を入手します。

git clone https://github.com/takao-t/asterisk-sound-ja.git

cloneが終わったら、以下のコマンドで音声ファイルをコピーしておきます。

cp ./asterisk-sound-ja/core-sound-ja.tgz /var/lib/asterisk/sounds/.

ディレクトリを移動して展開します

cd /var/lib/asterisk/sounds
tar xvf core-sound-ja.tgz

展開し終わったらcore-sound-ja.tgzは要らないのですが、よほどディスク容量に困ってなければ置いたまま>でかまいません。
オーナ/グループを変更しておきます

chonw -R asterisk:asterisk /var/lib/asterisk/sounds/ja

ABSのインストール

ABS「そのもの」はAsteriskのextenのかたまりなのですが、操作用のWebUI(ABS Panel)が付属するため、以下 をインストールします。

apt install apache2 php php-mbstring php-sqlite3

githubから適当なディレクトリにcloneします。

git clone https://github.com/takao-t/abs.git

cloneしたディレクトリに移動し作業します。
まず/etc/asteriskを削除します。samplesで入れたサンプル設定が入っているだけなので通常は問題ないはず ですが、もしも自分で設定した何かが入っている場合にはバックアップしてください。

rm -r /etc/asterisk/*

ABSのexten類をコピーします

cp -r exten/* /etc/asterisk/.

ABSのサウンドファイルをコピーします

cp sound/abs-sounds-ja.tgz /var/lib/asterisk/sounds/.

ABSのサウンドファイルを展開しておきます

cd /var/lib/asterisk/sounds
tar xvf abs-sounds-ja.tgz

/etcに移動しファイルの権限を変更します。

cd /etc/asterisk
chown -R asterisk:asterisk asterisk/*

初期のpjsip_wizard.confを生成します。pjsip_wizard.confは最初から入っていますが、パスワードが公開さ れているのと同じなので必ず初期pjsip_wizard.confを生成するようにしてください。/etc/asteriskに移動し、以下を実行します。

./pj_phonegen.sh > pjsip_wizard.conf

Asteriskを起動します。起動したらCLIで動作していることを確認してください。

systemctl restart asterisk

Asteriskが正常に起動されていればAsteriskの設定は一旦ここまでです。

次にWebUIのインストールを行います。gitでcloneしたABSのディレクトリに戻ってください。
WebUIのトップディレクトリ(URL)を決めます。ここでは http://{IPアドレス}/absp とします。この場合、De bianのApache標準インストールでは/var/www/html/abspとなります。ここにWebUI関連のファイルをコピーしま す。

mkdir /var/www/html/absp
cp -r panel/* /var/www/html/absp/.
chown -R www-data:www-data /var/www/html/absp

これでほぼ使えるのですが、1点だけ確認しておきます。ABS PanelはAMI経由でAsteriskを操作します。デフ>ォルトのインストールではユーザ名とパスワードが『決め打ち』になっていますが、AMIのbindがlocalhostだ>けになっているのでサーバを他の用途に使っておらず、ログインユーザもいないようなら問題はないのですが>、他にログインユーザがいるような場合にはユーザとパスワードを変更してください。

/etc/asterisk/manager.confの次のセクションがWebUI用です。

;ABS Panel接続情報
[abspadmin]
secret = amipass1234
deny=0.0.0.0/0.0.0.0
permit=127.0.0.0/255.0.0.0
read = system,call
write = system,all

この設定内容にあわせて/var/www/html/absp/php/amiauth.phpを修正します。

<?php
define('AMIUSERNAME', 'abspadmin');
define('AMIPASSWORD', 'amipass1234');
?>

これで基本のインストールは終わりです。http://{IPアドレス}/abspにアクセスしてください。最初のユーザ 登録画面が開きますので、ユーザ名とパスワードを登録してログインしてください。このユーザが最初の管理ユーザとなります。従来はファイルでユーザを管理していたため、最初の管理ユーザの設定はファイルで行う必要がありましたが、新しいWebUIではユーザ情報をAstDBに保存するようにしたため、このようにWebUIだけで ユーザの新規登録が可能となっています。もし管理ユーザのパスワードがわからなくなってしまった場合には、AstDBから/ABS/PANELUSER/のキーにあるユーザ名を削除してください。

  • CLI> database show ABS/PANELUSER

/ABS/PANELUSER/admin  : ======hashed password======

このような形でユーザ情報が保存されています。
つまりAsteriskが動作していないとWebUIは使えません。