Установка Asterisk + Freepbx на Debian/Ubuntu

В настоящее время большую популярность получил сервер голосовой связи Asterisk. Удобнее всего им управлять с помощью web панели администрирования Freepbx. Вопросом установки и настройки этого инструмента я бы и хотел заняться в этой статье. За основу возьмем сервер Debian 8. Установка на сервер Ubuntu будет аналогична с точностью до каждой команды с сервером Debian.

Онлайн-курс по устройству компьютерных сетей

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Если вы еще не определились, как вам лучше настраивать и использовать астериск, рекомендую мою статью - asterisk - настройка с нуля для малого и среднего офиса. Рассмотрен основной функционал, который необходим для эффективной работы. Инструкция подробная, по шагам, от и до: от установки до записи разговоров и статистики звонков.

Что такое Freepbx

FreePBX - это удобный GUI (графический интерфейс пользователя), который управляет Asterisk - самым популярным общедоступным программным обеспечением в области компьютерной телефонии. FreePBX является продуктом Open Source, он разработан тысячами добровольцев по всему миру.

На сегодня FreePBX загружен более чем 5 000 000 раз и обслуживает более чем 500 000 активных телефонных систем. Если Вы никогда не слышали про FreePBX, то, вероятно, будете удивлены ее возможностями для Вашего бизнеса.

FreePBX - это основанный на web интерфейс, который позволяет управлять самым популярным на сегодняшний день сервером ip телефонии asterisk. FreePBX выпускается под лицензией GNU и может свободно использоваться конечными пользователями без какого-либо ограничения. Данный продукт является компонентом FreePBX Distro и некоторых других дистрибутивов.

Первый релиз системы 0.2 (28 ноября 2004 года) был назван AMP (Asterisk Management Portal). Но имя пришлось изменить, так как Asterisk является зарегистрированной торговой маркой Digium corporation.

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

Поддерживаемое оборудование включает в себя устройства компаний Aastra Technologies, Algo, AND, AudioCodes, Cisco Systems, Cyberdata, Digium, Grandstream, Mitel, Panasonic, Polycom, Sangoma, Snom, Xorcom, and Yealink.

Что такое Freepbx Distro

FreePBX Distro - open source дистрибутив Linux на базе популярной операционной системы CentOS. Его можно использовать для быстрого разворачивания сервера Asterisk и панели управления Freepbx. Это вариант удобен для тех, кто не очень разбирается в linux и не хочет тратить время на ручную установку всех компонентов, необходимых для полноценной установки freepbx на отдельный сервер.

FreePBX Distro, в отличие от Elastix, выпускается самими разработчиками FreePBX, поэтому более динамично развивается и чаще выпускаются обновления. В него встроены Fail2Ban и IPTables, работает русский язык из коробки, настроен LAMP (Linux/Apache/MySQL).

Я не буду в данной статье касаться настройки системы из этого дистрибутива. Это тема отдельного разговора. Хотя там и говорить особо нечего, установка проходит достаточно просто и быстро.

Подготовка к установке Freepbx

Приступим к установке Freepbx. Предварительно, если вы еще не сделали, вам необходимо установить Debian сервер, а потом его настроить. Мы будем устанавливать на сервер следующей версии:

# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 8.0 (jessie)
Release: 8.0
Codename: jessie

Первым делом устанавливаем зависимости:

# apt-get install -y build-essential linux-headers-`uname -r` openssh-server apache2 mysql-server mysql-client bison flex php5 php5-curl php5-cli php5-mysql php-pear php-db php5-gd curl sox libncurses5-dev libssl-dev libmysqlclient-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git subversion unixodbc-dev uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libcurl4-openssl-dev libical-dev libneon27-dev libsrtp0-dev libspandsp-dev libiksemel-dev libiksemel-utils libiksemel3

Инсталлируем PearDB:

# pear uninstall db
uninstall ok: channel://pear.php.net/DB-1.7.14
# pear install db-1.7.14
WARNING: "pear/DB" is deprecated in favor of "pear/MDB2"
downloading DB-1.7.14.tgz ...
Starting to download DB-1.7.14.tgz (133,103 bytes)
.............................done: 133,103 bytes
install ok: channel://pear.php.net/DB-1.7.14

Перезагружаем сервер:

# shutdown -r now

Установка asterisk 13

# cd /usr/src
# wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
# wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz
# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
# git clone https://github.com/akheron/jansson.git
# wget http://www.pjsip.org/release/2.2.1/pjproject-2.2.1.tar.bz2

