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

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

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

Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Курс стоящий, все подробности читайте по ссылке. Есть бесплатные курсы.

Если вы еще не определились, как вам лучше настраивать и использовать астериск, рекомендую мою статью — 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, какие-то вещи из статьи можете взять на вооружение.

Онлайн курс по Linux

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Администратор Linux» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Что даст вам этот курс:
  • Знание архитектуры Linux.
  • Освоение современных методов и инструментов анализа и обработки данных.
  • Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
  • Владение основными рабочими инструментами системного администратора.
  • Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
  • Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.
Проверьте себя на вступительном тесте и смотрите подробнее программу по .

Помогла статья? Есть возможность отблагодарить автора

Дополнительные материалы по 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

Zerox
Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству.

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

  1. Аватар
    Алексей

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

    • Zerox

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

      • Аватар
        Алексей

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

        • Zerox

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

          • Аватар
            Алексей

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

  2. Аватар
    Мирослав

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

  3. Аватар

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

  4. Аватар

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

  5. Аватар

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

    • Zerox

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

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

Ваш адрес email не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.