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

提供: VoIP-Info.jp
ナビゲーションに移動 検索に移動
Takahashi (トーク | 投稿記録)
Takahashi (トーク | 投稿記録)
編集の要約なし
 
(同じ利用者による、間の25版が非表示)
2行目: 2行目:
[[カテゴリ:インストール]]
[[カテゴリ:インストール]]
[[カテゴリ:Asterisk]]
[[カテゴリ:Asterisk]]
注意:ABSはクラウド向けではありません。インターネット上に公開しているサーバ上にインストールすることは想定していません。<br>
注意:ABSはクラウド向けではありません。インターネット上に公開しているサーバ上にインストールすることは想定していません。あくまでもローカル環境向けです。<br>
あくまでもローカル環境向けです。
<br>
==Asteriskインストール==
以下はDebian 12(bookworm)ベースの環境でインストールする方法です。Raspberry Piもこの方法です。<br>
[[Asterisk 16]]のページを参考にソースインストールしてください。<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>
Raspbian(Raspberry Pi) Strecthを例に説明します。他のディストリビューションでは読み替えて実行してください。<br>
 
Apacheとphp,php-mbstringをインストールしておきます。Gitも入れておいてください。
==Asteriskのインストール==
  # apt-get -y install apache2 php php-mbstring
以下をパッケージ追加します。Asteriskのコンパイルに必要です。<br>
  # apt-get -y install git
Raspberry Piのデフォルトインストールならば開発環境はインストールされていますが、以下のコマンドを実行しても、すでに入っているパッケージはそのままなので問題ありません。<br>
Web UIからファイル編集等を可能にするためAsteriskの実行ユーザをasteriskとし、そのグループにApache(www-data)を追加します。<br>
 
  # adduser -uid 5060 asterisk
  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
  # adduser www-data asterisk
 
/etc/default/asteriskファイルを編集し、以下の2行のコメントを外しておきます。
Asteriskのソースをダウンロードします。ここではAsterisk 22を入れます。<br>
  AST_USER="asterisk"
ABS自体はAsterisk 18でも動作しますが、古いバージョンを入れる理由は特にはないでしょう。<br>
  AST_GROUP="asterisk"
 
==ABS自体のインストール==
  wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-22-current.tar.gz
ABS一式を入手します
 
  # git clone https://github.com/takao-t/abs.git abs
参考:githubからcloneしてきてもかまいませんが、ブランチによっては最新版(未リリース)なので注意<br>
absディレクトリの中のextenを/etc/asteriskに、panelを/var/www/html/abs(例)にコピーします。
展開します。<br>
  # cd abs/exten
 
  # cp -r * /etc/asterisk
tar zxvf asterisk-22-current.tar.gz
  # cd ../panel
 
  # mkdir /var/www/html/absp
Asteriskを展開したディレクトリで作業します。<br>
  # cp -r * /var/www/html/absp
 
Asteriskの音声ファイルをABS用に入れ替えます(上書きするだけ)
cd asterisk-22.5.2 (22の最新版が22.5.2の場合)
# cd ../sounds
 
  # cp sounds-ja.tar.z /var/lib/asterisk/sounds/.
configureを実行します
  # cd /var/lib/asterisk/sounds
 
  # tar zxvf sounds-ja.tar.z
./configure --with-jansson-bundled
時間外応答用のデフォルト音声を用意しておきます
 
  # mkdir /var/spool/asterisk/recording
もし途中でエラーが出て失敗する場合には何か足りないものがあるはずです。<br>
  # cp ja/abs-tc*.wav /var/spool/asterisk/recording/.
makeします。
ABSのユーザ認証用ファイルをWebからアクセスできない位置に移動します。
 
  # cd /var/www
make
  # mkdir abs
 
  # mv html/abs/userinfo.dat abs/.
完了したらmake install,make samples,make configします
ファイルのパーミッションを適切に設定します
 
  # cdown -R www-data:www-data /var/www
make install
内線情報を作成します。この操作を行うと内線のパスワードも再生成されるので注意してください。
make samples
# cd /etc/asterisk
make config
# ./pj_phonegen.sh > pjsip_wizard.conf
 
Asteriskのファイル類も適切に設定しますが、付属するスクリプトで一気に行うことができます。
インストールが完了したら以下のコマンドで asterisk:asterisk のユーザ/グループを登録します。<br>
# cd /etc/asterisk/scripts
応答が要求されたら適当に答えます
# sh -x ./changemode.sh
 
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/asteriskに移動しファイルの権限を変更します。
 
  cd /etc/asterisk
  chown -R 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 とします。この場合、Debianの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だけになっているのでサーバを他の用途に使っておらず、ログインユーザもいないようなら問題はないのですが、他にログインユーザがいるような場合にはユーザとパスワードを変更してください。<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]
