Установка и настройка телефонии Asterisk в Linux Ubuntu

Введение

Asterisk – бесплатное решение для организации voip телефонии. Он обладает всеми возможностями обычных АТС, но предоставляет более богатый функционал по управлению звонками. За относительную простоту настройки, по сравнению с цифровыми АТС, бесплатность и широкие возможности он и снискал такую популярность.

Freepbx – бесплатный веб интерфейс для управления астериском. Он существенно упрощает работу с конфигурациями, позволяет выполнять некоторые функции людям, вообще далеким от астериска. Например, с его помощью практически любого можно научить управлять учетными записями пользователей.

Лично я больше люблю настраивать asterisk вручную, нежели с помощью готовой панели. Да, конфигов астериск очень много, они объемные, работать с ними не удобно. Тем не менее, чистый астериск предоставляет практически неограниченную возможность по конфигурированию. С готовой панелью вы будете ограничены ее возможностями. Но если они вас полностью удовлетворяют, то лучше использовать ее.

Дальнейшая установка FreePBX будет проходить по следующей схеме:

  1. Подготовка системы.
  2. Установка MariaDB.
  3. Настройка Web сервера.
  4. Установка NodeJS.
  5. Установка Asterisk.
  6. Установка и настройка Freepbx.

Для отладки и тестирования работы voip я рекомендую сервис Zadarma. Плюс его в том, что после регистрации вы получите настройки пира для внутренней сети оператора. И внутри этой сети вы можете бесплатно звонить. Например, я одного пира регистрирую на sip клиенте смартфона и с него звоню на второй аккаунт, пир от которого настроен в астериске. Таким образом эмулирую внешний звонок. Удобно отлаживать различные конфигурации звонков, не требуя платного подключения.

Сборка Asterisk

Если Asterisk уже установлен и изначально не собирался с учетом MySQL, необходимо выполнить сборку снова. Сначала смотрим версию установленного Asterisk:

asterisk -V

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

Распаковываем архив и переходим в каталог с распакованным содержимым:

tar -xvf asterisk-*.tar.gz

cd asterisk-*

Конфигурируем исходник:

./configure … –with-mysqlclient

* где … — опции + with-mysqlclient, который отвечает для работу с MySQL.

Например:

./configure –prefix=/usr –sysconfdir=/etc –localstatedir=/var –libdir=/usr/lib64 –with-dahdi –with-pri –with-iconv –with-libcurl –with-speex –with-mysqlclient

Открываем окно дополнительных настроек:

make menuselect

В разделе Add-ons ставим все опции, связанные с mysql:

Выбираем Save & Exit.

Собираем исходник и устанавливаем его:

make

make install

Основные возможности «Астериска»

Рассмотрим базовые функции программной АТС «Астериск»:

  • Поддержка неограниченного количества телефонных номеров – приложение справится с любыми нагрузками даже при работе в крупных корпорациях;
  • Многоканальность – АТС позволяет принимать неограниченное количество звонков на один телефонный номер. Эта функция используется для организации call-центров и линий технической поддержки клиентов;
  • Поддержка номеров 8-800 и обычных виртуальных номеров – необходимо для приёма внешних звонков;
  • Запись телефонных разговоров – чаще всего эта функция необходима для решения конфликтных ситуаций. Данные сохраняются на локальный сервер и надёжно защищены от хищения;
  • Приоритеты, очереди звонков, распределение вызовов – стандартные возможности аппаратных, программных и облачных АТС;
  • Работа с факсимильными сообщениями – «Астериск» может отправлять и принимать факсы, до сих пор востребованные на территории России;
  • Видеосвязь и видеоконференции – организация рабочих совещаний в режиме онлайн с трансляцией видео;
  • Голосовые меню (IVR-меню) – используются для распределения звонков.

Также поддерживается интеграция с CRM для более удобной работы с клиентами.

Настройка веб сервера asterisk’a

sudo nano /etc/asterisk/http.conf

содержимое

http.conf

;
; Asterisk Builtin mini-HTTP server
;
;

;
; Whether HTTP interface is enabled or not.  Default is no.
;
enabled=yes
;
; Whether Asterisk should serve static content from http-static
; Default is no.
;
enablestatic=yes
;
; Address to bind to.  Default is 0.0.0.0
;
;bindaddr=127.0.0.1
;
; Port to bind to (default is 8088)
;
bindport=8088
;
; Prefix allows you to specify a prefix for all requests
; to the server.  The default is "asterisk" so that all
; requests must begin with /asterisk
;
;prefix=asterisk

