Хочется поднять АТС на Raspberry Pi 3 Model B

Posted by

Подумываю, а чтобы такого еще можно сделать с полезностью купленного миникомпьютера и тут озираясь вокруг своего рабочего места мой взор пал на экран мониторинга где все было хорошо, в частности сервер телефонии даже и не подумывал чтобы потревожить меня в столь ранний час. О, эврика, а что есть поднять минисервер телефонии на миникомпьютере Raspberry Pi 3 Model. Это же возможно, ведь на борту ось на базе Debian, а значит привычные команды установки, как в моих рабочих заметках под Ubuntu.

Итак, задача ясна, связку под сервис телефонии буду поднимать с использованием пакетов: asterisk + (Web-интерфейс), но по используемым ресурсам все же лучше взять только Asterisk (но это я после разберу).

Текущая модель моего миникомпьютера имеет следующие характеристики:

  • CPU = 1 (4 Cores)
  • RAM = 1Gb
  • HDD = 8Gb (Использую Class 10, но если возникнет надобность то карту возьму по больше).

В своих заметках я стараюсь делать акцент, что сделанное самолично намного полезнее (для меня), чем взятое, как готовый образ и развернутое как отдельная VM. Но конечно же не исключаю такую возможность, ведь учиться надо же, как было у других.

Установливаю образ Raspberry на карту MicroSD и настраиваю систему по заметке, а далее

за основу беру свою заметку:

Увеличиваем размер swap файла со 100Мб до 512Мб:

pi@raspberrypi:~ $ sudo nano /etc/dphys-swapfile

#CONF_SWAPSIZE=100

CONF_SWAPSIZE=512

pi@raspberrypi:~ $ sudo reboot

pi@raspberrypi:~ $ sudo rm -Rf /var/lib/apt/lists/

pi@raspberrypi:~ $ sudo apt-get update && sudo apt-get upgrade -y

pi@raspberrypi:~ $ uname -a && lsb_release -a

Linux raspberrypi 4.4.50-v7+ #970 SMP Mon Feb 20 19:18:29 GMT 2017 armv7l GNU/Linux

No LSB modules are available.

Distributor ID: Raspbian

Description: Raspbian GNU/Linux 8.0 (jessie)

Release: 8.0

Codename: jessie

pi@raspberrypi:~ $ sudo tasksel install web-server

pi@raspberrypi:~ $ sudo apt-get install libmysqlclient18 asterisk-dev asterisk-mysql asterisk-moh-opsound-wav php-db selinux-utils audiofile-tools bison libset-intspan-perl curl openssl php5-gd php5 libapache2-mod-php5 php5-mysql lame sox libxml2 mysql-server mysql-client subversion dahdi-* -y

New password for the MySQL "root" user: 712mbddr@

Repeat password for the MySQL "root" user: 712mbddr@

pi@raspberrypi:~ $ sudo nano /etc/apache2/apache2.conf

ServerName pi

pi@raspberrypi:~ $ sudo svn co http://svn.freepbx.org/freepbx/branches/2.11 /var/www/freepbx

pi@raspberrypi:~ $ mysql -u root -p712mbddr@ -e "create database asterisk"

pi@raspberrypi:~ $ mysql -u root -p712mbddr@ -e "create database asteriskcdrdb"

pi@raspberrypi:~ $ mysql -u root -p712mbddr@ -e "grant all privileges on asterisk.* to asteriskuser@localhost identified by 'asterpass'"

pi@raspberrypi:~ $ mysql -u root -p712mbddr@ -e "grant all privileges on asteriskcdrdb.* to asteriskuser@localhost identified by 'asterpass'"

pi@raspberrypi:~ $ mysql -u root -p712mbddr@ -e "flush privileges"

pi@raspberrypi:~ $ mysql -u root -p712mbddr@ asterisk < /var/www/freepbx/SQL/newinstall.sql

pi@raspberrypi:~ $ mysql -u root -p712mbddr@ asteriskcdrdb < /var/www/freepbx/SQL/cdr_mysql_table.sql

pi@raspberrypi:~ $ sudo nano /etc/apache2/envvars

#export APACHE_RUN_USER=www-data

#export APACHE_RUN_GROUP=www-data

export APACHE_RUN_USER=asterisk

export APACHE_RUN_GROUP=asterisk

pi@raspberrypi:~ $ sudo service apache2 restart