Собираем и ставим DAHDI:

# tar xvfz dahdi-linux-complete-current.tar.gz
# cd dahdi-linux-complete-*
# make all
# make install
# make config

Собираем и ставим LIBPRI:

# cd /usr/src
# tar xvfz libpri-1.4-current.tar.gz
# cd libpri-*
# make
# make install

Компилируем и устанавливаем pjproject

# cd /usr/src
# tar -xjvf pjproject-2.2.1.tar.bz2
# cd pjproject-2.2.1
# CFLAGS='-DPJ_HAS_IPV6=1' ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr
# make dep
# make
# make install

Компилируем и устанавливаем jansson

# cd /usr/src/jansson
# autoreconf -i
# ./configure
# make
# make install

Собираем и ставим Astersik 13:

# cd /usr/src
# tar xvfz asterisk-13-current.tar.gz
# cd asterisk-13.4.0
# ./configure

Если вылезает ошибка:

configure: error: *** uuid support not found (this typically means the uuid development package is missing)

Делаем следующее:

# contrib/scripts/install_prereq install

Выскочит окно, указываем код 7, если вы из России:
lipvpb0
Продолжаем сборку:

# ./configure

Если все прошло без ошибок, продолжаем:

# contrib/scripts/get_mp3_source.sh
# make menuselect

Установка Asterisk
Выбираем отмеченные мной модули и продолжаем:

# make
# make install
# make config
# ldconfig

Устанавливаем дополнительные звуки:

# mkdir -p /var/lib/asterisk/sounds
# cd /var/lib/asterisk/sounds
# wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-extra-sounds-en-wav-current.tar.gz
# tar xfz asterisk-extra-sounds-en-wav-current.tar.gz
# rm -f asterisk-extra-sounds-en-wav-current.tar.gz
# wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-extra-sounds-en-g722-current.tar.gz
# tar xfz asterisk-extra-sounds-en-g722-current.tar.gz
# rm -f asterisk-extra-sounds-en-g722-current.tar.gz

Установка Freepbx 12

# cd /usr/src
# wget http://mirror.freepbx.org/freepbx-12.0.43.tgz
# tar xvfz freepbx-12.0.43.tgz

Создаем нового пользователя Asterisk:

# useradd -m asterisk
# chown asterisk. /var/run/asterisk
# chown -R asterisk. /etc/asterisk
# chown -R asterisk. /var/{lib,log,spool}/asterisk
# chown -R asterisk. /usr/lib/asterisk
# rm -rf /var/www/html

Вносим изменения в конфиг apache:

# sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php5/apache2/php.ini
# cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_orig
# sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf
# service apache2 restart

Настраиваем базу данный mysql:

# mysqladmin -u root -p create asterisk
# mysqladmin -u root -p create asteriskcdrdb
# mysql -u root -p -e "GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY '123';"
# mysql -u root -p -e "GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY '123';"
# mysql -u root -p -e "flush privileges;"

Стартуем asterisk:

# /usr/src/freepbx/start_asterisk start
STARTING ASTERISK
Asterisk Started

Устанавливаем FreePBX:

# cd /usr/src/freepbx
# ./install_amp --installdb --username=asteriskuser --password=123
Checking for PEAR DB..OK
Checking for PEAR Console::Getopt..OK
Using username: asteriskuser
Using password: ***
Checking user..OK
Checking if Asterisk is running..running with PID: 37303..OK
Checking for /etc/amportal.conf../etc/amportal.conf does not exist, copying default
Creating new /etc/amportal.conf

Отвечаем на заданные вопросы. Я везде оставлял значения по-умолчанию, кроме адреса сервера. Пароли не забудьте поставить свои:

Enter your USERNAME to connect to the 'asterisk' database:
 [asteriskuser]
Enter your PASSWORD to connect to the 'asterisk' database:
 [123]
Enter the hostname of the 'asterisk' database:
 [localhost]
Enter a USERNAME to connect to the Asterisk Manager interface:
 [admin]
Enter a PASSWORD to connect to the Asterisk Manager interface:
 [amp111] 123
Enter the path to use for your AMP web root:
 [/var/www/html]

Created /var/www/html
Enter the IP ADDRESS or hostname used to access the AMP web-admin:
 [192.168.1.1] 192.168.8.101
Use simple Extensions [extensions] admin or separate Devices and Users [deviceanduser]?
 [extensions]