; The post_mappings section maps URLs to real paths on the filesystem.  If a
; POST is done from within an authenticated manager session to one of the
; configured POST mappings, then any files in the POST will be placed in the
; configured directory.
;
;
;
; In this example, if the prefix option is set to "asterisk", then using the
; POST URL: /asterisk/uploads will put files in /var/lib/asterisk/uploads/.
;uploads = /var/lib/asterisk/uploads/
;

В Ubuntu 8.10 корневая директория веб сервера Asterisk’a располагается в /usr/share/asterisk/static-http/, а GUI устанавливается в /var/lib/asterisk/static-http, поэтому необходимо удалить пустую папку

sudo rmdir /usr/share/asterisk/static-http/

и создать ссылку

sudo ln -s /var/lib/asterisk/static-http/ /usr/share/asterisk/

Выполним проверку

sudo make checkconfig

по прежнему находимся в директории ~/asterisk-gui/2.0

Рестарт asterisk

sudo /etc/init.d/asterisk restart

Заходим в панель управления

http://<you ip>:8088/asterisk/static/config/index.html

Адрес входа в панель может отличаться в разных дистрибутивах. !Внимательно смотрите в чем разница!

http://<you ip>:8088/asterisk/static/config/index.html

http.conf

; Prefix allows you to specify a prefix for all requests
; to the server.  The default is "asterisk" so that all
; requests must begin with /asterisk
;
;prefix=asterisk
http://<you ip>:8088/static/config/index.html

http.conf

; Prefix allows you to specify a prefix for all requests
; to the server.  The default is blank.  If uncommented
; all requests must begin with /asterisk
;
;prefix=asterisk

“asterisk -r” : вызов консоли CLI

CLI> reload : перезагрузка конфигов (без обрыва текущих соединений)

Можно перезагрузить и так

asterisk -rx reload

Asterisk/1.4.21.2~dfsg-1ubuntu3

Asterisk GUI-version : SVN-branch-2.0-r4589

:8088/asterisk/static/config/cfgbasic.html

Перед установкой

В Линукс одна программа может зависеть от дополнительных модулей. И без них не будет работать. Поэтому надо скачать не одну утилиту, а несколько. Для Астериска нужны пакеты:

  • Взаимодействие с потоковыми интерфейсами ISDN. Например, с PRI, который нужен для связи с российскими операторами по E1.
  • Работа с цифровыми интерфейсами.

Они есть на сайте asterisk.org в разделе «Download». Там же указаны терминальные команды для загрузки исходников.

Перед установкой:

  1. Откройте консоль. Она в меню «Программы — Стандартные».
  2. Перед каждой командой ставьте «sudo».
  3. Обновите систему. Для этого напишите «apt-get upgrade» и нажмите Enter. Потом «apt-get update».
  4. Перезагрузите ОС командой «reboot».
  5. Синхронизируйте дату и время с официальным сервером — «apt-get install ntp».
  6. Получите права администратора — «sudo -i».

Для работы Asterisk нужны дополнительные библиотеки. Если вы ставите программу из репозитория, они должны догрузиться автоматически. Но при запуске из исходников необходимые пакеты придётся ставить вручную. Для этого используйте команду «apt-get install ». Название библиотек вводите через пробел. Понадобятся:

  • Apache Предназначен для работы с HTTP-серверами
  • OpenSSL. Криптографический инструмент.
  • LibSSL-Dev.
  • Build-Essential.
  • PHP Язык программирования, который используется для создания Web-приложений.
  • PHP5-MySQL.
  • Libxml2-Dev.
  • Subversion. Нужна для контроля версий.
  • Libncurses5-Dev.
  • Wget. С её помощью вы скачаете исходники с сайта разработчика.
  • Linux Headers. Для установки напишите не только название, но и параметры «linux-headers-$(uname -r)».

При загрузке система попросит ввести Root-пароль. У вас набор модулей может быть другим. Это зависит от того, какие пакеты у вас уже есть, и для каких целей вы будете использовать утилиту. Когда закончите с библиотеками, снова перезапустите систему. После этого можно устанавливать остальные зависимости.

Установка Asterisk на Ubuntu 16.04

Для сборки из исходников нам нужно будет выполнять большинство действий от имени суперпользователя, поэтому сразу же получим полные права в системе:

Обратите внимание, что если вы заходите зайти на свой сервер по ssh от имени root, то вам все равно придется подключаться от имени обычного пользователя, а уже потом переключаться в консоль root. Дальше вам нужно установить зависимости для работы программы:. apt-get install build-essential wget libssl-dev libncurses5-dev libnewt-dev libxml2-dev linux-headers-$(uname -r) libsqlite3-dev uuid-dev git subversion

apt-get install build-essential wget libssl-dev libncurses5-dev libnewt-dev libxml2-dev linux-headers-$(uname -r) libsqlite3-dev uuid-dev git subversion

Дальше мы можем перейти к сборке программы, сначала скачаем исходный код из официального сайта:

cd /usr/src $ wget downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz

Для распаковки исходников наберите:

tar zxvf asterisk-13-current.tar.gz

Дальше нам нужно перейти в папку с исходниками, но мы не знаем точную версию программы. У нас есть мажорная версия 13, но минорную версию мы не знаем. Поэтому используйте такую команду:

Перед тем как компилировать программу нам нужно собрать и установить pjproject. Сначала скачаем исходники:

git clone git://github.com/asterisk/pjproject pjproject $ cd pjproject $ ./configure –prefix=/usr –enable-shared –disable-sound –disable-resample –disable-v $ make dep make && make install $ ldconfig $ ldconfig -p|grep pj

Наконец теперь мы готовы выполнить сборку и установку Asterisk на Ubuntu 16.04:

cd .. contrib/scripts/get_mp3_source.sh $ contrib/scripts/install_prereq install

Эти команды позволят вам установить некоторые зависимости для проигрывания mp3. Выполнение может занять некоторое время, а также вам нужно будет ввести код страны. Дальше начинаем сборку:

./configure && make menuselect && make && make install

Когда установка будет завершена, выполните такую команду, чтобы не создавать сотни конфигурационных файлов вручную:

Чтобы установить скрипты инициализации, которые позволят запускать asterisk автоматически, при каждой загрузке выполните:

make config ldconfig

Теперь вы можете запустить сервер asterisk и убедится, что все действительно работает:

service asterisk start

И смотрим информацию про утилиту через терминал:

Если все было сделано правильно и установка Asterisk на Ubuntu 16.04 прошла успешно, то все будет работать.

Install Asterisk 16 on Ubuntu 18.04 / 16.04 & Debian 10/9

Below are the steps of installing Asterisk 16 on Ubuntu 20.04/18.04/16.04 & Debian 10/9.

Step 1: Update system

Start the installation of Asterisk 16 on Ubuntu 20.04/18.04/16.04 & Debian 10/9 by updating system to avoid any dependency issues:

Step 2: Install Asterisk 16 LTS dependencies

Once the system is up and updated, install all required Asterisk dependency packages:

If you get an error for subversion package on Ubuntu like below:

Then add universe repository and install subversion from it:

Step 3: Download Asterisk 16 LTS tarball

Since Asterisk 16 is not available from both Debian and Ubuntu upstream repositories, the installation will be done from source. Building from source enables you to build all the PBX features you want easily and have a custom VoIP system.

Download the latest release of Asterisk 16 LTS to your local system for installation.

Then extract the file:

Run the following command to download the mp3 decoder library into the source tree.

Ensure all dependencies are resolved:

You should get a success message at the end:

Step 4: Build and Install Asterisk 16 on Ubuntu 20.04/18.04/16.04 & Debian 10/9

Once you have downloaded Asterisk 16 tarball and install dependencies required, you should be ready to build Asterisk.

Run the configure script to satisfy build dependencies.

A success should have an output like below:

Setup menu options by running the following command:

Use arrow keys to navigate, and Enter key to select.

On Add-ons select and   as shown below

On Core Sound Packages, select the formats of Audio packets like below

For Music On Hold, select the following minimal modules

On Extra Sound Packages select as shown below:

Enable  under Applications menu.

You can change other configurations you see fit. When done, save and exit then install Asterisk with selected modules.

Then  build Asterisk by running:

Sample output:

When done, install Asterisk by running the command:

Sample output:

You can optionally install documentation:

Finally, install configs and samples.

A systemd service unit file for asterisk will be created.

Create Asterisk User

Create a separate user and group to run asterisk services, and assign correct permissions:

Set Asterisk default user to asterisk:

Restart asterisk service after making the changes:

Enable asterisk service to start on system  boot:

Service should be running without errors:

Test to see if you can connect to Asterisk CLI:

If you have an active ufw firewall, open http ports and ports 5060,5061:

That’s it!. You now have Asterisk 16 LTS installed on your Ubuntu 20.04/18.04/16.04 & Debian 10/9 server.

Next article to read is: How to Install FreePBX 15 on Ubuntu / Debian

I highly recommend you read How to secure Asterisk and FreePBX from VoIP Fraud and Bruteforce attacks

You can support us by downloading this article as PDF from the Link below.

Call Detail Record (CDR)

Теперь настроем хранение журнала вызовов в базе данных.

Открываем следующий файл:

vi /etc/asterisk/cdr_adaptive_odbc.conf

Добавляем в самый низ:

connection=asterisk-conf
table=cdr
alias src => source
alias channel => source_channel
alias dst => dest
alias dstchannel => dest_channel

Перезапускаем астериск:

systemctl restart asterisk

Пробуем позвонить через наш астериск и после звонка смотрим записи в базе:

mysql -uasteruser -pasterpassword123 -e “SELECT * FROM cdr”

Получим примерно следующее:

| accountcode | src  | dst  | dcontext  | clid          | channel           | dstchannel        | lastapp | lastdata    | start               | answer | end                 | duration | billsec | disposition | amaflags      | userfield | uniqueid     | linkedid     | peeraccount | sequence |
+————-+——+——+———–+—————+——————-+——————-+———+————-+———————+——–+———————+———-+———+————-+—————+———–+————–+————–+————-+———-+
| NULL        | 1001 | 1004 | outcaling | “1001” <1001> | SIP/1001-00000000 | SIP/1004-00000001 | Dial    | SIP/1004,,m | 2017-12-07 16:11:24 | NULL   | 2017-12-07 16:11:32 |        7 |       0 | NO ANSWER   | DOCUMENTATION | NULL      | 1512652284.0 | 1512652284.0 | NULL        |        0 |

Или в более читаемом виде:

ПолеПример значенияОписание поля
accountcodeNULLДополнительное поле для идентификации клиента. Может использоваться, если не хватает стандартного набора параметров.
src1001Кто звонит.
dst1004Кому позвонили.
dcontextoutcalingКонтекст (группа правил обработки звонка).
clid“1001” <1001>Caller identification или CID. Состоит из имени и номера звонящего.
channelSIP/1001-00000000Канал, который принимает вызов.
dstchannelSIP/1004-00000001Канал исходящего вызова.
lastappDialDialplan обработки вызова.
lastdataSIP/1004,,mЧто передавалось в lastapp.
start2017-12-07 16:11:24Начало звонка.
answerNULLВремя, за которое подняли трубку. NULL — трубку не подняли.
end2017-12-07 16:11:32Дата и время окончания звонка.
duration7Длительность звонка в секундах.
billsecВремя разговора (с момента поднятия трубки).
dispositionNO ANSWERСостояние вызова. Возможные варианты:
– ANSWERED – отвечен.
– NO ANSWER – ответа нет.
– CONGESTION / FAILED – ошибка вызова.
– BUSY – занято.
amaflagsDOCUMENTATIONНе используется.
userfieldNULLПользовательские параметры для канала.
uniqueid1512652284.0Уникальный идентификатор канала звонящего.
linkedid1512652284.0Уникальный идентификатор канала звонящего.
peeraccountNULLКод учетной записи канала Стороны 2.
sequenceНомер последовательности канала.

Также существуют продукты, позволяющие в графическом интерфейсе смотреть CDR. Например, веб-приложение Asterisk CDR Viewer Mod.

Подготовка сервера

Устанавливаем на сервер необходимые пакеты. Скажу честно, я точно не знаю, нужны ли они все. Список подсмотрел у себя, но он явно избыточный, так как там еще и freepbx ставится. Заглянул еще в несколько руководств и сделал компиляцию, убрав то, что сразу показалось лишним. Думаю, тут есть еще что-то лишнее, например libsqlite3-dev, но на 100% не уверен, а проверять каждый пакет не хочется.

# apt-get install build-essential autoconf libncurses5-dev libssl-dev libxml2-dev libsqlite3-dev libmysqlclient-dev curl mpg123 libxml2 libxml2-dev libaudiofile-dev subversion sox libsox-fmt-all uuid-dev libjansson-dev libiksemel-dev libssl-dev libtiff5-dev mysql-client libmyodbc lame linux-headers-`uname -r` mysql-server mysql-client libtool

Дожидаемся установки всех пакетов. В процессе будет задан вопрос с паролем root для mysql, так что не уходите далеко от консоли. Параллельно можно пока скачать исходники необходимых программ – pjproject, jansson.

# cd /usr/src
# wget http://www.pjsip.org/release/2.4/pjproject-2.4.tar.bz2
# wget -O jansson.tar.gz https://github.com/akheron/jansson/archive/v2.7.tar.gz

После установки пакетов, приступаем к сборке pjproject и jansson:

# cd /usr/src
# tar -xjvf pjproject-2.*
# cd pjproject-2.*
# CFLAGS='-DPJ_HAS_IPV6=1' ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr --libdir=/usr/lib64
# make dep
# make
# make install
# cd /usr/src
# tar vxfz jansson.tar.gz
# cd jansson-*
# autoreconf -i
# ./configure --libdir=/usr/lib64
# make
# make install

На этом подготовка сервера к установке asterisk 13 закончена. Приступаем к самому главному.

CDR и подключение к базе данных

В моем случае, не работало ведение CDR, а при вводе в консоли asterisk команды:

> odbc show

… я увидел:

ODBC DSN Settings
—————–
  Name:   asteriskcdrdb
  DSN:    MySQL-asteriskcdrdb
    Last fail connection attempt: 2021-05-08 10:25:52
    Number of active connections: 0 (out of 5)
    Logging: Disabled

То есть, нет подключения к базе данных asteriskcdrdb. А при попытке подключиться к нужному DSN из командной строки:

isql -v MySQL-asteriskcdrdb

… я получил ошибку:

Can’t open lib ‘/usr/lib64/libmyodbc5.so’ : file not found

То есть, проблема в отсутствии необходимой бибилиотеки при подключении к базе данных.

Нам необходимо выполнить 2 действия:

  1. Установить коннектор ODBC.
  2. Изменить драйвер для подключения к СУБД в odbc.ini.

Так как в данной инструкции мы используем в качестве севера баз данных MariaDB, нам необходим соответствующий коннектор. Для его установки воспользуемся инструкцией .

После открываем файл:

vi /etc/odbc.ini

Задаем новое значение для параметра driver:

driver=MariaDB

* список доступных драйвером можно посмотреть в файле /etc/odbcinst.ini.

Перезапускаем asterisk:

systemctl restart asterisk

После можно проверить, что Asterisk подключился к базе:

> odbc show

Мы должны увидеть:

ODBC DSN Settings
—————–
  Name:   asteriskcdrdb
  DSN:    MySQL-asteriskcdrdb
    Number of active connections: 1 (out of 5)
    Logging: Disabled

Установка GUI

Создание папки, где будут размещаться установочные файлы GUI и его загрузка с помощью утилиты svn

mkdir ~/asterisk-gui
cd ~/asterisk-gui/
svn export http://svn.digium.com/svn/asterisk-gui/branches/2.0/
cd 2.0/

Конфигурирование и установка

./configure
sudo make install

установочная директория GUI /var/lib/asterisk/

на нее должны быть права у пользователя asterisk

Так как установка была от пользователя root, установим владельца и группу asterisk – на всю директорию

sudo chown asterisk:asterisk -R /var/lib/asterisk/

Настроим доступ для управления asterisk’ом с конфигурацией для пользователя admin и паролем 1234

sudo nano /etc/asterisk/manager.conf

содержимое

manager.conf

;
; Asterisk Call Management support
;

; By default asterisk will listen on localhost only.

enabled = yes
port = 5038
;bindaddr = 127.0.0.1
webenabled = yes

; No access is allowed by default.
; To set a password, create a file in /etc/asterisk/manager.d
; use creative permission games to allow other serivces to create their own
; files
;include "manager.d/*.conf"


secret = 1234
read = system,call,log,verbose,command,agent,user,config
write = system,call,log,verbose,command,agent,user,config

Fix Ubuntu/Debian Paths

Debian and Ubuntu use /usr/share/asterisk for things like MOH and Sounds. As sounds are now controlled by FreePBX, you need to delete the system sounds, and link them to the correct location.

rm -rf /var/lib/asterisk/moh
ln -s /usr/share/asterisk/moh /var/lib/asterisk/moh
rm -rf /usr/share/asterisk/sounds
ln -s /var/lib/asterisk/sounds /usr/share/asterisk/sounds
chown -R asterisk.asterisk /usr/share/asterisk

Download and Install FreePBX 14.

cd /usr/src
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-14.0-latest.tgz
tar zxf freepbx-14.0-latest.tgz
cd freepbx
./install -n

Плюсы и минусы АТС «Asterisk»

Недостатки найдутся у любого, даже самого надёжного и продуманного программного обеспечения. Нашлись они и у программной АТС «Asterisk». Все найденные достоинства и недостатки мы представили в виде таблицы:

ПреимуществаНедостатки
Экономия, обеспечиваемая использованием данного ПО. Для запуска телефонии достаточно не самого мощного компьютера, а для подключения рабочих мест можно использовать программные телефоны с гарнитурами.Необходимость самостоятельно обеспечивать безопасность АТС, имеющей выход в интернет – у облачных провайдеров свои специалисты. В случае применения АТС Астериск необходимо нанять грамотного IT-специалиста.
Возможность подключения удалённых офисов, располагающихся в любой точке мира. И всё это бесплатно, оплачиваются только доступ в интернет и услуги VoIP-провайдеров, предоставляющих услуги IP-телефонии для связи с внешним миром (в качестве альтернативы можно использовать платы с портами FXO для подключения телефонных линий).Сложность в администрировании – как и каждый гибкий инструмент, АТС потребует специфических знаний, которые можно почерпнуть на профильных форумах.
Масштабируемость – АТС поддерживает неограниченное количество номеров и каналов, благодаря чему может обеспечить телефонией компанию любого размера. Дополнительные функции реализуются покупкой плат расширения и написания дополнительных модулей для реализации нестандартных задач.Отсутствие гибкого UI (визуального интерфейса), способного открыть доступ к максимальному количеству настроек.

Что касается экономии денежных средств, то самый простой блок аппаратной АТС стоит около 50 тыс. рублей, причём на ограниченное число абонентов – расширение обойдётся в дополнительные деньги. При использовании АТС «Астериск» затраты составят от 0 рублей – за АТС платить не нужно, надо лишь найти подходящий компьютер, установить на него Linux и программное обеспечение.

Установка и настройка Freepbx

Скачиваем последнюю версию Freepbx с сайта разработчика.

# cd ~ && wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-15.0-latest.tgz

Распаковываем исходники.

# tar xvfz freepbx-*.tgz

Переходим в каталог freepbx и запускаем скрипт проверки запуска asterisk.

# cd freepbx && ./start_asterisk start

Если не получили ошибок, то запускаем установку непосредственно FreePBX.

# ./install -n

Если получили ошибку php:

PHP Fatal error: Uncaught Error: Call to a member function connected() on null in /root/freepbx/amp_conf/htdocs/admin/libraries/BMO/Framework.class.php:180

Запустите установку еще раз

# ./install -n

Она должна пройти без ошибок, но freepbx не будет работать корректно, так как не сможет подключиться к asterisk. После повторной установки надо открыть конфиг /etc/asterisk/manager.conf и в конце строки

#include manager_additional.conf
#include manager_custom.conf

заменить на

;include manager_additional.conf
;include manager_custom.conf

И убедиться, что указан параметр secret с паролем amp111. Если это не так, отредактируйте строку.

secret = amp111

Если этого параметра вообще нет, то добавить в секцию . После этого надо еще раз запустить установку freepbx, в третий раз. После этого ошибок быть не должно и freepbx будет корректно работать.

Если все прошло без ошибок, то можно проверять работу Freepbx. Но перед этим отключим Firewall, если он у вас работает.

# systemctl stop firewalld && systemctl disable firewalld

Я не хочу в этой статье касаться его настройки. Подробно вопрос настройки firewall я рассмотрел отдельно. Там можно узнать все нюансы. Здесь же я прото скажу, что для начала нам нужно открыть 80-й порт, чтобы мы смогли работать с веб интерфейсом:

iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Для полноценной работы астериск, нужно открыть следующие порты:

iptables -A INPUT -p udp -m udp --dport 5060 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 5061 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5060 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5061 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 4569 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5038 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 5038 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT

Теперь можно запустить httpd.

# systemctl start httpd

Добавляем его в автозагрузку:

# systemctl enable httpd

На этом установка закончена Freepbx. Можно зайти браузером на страницу с ip адресом сервера. У меня это http://85.143.175.176 Открывается начальная страница freepbx, где нам предлагается создать нового пользователя:

Создаем пользователя и заходим в web интерфейс управления астериском:

Вот и все, дальше можно заниматься настройкой. Раньше следующим разделом шла информация по автозагрузке freepbx, но в данный момент эта информация неактуально. Отдельно автоазгрузку для freepbx настраивать не надо. Она по дефолту автоматически запускается при старте системы.

Шаг 1. Загрузите и установите Asterisk

Чтобы установить Asterisk, вам необходимо установить несколько базовых пакетов. Чтобы установить эти пакеты, выполните следующие команды:

Поскольку мы собираемся вручную загружать пакеты Asterisk, давайте поместим их в системный /usr/src каталог, поскольку именно в нем хранится большинство исходных файлов.

Для этого перейдите в /usr/src каталог и загрузите Asterisk.

Чтобы получить последнюю версию Asterisk, посетите репозиторий пакетов здесь . Затем замените номер версии в приведенных ниже командах на последний.

На момент подключения текущая версия 17.

После загрузки файла Asterisk извлеките его, затем перейдите в соответствующий каталог и запустите сценарий установки, который загрузит и установит все зависимости, включая модули MP3.

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

Затем выполните приведенные ниже команды, чтобы настроить и выполнить некоторые проверки и убедиться, что все в порядке.

После успешного завершения он должен отобразить строки, подобные приведенным ниже:

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

Поскольку мы хотим использовать MP3 в качестве аудиоформата и уже загрузили его модуль выше, выберите, format_mp3 как показано на изображении ниже:

Когда вы закончите, нажмите F12, чтобы сохранить и выйти, или переключитесь на кнопку «Сохранить и выйти» и нажмите Enter.

Когда все будет готово, выполните следующие команды, чтобы начать процесс компиляции.

В зависимости от вашей системы компиляция может занять некоторое время. -jФлаг с номером обозначает число процессоров на сервере. Если на вашем сервере больше двух ядер ЦП, замените его на это.

Как только пакеты и модули скомпилированы, вы должны увидеть сообщение об успешном завершении, подобное приведенному ниже:

После компиляции, описанной выше, вы, наконец, можете установить Asterisk, выполнив следующие команды:

После установки вы должны увидеть сообщение, подобное приведенному ниже:

Установка завершена.

Теперь вы можете приступить к настройке вашей системы. Сначала вы можете добавить несколько примеров данных, которые помогут вам настроить вашу платформу. Для этого выполните следующие команды:

Завершите настройку, выполнив следующие команды:

Freepbx: настройка с нуля

Интерфейс Freepbhx нужен для более простой настройки Asterisk и управления VoIP-телефонией. Главное преимущество – человеку не надо исправлять самому все текстовые файлы. Эта программа помогает переводить язык программы в виде текста, который поймет пользователь. Для настройки Freepbhx надо установить программу на компьютер.

Для того чтобы установить интерфейс, требуется:

  1. Скачать FreePBX 13 Distro. Выбирать версию, опираясь на программное обеспечение компьютера.
  2. Записать образ системы на диск, используя утилиты.
  3. Изменить параметры загрузки системы.
  4. С этого диска загрузить машину.
  5. Выбрать версию PBX.
  6. Выбрать режим Full install
  7. Нажать ВК.
  8. Придумать и установить пароль.
  9. Перезагрузить компьютер и заходить в аккаунт как пользователь с root-правами.

Замечание! Чтобы зайти с другого компьютера, нужно ввести IP-адрес и снова задать логин и пароль.

Настройка

СУБД

Подключаемся к MariaDB:

mysql -u root -p

Создаем базу данных и пользователя:

> CREATE DATABASE asterisk DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

> GRANT ALL PRIVILEGES ON asterisk.* TO ‘asteruser’@’localhost’ IDENTIFIED BY ‘asterpassword123’;

* данными командами мы создали базу данных asterisk и предоставили к ней доступ пользователю asteruser с паролем asterpassword123.

Загружаем данные в базу:

> use asterisk

> source /usr/src/asterisk-15.1.2/contrib/realtime/mysql/mysql_config.sql

> source /usr/src/asterisk-15.1.2/contrib/realtime/mysql/mysql_cdr.sql

* где /usr/src/asterisk-15.1.2 — путь до распакованного исходника.

> \q

ODBC коннектор

Кликаем по Download и копируем ссылку на скачивание файла:

В командной строке скачиваем файл, воспользовавшись ссылкой:

wget https://dev.mysql.com/get/Downloads/Connector-ODBC/5.3/mysql-connector-odbc-5.3.9-linux-ubuntu16.04-x86-64bit.tar.gz

Распаковываем архив и переходим в него:

tar -xvf mysql-connector-odbc-*.tar.gz

cd mysql-connector-odbc-*

Копируем драйверы:

cp lib/libmyodbc5* /usr/lib64

Устанавливаем odbc драйвер:

./bin/myodbc-installer -d -a -n “MySQL” -t “DRIVER=/usr/lib64/libmyodbc5w.so;”

Для подключения астериска к базе, создаем DSN:

./bin/myodbc-installer -s -a -c2 -n “Asterisk” -t “DRIVER=MySQL;SERVER=127.0.0.1;DATABASE=asterisk;UID=asteruser;PWD=asterpassword123”

* где MySQL — имя драйвера, который мы создали на предыдущем шаге; asterisk, asteruser, asterpassword123 — соответственно, имя базы данных, имя пользователя и пароль для подключения к СУБД.
* в случае необходимости, отредактировать DSN можно в файле /etc/odbc.ini.

Делаем тестовое подключение:

isql Asterisk

+—————————————+
| Connected!                            |
|                                       |
| sql-statement                         |
| help                      |
| quit                                  |
|                                       |
+—————————————+

SQL> show tables

+————————————————————————–+
| Tables_in_asterisk                                                       |
+————————————————————————–+
| alembic_version                                                          |
| cdr                                                                      |
| extensions                                                               |
| iaxfriends                                                               |
| meetme                                                                   |

SQL> quit

Asterisk

Открываем конфигурационный файл с настройкой модулей:

vi /etc/asterisk/modules.conf

Добавляем в него следующие строки:

preload => res_odbc.so
preload => res_config_odbc.so

Настраиваем подключение к базе через DSN:

vi /etc/asterisk/res_odbc.conf

enabled         => yes
dsn             => Asterisk
username        => asteruser
password        => asterpassword123
pre-connect     => yes
max_connections => 100
sanitysql       => select 1

Перезапускаем Asterisk:

systemctl restart asterisk

Подключаемся к его консоли:

asterisk -r

Проверяем, что астер увидел odbc:

odbc show

Заключение

Мы установили оригинальную версию asterisk 16 на сервер под управлением debian 10 без каких-либо дополнений и web панелей. Дальше можно приступать к настройке. Я рекомендую воспользоваться моей инструкцией по базовой настройке asterisk с нуля. Там подробно рассказано как сконфигурировать основной функционал, который удовлетворит потребности в телефонии для среднестатистического офиса. Настройка включает в себя так же запись разговоров и подробную статистику звонков.

Напоминаю, что данная статья является частью единого цикла статьей про сервер Debian.

Онлайн курс “DevOps практики и инструменты”

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.

Проверьте себя на вступительном тесте и смотрите программу детальнее по .

Выводы

Вот и все. Установка Asterisk 13 на Ubuntu 16.04 завершена. Теперь вы можете перейти к дальнейшей настройке сети для совершения звонков между вашими абонентами прямо через интернет. В качестве клиентского программного обеспечения можно использовать любую программу, поддерживающую нужные протоколы, например Jitsi или Linphone.

Добрый день, в этой статье я расскажу как установить самый популярный сервер VoIP телефонии Asterisk. С помощью данного сервера Вы сможете организовать телефонию в офисе, дома, или реализовать автоматическое оповещение, но об этом я расскажу в других статьях. И так приступим к установки asterisk на ubuntu server.

Установить Asterisk на Ubuntu Server крайне просто, понадобится всего одна команда:

Первым делом после установки Asterisk, необходимо отключить возможность принимать звонки анонимно. Для этого открываем файл sip.conf и снимаем комментарий со строки allowguest=no, так как по умолчанию там стоит Yes. Кстати для поиска данной строки в nano можно нажать Ctrl+W и ввести искомую часть строки и нажать на Enter, если таких слов несколько в тексте то, для продолжения поиска нажать Ctrl+W и Enter.

В этом же файле можем указать провайдеров VoIP и своих внутренних абонентов. Я использую оператора it-sekret, так как у него дешевые звонки it-sekret.ru . Для этого в конце файла добавляем

Для оператора:

type=peer
context=it-sekret
host=xxx.it-sekret.ru
username=USERNAME
secret=PASSWORD
fromuser=USERNAME
nat=force_rport
insecure=port,invite

Если у оператора нужна постоянная регистрация, например для входящих вызовов, то надо написать вот такую строку

Где userID это имя пользователя выданное оператором и PASSWORD это пароль, xxx.it-sekret.ru адрес сервера выданный оператором.

Создаем внутреннего абонента:

type=friend
context=internal
host=dynamic
username=1001
secret=1234

После добавления этих записей сохраняем файл и выходим. Для того, чтоб применить настройки необходимо либо перезапустить сервер, либо сказать ему, чтоб он перечитал настройки. Этот способ лучше, так как если сервер у Вас действующий, то звонки которые сейчас идут не оборвутся.

Поделитесь в социальных сетях:FacebookXВКонтакте
Напишите комментарий