pi@raspberrypi:~ $ sudo pear uninstall DB

uninstall ok: channel://pear.php.net/DB-1.7.14

pi@raspberrypi:~ $ sudo pear install db-1.7.14

pi@raspberrypi:~ $ sudo rm /var/www/html/index.html

pi@raspberrypi:~ $ sudo nano /etc/apache2/sites-available/000-default.conf

DocumentRoot /var/www/

pi@raspberrypi:~ $ sudo service apache2 restart

pi@raspberrypi:~ $ sudo chown -Rf asterisk:asterisk /var/www/freepbx/

pi@raspberrypi:~ $ cd /var/www/freepbx/

pi@raspberrypi:/var/www/freepbx $ sudo ./install_amp --password=asterpass --webroot=/var/www

Enter the IP ADDRESS or hostname used to access the AMP web-admin:

[192.168.1.1] 10.7.8.53

После открываю браузер и обращаюсь к Web станице с IP адресом моего миникомпьютере для последующей настройки развернутой оснастки для телефонии: http://IP&DNS → меня переадресует на http://IP&DNS/admin/config.php где меня ожидает страница предустановки Web-интерфейса от FreePBX:

Страница предустановки FreePBX на Raspberry Pi 3 Model BПосле заполнения всех полей нажимаю: Set up my Account и все проходит успешно, меня встречает привычное меню входа для FreePBX оснастки:

Привычное окно входа в оснастку FreePBX

Нажимаю на FreePBX Administration, затем авторизуюсь с использованием учетной записи созданной шагами выше, в моем случае это:

  • Username: ekzorchik
  • Password: 712mbddr@

и нажимаю кнопку Continue.

После чего меня приветствует дефолтное меню Web-управления АТС которое представляет собой, связку: Asterisk + фронтенд FreePBX

pi@raspberrypi:~ $ sudo asterisk -V

Asterisk 11.13.1~dfsg-2+deb8u2

framework 2.11.0.43 Enabled

По аналогии с заметками моего основного домашне/рабочего блога устанавливаю необходимые модули для работы:

  • FreePBX Framework
  • System Dashboard
  • Core
  • Asterisk SIP Settings

Потребление ресурсов еще пока ничего не значит, вот когда я нагружу АТС на базе Raspberry Pi 3 Model B вот тогда и буду критиковать.

Текущее потребление ресурсов после установки еще не о чем не говорит

Заметил при перезапуске FreePBX ошибки в консоли:

pi@raspberrypi:~ $ sudo amportal restart

Please wait...

PHP Notice: Undefined offset: 8192 in /var/www/admin/libraries/utility.functions.php on line 383

STOPPING ASTERISK

Waiting for Asterisk to Stop Gracefully...

Asterisk Stopped

SETTING FILE PERMISSIONS

Permissions OK

Removing any dangling symlinks

Dangling symlinks removed

STARTING ASTERISK

Asterisk Started

Reloading Asterisk because of Dynamic Hints

По ошибке, вроде как данная версия фронтенда FreePBX не может корректно работать с установленной версией php, сейчас у меня:

pi@raspberrypi:~ $ php --version

PHP 5.6.29-0+deb8u1 (cli) (built: Dec 17 2016 06:04:43)

Copyright (c) 1997-2016 The PHP Group

Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

Но беда вот в чем, в текущих репозитариях системы Debian jessie только эта версия пакета интерпретатора php:

pi@raspberrypi:~ $ apt-cache show php5 | grep Version

Version: 5.6.29+dfsg-0+deb8u1

Как я понял из прочитанного по этой ошибке, просто в новой версии интерпретатора появились новые возможности, и вот на это и идет ругань, вообщем ничего критичного.

На заметку: Можно использовать данную АТС (Asterisk + FreePBX), как в связке с облачной АТС от Манго (для телефонов Cisco) или же купленного SIP аккаунта от Zadarma. Впрочем, навязывать свое мнение по использованию это не мое, так что каждый решает уже сам как использовать.

На заметку: если не ставить фронтенд, а использовать голый asterisk то свободных ресурсов будет больше.

И вот я выполнил свою задумку, в этом не помогли заметки моего блога (http://www.ekzorchik.ru) и желание реализовать задуманное. Теперь я буду тестировать как ведет себя данная АТС в домашнем использовании. А пока я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.