Enter directory in which to store AMP executable scripts:
 [/var/lib/asterisk/bin]

Created /var/lib/asterisk/bin
Enter directory in which to store super-user scripts:
 [/usr/local/sbin]

/etc/amportal.conf writtenAssuming new install, --install-moh added to command line
OK
Reading /etc/amportal.conf..parsed amp_conf variables from /etc/amportal.conf:
amp_conf [AMPDBHOST] => [localhost]
amp_conf [AMPDBENGINE] => [mysql]
amp_conf [AMPENGINE] => [asterisk]
amp_conf [AMPMGRUSER] => [admin]
amp_conf [AMPMGRPASS] => [123]
amp_conf [AMPBIN] => [/var/lib/asterisk/bin]
amp_conf [AMPSBIN] => [/usr/local/sbin]
amp_conf [AMPWEBROOT] => [/var/www/html]
amp_conf [AMPCGIBIN] => [/var/www/cgi-bin ]
amp_conf [FOPWEBROOT] => [/var/www/html/panel]
amp_conf [FOPPASSWORD] => [passw0rd]
amp_conf [AUTHTYPE] => [database]
amp_conf [AMPEXTENSIONS] => [extensions]
amp_conf [AMPDBUSER] => [asteriskuser]
amp_conf [AMPDBPASS] => [123]
amp_conf [AMPWEBADDRESS] => [192.168.8.101]
amp_conf [AMPDBNAME] => [asterisk]
OK

Дальше идет установка, не буду приводить вывод. В конце установки будет сообщение:

****************************************
* At This Time Please Restart Asterisk *
****************************************

Продолжаем установку:

# amportal chown
# amportal a ma installall

Идет долгая установка, что-то постоянно качается, распаковывается, устанавливается. В конце у меня вылетела ошибка:

Setting operator panel web root and enabling dev state....<br>Done<br>Setting callevents = yes....<br>Creating client symlink....<br>Done<br>Enabling voicemail box polling<br/>PHP Fatal error:  Call to a member function send_request() on null in /var/www/html/admin/modules/voicemail/functions.inc.php on line 1154

Так как у меня уже был опыт установки предыдущих версий подобной связки, сразу полез проверять старые болячки. Открываем файл /etc/asterisk/manager.conf и видим в конце две строки:

#include manager_additional.conf
#include manager_custom.conf

Меняем # на ; чтобы стало так:

;include manager_additional.conf
;include manager_custom.conf

Сохраняем файл и перечитываем конфиг астериска:

# asterisk -r
# CLI> core reload

Выходим из консоли астериск и запускаем заново установку FreePBX:

# amportal a ma installall

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

SETTING FILE PERMISSIONS................Done
Removing any dangling symlinks
Dangling symlinks removed

Если получили это сообщение, значит установка прошла успешно. Доделываем:

# amportal a reload

Please wait...

Successfully reloaded
# amportal a ma refreshsignatures
# amportal chown
# ln -s /var/lib/asterisk/moh /var/lib/asterisk/mohmp3 
# amportal restart
Please wait...

STOPPING ASTERISK
Waiting for Asterisk to Stop Gracefully...

Asterisk Stopped

SETTING FILE PERMISSIONS.............../var/lib/asterisk/bin/freepbx_engine: line 275: sudo: команда не найдена
.Done
Removing any dangling symlinks
Dangling symlinks removed

STARTING ASTERISK
Asterisk Started

Все, на этом установка закончена. Теперь можно зайти по адресу http://192.168.8.101 и попасть в веб интерфейс freepbx:

Установка Freepbx

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

freepbx system overview

На этом установка окончена, можно приступать к конфигурированию. Подробным примером настройки asterisk для чайников может служить моя статья. Хотя в ней речь идет о настройке без использования freepbx, какие-то вещи из статьи можете взять на вооружение.

Онлайн-курс по устройству компьютерных сетей.

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Дополнительные материалы по Debian

Рекомендую полезные материалы по Debian:
Настройки системы
  • Установка
  • Базовая настройка
  • Настройка сети
  • Обновление 8 до 9
  • Обновление 7 до 8
  • Включение логов cron