62行目: 153行目:
  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');
  ?>
  ?>
==トランク設定==
 
外線を使用する場合にはトランクを正しく設定しておいてください。トランクは必ず"番号"で着信させます。ひかり電話のHGW,OGW等いくつかのトランクに関しては前処理用のcontextが用意してあります。extensions_incoming.confを参照してください。<br>
これで基本のインストールは終わりです。http://{IPアドレス}/abspにアクセスしてください。最初のユーザ
最終的には番号を付けて(incoming,番号,1)へ落とせばABSで着信処理ができます。番号がない着信の場合には以下のようにします。
登録画面が開きますので、ユーザ名とパスワードを登録してログインしてください。このユーザが最初の管理ユーザとなります。従来はファイルでユーザを管理していたため、最初の管理ユーザの設定はファイルで行う必要がありましたが、新しいWebUIではユーザ情報をAstDBに保存するようにしたため、このようにWebUIだけで
exten => s,1,Goto(incoming,0312345678,1)
ユーザの新規登録が可能となっています。もし管理ユーザのパスワードがわからなくなってしまった場合には、AstDBから/ABS/PANELUSER/のキーにあるユーザ名を削除してください。
こうすれば0312345678で着信したことになります。<br>
 
==AsteriskとWebサーバの起動==
*CLI> database show ABS/PANELUSER
# systemctl start asterisk
/ABS/PANELUSER/admin                                : ======hashed password======
# systemctl start apache2
 
==Web UIへのアクセス==
このような形でユーザ情報が保存されています。<br>
http://サーバのIPアドレス/absp/ にアクセスするとログイン画面が出る(はず)です。ユーザ名 admin パスワード password でログインできます。<br>
つまりAsteriskが動作していないとWebUIは使えません。<br>
この認証は(見ればわかりますが)簡単なシカケで /var/www/abs/userinfo.dat を見ている(md5)だけです。
 
==Web UIの使い方がよくわからない==
==ABSの初期設定==
おおよそ見ればわかるようにしてあるつもりなのですが、わかりにくい場合にはサンプルの設定を読み込ませてみてください。
===管理ユーザー===
  # cd /etc/asterisk/scripts
前述のように最初のログイン(ユーザが一切登録されていない状態)時にログインしようとするとユーザー登録ページが開きます。ここで登録したユーザが最初の管理ユーザーとなります。ログインが可能になったなら、管理ユーザは他にユーザを登録することができるようになります。<br>
  # ./dbrestore.sh < astdb.sample
もし、管理ユーザのパスワードを忘れるなどしてログインできなくなってしまった場合には、AstDBからABS/PANELUSERのエントリを削除すれば初期状態に戻すことができます。
サンプルの設定が読み込まれるので参考にしてください。<br>
===ACL===
Web UIからの設定反映は'''即時'''反映です。ですので着信条件等を変更した場合には即時で反映されますので注意してください。<br>
Webサーバによるアクセス制御に加えて、ABS WebUIへのアクセス制御も持っています。初期状態では何も設定されていないので、どこからでもアクセス可能となっていますが、特定のアドレスやネットワークにだけ許可したい場合には [管理機能]=>[システム設定] からセキュリティの項目にあるACLを登録してください。<br>
==電話機の設定==
注意:このACLはWebUI用のACLです。PjSIPのACLは全く別ものですので注意してください。
注意:ABSではPjSIPを標準としSIPポート番号をデフォルトで5070に変更しています。<br>
 
===ABS初期化===
初めて使う場合には以下の操作を行ってください。AstDBに初期値を登録します。
:[PBX動作設定]=>[PBX機能詳細設定]
::基本テクノロジ設定
::システム・初期化->キーシステム初期化実行
::エリア管理->エリア設定保存
==使い方==
大体のものは見ればわかるようになっているはずですが、たぶんわかりにくい。<br>
UIの構成は以下のようになっています。<br>
[[画像:ABS_NCP1.png |640px]]
 
==オプション設定==
ちょっと詳しい人向けの設定(オプション)
 
===キャッシュ管理===
新WebUIではセッションの管理を行っています。セッション情報は独自のKeyValue Storeにキャッシュしていますが、KVSとかっこいい言い方をしても単なるファイルです。ただしAstDBと表現方法に互換のあるKVSを実装しています。基本のキャッシュ先はドキュメントのルート/cacheで、以下のようにセッションファイルと最終アクティビティ時刻が記録されます。
 
/var/www/html/absp# ls -l cache/
total 8
-rw-r--r-- 1 www-data www-data 13 Sep  5 09:19 ABS_PANELUSER_admin-last_activity
-rw-r--r-- 1 www-data www-data 34 Sep  5 09:19 ABS_PANELUSER_admin-session_id
 
最終アクティビティ時間はWebUIで何かを操作する度に記録されますので、ディスクI/Oやディスクの寿命を気にする場合にはこれをメモリ上に持つことができます。メモリ上に置くにはmemcachedを使用しますので、以下の手順で設定してください。
 
apt install memchached php-memcached
systemctl restart apache2
 
もしWebUIでログインしているなら、まずはログアウトします。ログアウトしてからphp/config.phpを編集します。デフォルトインストールなら以下のようにfileを指定している個所をコメントし、memcachedの設定のコメントを外すと動きます。
 
// キャッシュ設定 現在のところセッション情報保存にのみ使用
  // 設定可能値はfileまたはmemcached
// memcached使用時はmemcachedのインストールとPHP拡張が必要
  //define('CACHE_MODE', 'file');
// memcachedを使用する場合は以下の設定が必要
define('CACHE_MODE', 'memcached');
define('MEMCACHED_HOST', '127.0.0.1');
define('MEMCACHED_PORT', 11211)
 
動作しているかを確認するにはcache/の下にファイルが作成されておらず、かつWebUIの管理機能->システム設定でユーザ一覧を確認した際に「最終アクティビティ」の時刻が記録されており、何等かの操作をすることでこの時刻が更新されればセッション情報はmemcachedで保持されています。<br>
WebUIはセッション情報以外はなるべく「書かない」ようにしてあります。情報はAMIでAstDBから取得します>が、AstDBに対して書き込むのは[設定]等がクリックされた場合だけです。<br>
なお、memcachedが使えない場合にはファイルで保存するようにフォールバックします。<br>
memcachedはご存じの通りin-memoryのvolatileなデータストアです。WebUIで使用しているのはブラウザのセッション情報だけなので問題にはなりません。またよほど多数のユーザを登録し多数ログインするなど極端なことをしない限りはサイズも問題にはなりません。<br>
お勧めの方法ではありますが追加のコンポーネントが必要なことと「わかりやすさ」を優先しているため、デフォルトではfileモードを提供しています。
 
===ファイル編集===
WebUIからファイルの生成(トランク設定など)やAsteriskの設定ファイルを編集したい場合には以下の手順で権限類を調整する必要があります。ただし
 
*Asteriskの設定がよくわかっていること
*WebUIからAsteriskシステムのファイルを編集するリスク
*もし他のWebページやコンテンツがある場合に、Asteriskの設定が変更されるリスク
*以下の手順で何をやっているのか理解できる
 
これらを理解した上で利用してください。<br>
<br>
<br>
ABSでは内線電話機(ピア)は抽象化されているため内線番号と電話機はABSの設定(内線設定)で紐付けます。<br>
ABS PanelというかABS自体はAsteriskのAstDBに設定値を持つことで動作が決定されています。このため『Asteriskの設定ファイルを直接変更する』ということは行いません。例えば内線の割り当てや付け替えのような操作に関してはAsteriskの設定ファイルを触る必要はありません。ですが、トランク設定等、Asteriskの動作に関わる部分は「sshでログインしてファイルを直接編集する」ような「わかっている人が操作する」ことを前提にしています。とはいえ、これは面倒だという人がいるのも事実なのでWebUIにファイル編集機能を持たせてあります。<br>
電話機を登録する場合には pjsip_wizard.confに記載されているユーザ名(phoneX)とパスワードで登録してください。<br>
<br>
ラインキー、固定パークキーを使用する場合にはキーの属性BLFにし、以下の値を設定します。
DebianではWebサーバはwww-data:www-dataというユーザ/グループで動作しています。Asteriskはここまでの設定であればasterisk:asteriskで動作します。WebUIからAsteriskの設定ファイルを編集させるには、Asteriskグループにwww-dataを所属させます。<br>
  ラインキー keyX (Xは1~16)
 
  パークキー ParxX (Xは1~8)
usermod -aG asterisk www-data
各内線には"規制値"があります。規制値が2以上でないと外線発信は行えません。通常の内線では2に設定します。規制値"3"は管理機能が使える内線です。
 
Webサーバを再起動します
 
systemctl restart apache2
 
/etc/asteriskにグループでの書き込みを許可します
 
chmod -R g+w /etc/asterisk
 
WebUI(ABS Panel)にログインし、[管理機能]->[システム設定]から「ファイル編集機能」を有効にします。<br>
[ツール]->[ファイル編集]でファイル編集機能を試します。新規作成の個所でsample.txt等のファイル名を入
れ新規作成し、保存して正しくファイルが作成/編集できることを確認します。
==二重ログインの禁止と対処==
新バージョンのWebUIでは複数のブラウザからの同時ログインを禁止しています。このため「ログアウトしないでブラウザを閉じた」や「別な場所でログインしたまま」などの場合に新規に入れないという問題が発生します。通常、自動ログアウト時間(デフォルト30分)を経過すると別な場所からログインできるようになるのですが、30分も待ってられないという場合には以下の対処でログインできます。ただし、サーバにsshログインできることが必要になります。
===キャッシュモードがfileの場合===
cache/ の下にあるセッションファイルを削除します。<br>
ABS_PANELUSER_ユーザ名-session_id と ABS_PANELUSER_ユーザ名-last_activity がユーザに対応するファイルです。
 
===キャッシュモードがmemcachedの場合===
memcachedを他の用途に使っていないのであれば単純にsystemctl restart memcachedでmemcachedを再起動しクリアしてしまいます。<br>
他の用途にも使っていて再起動できない場合にはtelnetやnc等で操作し、該当するキーを削除してください。
  get ABS_PANELUSER_admin-session_id
VALUE ABS_PANELUSER_admin-session_id 0 26
50kbc2fnq71dina0abbapn62kt
END
get ABS_PANELUSER_admin-last_activity
VALUE ABS_PANELUSER_admin-last_activity 1 10
1757488148
  END
ファイルの場合と同様、ABS_PANEL_USER_ユーザ名のキーを持ちます。これらを削除すればログインできるようになります。

2025年12月1日 (月) 04:26時点における最新版

注意: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/asteriskに移動しファイルの権限を変更します。

cd /etc/asterisk
chown -R 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 とします。この場合、Debianの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は使えません。

ABSの初期設定

管理ユーザー

前述のように最初のログイン(ユーザが一切登録されていない状態)時にログインしようとするとユーザー登録ページが開きます。ここで登録したユーザが最初の管理ユーザーとなります。ログインが可能になったなら、管理ユーザは他にユーザを登録することができるようになります。
もし、管理ユーザのパスワードを忘れるなどしてログインできなくなってしまった場合には、AstDBからABS/PANELUSERのエントリを削除すれば初期状態に戻すことができます。

ACL

Webサーバによるアクセス制御に加えて、ABS WebUIへのアクセス制御も持っています。初期状態では何も設定されていないので、どこからでもアクセス可能となっていますが、特定のアドレスやネットワークにだけ許可したい場合には [管理機能]=>[システム設定] からセキュリティの項目にあるACLを登録してください。
注意:このACLはWebUI用のACLです。PjSIPのACLは全く別ものですので注意してください。

ABS初期化

初めて使う場合には以下の操作を行ってください。AstDBに初期値を登録します。

[PBX動作設定]=>[PBX機能詳細設定]
基本テクノロジ設定
システム・初期化->キーシステム初期化実行
エリア管理->エリア設定保存

使い方

大体のものは見ればわかるようになっているはずですが、たぶんわかりにくい。
UIの構成は以下のようになっています。

オプション設定

ちょっと詳しい人向けの設定(オプション)

キャッシュ管理

新WebUIではセッションの管理を行っています。セッション情報は独自のKeyValue Storeにキャッシュしていますが、KVSとかっこいい言い方をしても単なるファイルです。ただしAstDBと表現方法に互換のあるKVSを実装しています。基本のキャッシュ先はドキュメントのルート/cacheで、以下のようにセッションファイルと最終アクティビティ時刻が記録されます。

/var/www/html/absp# ls -l cache/
total 8
-rw-r--r-- 1 www-data www-data 13 Sep  5 09:19 ABS_PANELUSER_admin-last_activity
-rw-r--r-- 1 www-data www-data 34 Sep  5 09:19 ABS_PANELUSER_admin-session_id

最終アクティビティ時間はWebUIで何かを操作する度に記録されますので、ディスクI/Oやディスクの寿命を気にする場合にはこれをメモリ上に持つことができます。メモリ上に置くにはmemcachedを使用しますので、以下の手順で設定してください。

apt install memchached php-memcached
systemctl restart apache2

もしWebUIでログインしているなら、まずはログアウトします。ログアウトしてからphp/config.phpを編集します。デフォルトインストールなら以下のようにfileを指定している個所をコメントし、memcachedの設定のコメントを外すと動きます。

// キャッシュ設定 現在のところセッション情報保存にのみ使用
// 設定可能値はfileまたはmemcached
// memcached使用時はmemcachedのインストールとPHP拡張が必要
//define('CACHE_MODE', 'file');
// memcachedを使用する場合は以下の設定が必要
define('CACHE_MODE', 'memcached');
define('MEMCACHED_HOST', '127.0.0.1');
define('MEMCACHED_PORT', 11211)

動作しているかを確認するにはcache/の下にファイルが作成されておらず、かつWebUIの管理機能->システム設定でユーザ一覧を確認した際に「最終アクティビティ」の時刻が記録されており、何等かの操作をすることでこの時刻が更新されればセッション情報はmemcachedで保持されています。
WebUIはセッション情報以外はなるべく「書かない」ようにしてあります。情報はAMIでAstDBから取得します>が、AstDBに対して書き込むのは[設定]等がクリックされた場合だけです。
なお、memcachedが使えない場合にはファイルで保存するようにフォールバックします。
memcachedはご存じの通りin-memoryのvolatileなデータストアです。WebUIで使用しているのはブラウザのセッション情報だけなので問題にはなりません。またよほど多数のユーザを登録し多数ログインするなど極端なことをしない限りはサイズも問題にはなりません。
お勧めの方法ではありますが追加のコンポーネントが必要なことと「わかりやすさ」を優先しているため、デフォルトではfileモードを提供しています。

ファイル編集

WebUIからファイルの生成(トランク設定など)やAsteriskの設定ファイルを編集したい場合には以下の手順で権限類を調整する必要があります。ただし

  • Asteriskの設定がよくわかっていること
  • WebUIからAsteriskシステムのファイルを編集するリスク
  • もし他のWebページやコンテンツがある場合に、Asteriskの設定が変更されるリスク
  • 以下の手順で何をやっているのか理解できる

これらを理解した上で利用してください。

ABS PanelというかABS自体はAsteriskのAstDBに設定値を持つことで動作が決定されています。このため『Asteriskの設定ファイルを直接変更する』ということは行いません。例えば内線の割り当てや付け替えのような操作に関してはAsteriskの設定ファイルを触る必要はありません。ですが、トランク設定等、Asteriskの動作に関わる部分は「sshでログインしてファイルを直接編集する」ような「わかっている人が操作する」ことを前提にしています。とはいえ、これは面倒だという人がいるのも事実なのでWebUIにファイル編集機能を持たせてあります。

DebianではWebサーバはwww-data:www-dataというユーザ/グループで動作しています。Asteriskはここまでの設定であればasterisk:asteriskで動作します。WebUIからAsteriskの設定ファイルを編集させるには、Asteriskグループにwww-dataを所属させます。

usermod -aG asterisk www-data

Webサーバを再起動します

systemctl restart apache2

/etc/asteriskにグループでの書き込みを許可します

chmod -R g+w /etc/asterisk

WebUI(ABS Panel)にログインし、[管理機能]->[システム設定]から「ファイル編集機能」を有効にします。
[ツール]->[ファイル編集]でファイル編集機能を試します。新規作成の個所でsample.txt等のファイル名を入 れ新規作成し、保存して正しくファイルが作成/編集できることを確認します。

二重ログインの禁止と対処

新バージョンのWebUIでは複数のブラウザからの同時ログインを禁止しています。このため「ログアウトしないでブラウザを閉じた」や「別な場所でログインしたまま」などの場合に新規に入れないという問題が発生します。通常、自動ログアウト時間(デフォルト30分)を経過すると別な場所からログインできるようになるのですが、30分も待ってられないという場合には以下の対処でログインできます。ただし、サーバにsshログインできることが必要になります。

キャッシュモードがfileの場合

cache/ の下にあるセッションファイルを削除します。
ABS_PANELUSER_ユーザ名-session_id と ABS_PANELUSER_ユーザ名-last_activity がユーザに対応するファイルです。

キャッシュモードがmemcachedの場合

memcachedを他の用途に使っていないのであれば単純にsystemctl restart memcachedでmemcachedを再起動しクリアしてしまいます。
他の用途にも使っていて再起動できない場合にはtelnetやnc等で操作し、該当するキーを削除してください。

get ABS_PANELUSER_admin-session_id
VALUE ABS_PANELUSER_admin-session_id 0 26
50kbc2fnq71dina0abbapn62kt
END
get ABS_PANELUSER_admin-last_activity
VALUE ABS_PANELUSER_admin-last_activity 1 10
1757488148
END

ファイルの場合と同様、ABS_PANEL_USER_ユーザ名のキーを持ちます。これらを削除すればログインできるようになります。