Подробная установка Debian 9 Stratch с помощью графического инсталлятора со скриншотами и пояснениями к каждому пункту установщика.
Базовая настройка сервера Debian. Приведены практические советы по улучшению безопасности и удобства администрирования.
Подробное описание настройки сети в Debian - задать ip адрес, dhcp, отключить ipv6, dns, hostname, статические маршруты и др.
Обновление предыдущей версии Debian 8 Jessie до последней Debian 9 Stratch. Подробная инструкция с описанием по каждому этапу обновления.
Обновление версии Debian 7 wheezy до Debian 8 Jessie. Подробная инструкция с описанием по каждому этапу обновления.
Включение записи логов cron в Debian в отдельный файл и настройка ротации этого файла. Отключение логов в syslog.
Настройка программных комплексов
 
  • Proxmox
  • Шлюз в интернет
  • Установка Asterisk
  • Asterisk+Freepbx
  • PostgreSQL для 1С
  • Настройка pptp
Подробное описание установки гипервизора proxmox на raid1 mdadm на базе операционной системы Debian 8. Приведены практические советы по настройке.
Настройка интернет шлюза на Debian. Включает в себя настройку iptables, nat, dhcp, dns, iftop.
Чистая установка Asterisk 13 на сервер под управлением Debian 8. Никаких дополнений и GUI, только vanilla asterisk.
Установка Freepbx 12 и Asterisk 13 на сервер под управлением Debian/Ubuntu. Подробное описание и разбор ошибок установки.
Рассказ об установке и небольшой настройке сервера бд postgresql для работы с базами 1С. Задача не сложная, но есть небольшие нюансы как по настройке, так и по выбору дистрибутива.
Описание установки и настройки pptp сервера в Debian с передачей статических маршрутов клиенту для организации доступа к ресурсам сети.
Разное
  • Бэкап с помощью rsync
  • Тюнинг postgresl для 1C
Подробное описание настройки бэкапа с помощью rsync на примере скрипта инкрементного архива на системе Centos, Debian, Ubuntu, Windows.
Ускорение работы 1С с postgresql и диагностика проблем производительности

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

12 комментариев

  1. Добрый день!
    Скажите пожалуйста, не получается выполнить установку зависимостей в самом начале этой статьи. Может быть это в следствии того, что при установке debian я не поставил галочку 'web сервер'?
    Если да, то как мне установить 'web сервер', не переустанавливая всю систему?
    Сильно не пинайте, я новичек)
    За ранее спасибо!

    • Это очень старая статья. Боюсь, что она безнадежно устарела. Если вы новичок, лучше возьмите готовый дистрибутив FreePBX Distro.

  2. Алексей

    Добрый день.
    А есть такая же статья только на основе CentOS7? Найти у вас не могу.
    Да и в целом, что посоветуете: стоит ли вообще использовать FreePBX или изначально пилить чистый Asterisk?

    • Вот на centos - https://serveradmin.ru/ustanovka-asterisk-i-freepbx-na-centos-7/
      Использовать или нет Freepbx, решает каждый сам для себя. Я предпочитаю ванильный asterisk. На нем проще реализовывать что-то нестандартное, но за всеми настройками лазить в консоль. Freepbx позволяет управлять через панель, но труднее кастомизировать настройки, особенное если они не типовые.

      • Алексей

        Ясно, спасибо.
        А скажите, если мой сервер будет стоять за комбайном Mikrotik RB1100x4, то надобность в IPtables отпадает. Правильно?

        • И да, и нет. В целом, на самом сервере с астериск iptables не нужны для нормальной работы. Но я все равно их использую в связке с fail2ban. Это простой и эффективный способ защитить астериск от перебора учеток. Как это так же просто сделать на mikrotik - не знаю.

          • Алексей

            В целом спасибо за статью. Астериск встал, freePBX встал. Софтфоны регистрируются. Вот только не звонит ничего почему-то. Звонок отклонен и все тут. Ковырял, ковырял, ничего не наковырял))) В общем, не хватает статьи по настройки FreePBX :D
            Все равно спасибо за ваш труд)

  3. Мирослав

    Скажите, а как быть чтобы установить PBX на Debian 9.9?

  4. После установки FreePBX Distro, к нему периодически пропадает соединение (к веб морде по ssh да и Пинг так же пропадает) потом через некоторое время примерно через час соединение восстанавливается на минут 10-15 и снова пропадает.
    ИП с которой я стучусь добавлено в белый лист и в ignoreip в fail2ban, не подскажете что может быть?

  5. а почему 12, а не 13 или 14, уже вышел LTS релиз.

  6. Кирилл

    Можно поинтересоваться минимальными системными требованиями?

    • Думаю это будут минимальные системные требования самой системы. Начинать можно от одного ядра и 512 мб памяти. Но лучше от 1024 памяти.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar