Установка FreePBX
Вносим необходимые правки в файлы конфигураций php, apache и применяем сделанные изменения в них:
1 |
sed -i ‘s/\(^upload_max_filesize = \).*/\1 256M/’ /etc/php/5.6/apache2/php.ini sed -i ‘s/\(^memory_limit = \).*/\1 256M/’ /etc/php/5.6/apache2/php.ini cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_orig sed -i ‘s/^\(User\|Group\).*/\1 asterisk/’ /etc/apache2/apache2.conf sed -i ‘s/AllowOverride None/AllowOverride All/’ /etc/apache2/apache2.conf a2enmod rewrite service apache2 restart |
Создаем файл конфигурации /etc/odbcinst.ini:
1 |
cat <<EOF > /etc/odbcinst.ini Description = ODBC for MySQL (MariaDB) |
Создаем файл конфигурации /etc/odbc.ini
1 |
cat <<EOF > /etc/odbc.ini Description = MySQL connection to ‘asteriskcdrdb’ database |
Создадим базу данных для работы FreePBX:
1 | mysql -u root -p |
1 |
CREATE DATABASE asterisk default charset utf8; CREATE DATABASE asteriskcdrdb default charset utf8; GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY ‘asterpass’; GRANT ALL PRIVILEGES ON asteriskcdrdb.* to asteriskuser@localhost IDENTIFIED BY ‘asterpass’; FLUSH PRIVILEGES; EXIT |
Переходим в каталог с дистрибутивом FreePBX, запускаем Asterisk и выполняем установку:
1 |
cd freepbx/ ./start_asterisk start ./install -n —dbuser=asteriskuser —dbpass=asterpass |
Установка завершена, через Web браузер заходим в консоль FreePBX:
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА
Install
DAHDI
Only required if using a physical server and installing telecom hardware. At this time, versions newer than ( and ) do not install correctly.
cd /usr/src wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-2.10.2+2.10.2.tar.gz tar zxvf dahdi-linux-complete-2.10* cd /usr/src/dahdi-linux-complete-2.10*/ make all && make install && make config systemctl restart dahdi
If fails try reboot and run
Asterisk
If upgrading an existing install with older Asterisk, it is best to run first.
cd /usr/src wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz tar zxvf asterisk-16-current.tar.gz cd /usr/src/asterisk-16*/ make distclean
Install additional dependencies
cd /usr/src/asterisk-16*/ ./contrib/scripts/install_prereq install
Configure
cd /usr/src/asterisk-16*/ ./configure --with-pjproject-bundled --with-jansson-bundled
To verify type .
Set compile options
cd /usr/src/asterisk-16*/ make menuselect # Go to Applications and make sure is checked. # To change compile options after install simply run make menuselect and make && make install again.
Create Asterisk User, compile, install and set preliminary ownership.
adduser asterisk --disabled-password --gecos "Asterisk User"
make && make install && chown -R asterisk. /var/lib/asterisk
Freepbx
cd /usr/src git clone -b release/15.0 --single-branch https://github.com/freepbx/framework.git freepbx
touch /etc/asterisk/modules.conf cd /usr/src/freepbx ./start_asterisk start ./install -n
# Minimal module install fwconsole ma downloadinstall framework core voicemail sipsettings infoservices \ featurecodeadmin logfiles callrecording cdr dashboard music soundlang recordings conferences
fwconsole chown fwconsole reload
Optionally, install all modules (not recommended). You may need to run the following commands twice.
fwconsole ma installall fwconsole chown fwconsole reload
Set Freepbx to start on boot
cat >> /etc/systemd/system/freepbx.service << EOF Description=Freepbx After=mariadb.service Type=oneshot RemainAfterExit=yes ExecStart=/usr/sbin/fwconsole start ExecStop=/usr/sbin/fwconsole stop WantedBy=multi-user.target EOF
systemctl enable freepbx
Configure Apache
Add to web directory so that is active.
cat >> /etc/apache2/conf-available/allowoverride.conf << EOF <Directory /var/www/html> AllowOverride All </Directory> EOF
a2enconf allowoverride
Change default apache user/group, disable index.html, enable rewrite module
sed -i 's/\(APACHE_RUN_USER=\)\(.*\)/\1asterisk/g' /etc/apache2/envvars sed -i 's/\(APACHE_RUN_GROUP=\)\(.*\)/\1asterisk/g' /etc/apache2/envvars chown asterisk. /run/lock/apache2 mv /var/www/html/index.html /var/www/html/index.html.disable a2enmod rewrite
systemctl restart apache2
Install
DAHDI
Only required if using a physical server and installing telecom hardware. At this time, versions newer than ( and ) do not install correctly.
cd /usr/src wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-2.10.2+2.10.2.tar.gz tar zxvf dahdi-linux-complete-2.10* cd /usr/src/dahdi-linux-complete-2.10*/ make all && make install && make config systemctl restart dahdi
If fails try reboot and run
Asterisk
To install Asterisk v14, set . To switch versions, it is best to run first.
# Select Asterisk VERSION=14 or VERSION=13
cd /usr/src wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-${VERSION}-current.tar.gz tar zxvf asterisk-${VERSION}-current.tar.gz cd /usr/src/asterisk-${VERSION}*/ make distclean
Install additional dependencies
cd /usr/src/asterisk-${VERSION}*/ ./contrib/scripts/install_prereq install
Configure
cd /usr/src/asterisk-${VERSION}*/ ./configure --with-pjproject-bundled
To verify type .
Set compile options
cd /usr/src/asterisk-${VERSION}*/ make menuselect # Select additional compile options or leave at default and save. # To add more compile options afterwards just run make menuselect again and compile/install again.
Create Asterisk User, compile, install and set preliminary ownership.
adduser asterisk --disabled-password --gecos "Asterisk User"
make && make install && chown -R asterisk. /var/lib/asterisk
Freepbx
cd /usr/src git clone -b release/14.0 --single-branch https://github.com/freepbx/framework.git freepbx
cd /usr/src/freepbx ./start_asterisk start ./install -n
If you get a error modify the following line:
nano +266 installlib/installcommand.class.php
$lastline = exec("runuser" . $answers . ' -s /bin/bash -c "cd ~/ && asterisk -rx \'core show version\' | grep ^Asterisk 2>&1"', $tmpout, $ret);
# Minimal module install fwconsole ma downloadinstall framework core voicemail sipsettings infoservices \ featurecodeadmin logfiles callrecording cdr dashboard music conferences
fwconsole chown fwconsole reload
Optionally, install all modules (not recommended). You will most likely need to run the following commands twice.
fwconsole ma installall fwconsole chown fwconsole reload
Set Freepbx to start on boot
cat >> /etc/systemd/system/freepbx.service << EOF Description=Freepbx After=mariadb.service Type=oneshot RemainAfterExit=yes ExecStart=/usr/sbin/fwconsole start ExecStop=/usr/sbin/fwconsole stop WantedBy=multi-user.target EOF
systemctl enable freepbx
Configure Apache
Add to web directory so that is active.
cat >> /etc/apache2/conf-available/allowoverride.conf << EOF <Directory /var/www/html> AllowOverride All </Directory> EOF
a2enconf allowoverride
Change default apache user/group, disable index.html, enable rewrite module
sed -i 's/\(APACHE_RUN_USER=\)\(.*\)/\1asterisk/g' /etc/apache2/envvars sed -i 's/\(APACHE_RUN_GROUP=\)\(.*\)/\1asterisk/g' /etc/apache2/envvars chown asterisk. /run/lock/apache2 mv /var/www/html/index.html /var/www/html/index.html.disable a2enmod rewrite
systemctl restart apache2
Prerequisites
Initial upgrade and install
apt update && apt -y upgrade && apt install lsb-release
PHP
# Install dependencies apt -y install curl apt-transport-https ca-certificates
# Add php repository on Debian v9. Optional for Debian v10 as v7.3 is included. wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > \ /etc/apt/sources.list.d/php.list
# Install PHP v7.3 apt update && apt -y install php7.3 php7.3-curl php7.3-cli php7.3-mysql php7.3-mbstring php7.3-gd php7.3-xml
Other
apt -y install locales sngrep build-essential aptitude openssh-server apache2 mariadb-server mariadb-client bison doxygen flex php-pear curl sox libncurses5-dev libssl-dev libmariadbclient-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool-bin autoconf git subversion uuid uuid-dev libiksemel-dev tftpd postfix mailutils nano ntp libspandsp-dev libcurl4-openssl-dev libical-dev libneon27-dev libasound2-dev libogg-dev libvorbis-dev libicu-dev libsrtp*-dev unixodbc unixodbc-dev python-dev xinetd e2fsprogs dbus sudo xmlstarlet lame ffmpeg dirmngr linux-headers*
Node.js
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - apt -y install nodejs
ODBC
Install connector
cd /usr/src wget https://downloads.mariadb.com/Connectors/odbc/connector-odbc-2.0.19/\ mariadb-connector-odbc-2.0.19-ga-debian-x86_64.tar.gz tar -zxvf mariadb-connector-odbc-2.0.19*.tar.gz cp lib/libmaodbc.so /usr/lib/x86_64-linux-gnu/odbc/
Create /etc/odbcinst.ini
cat >> /etc/odbcinst.ini << EOF Description = ODBC for MariaDB Driver = /usr/lib/x86_64-linux-gnu/odbc/libmaodbc.so Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so FileUsage = 1 EOF
Create /etc/odbc.ini
cat >> /etc/odbc.ini << EOF Description = MariaDB connection to 'asteriskcdrdb' database driver = MySQL server = localhost database = asteriskcdrdb Port = 3306 Socket = /var/run/mysqld/mysqld.sock option = 3 EOF
MongoDB
Only required if you plan to use XMPP
wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add - echo "deb http://repo.mongodb.org/apt/debian $(lsb_release -sc)/mongodb-org/4.2 main" \ | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list apt update && apt install -y mongodb-org systemctl enable mongod
Libjansson
Asterisk v16 requires libjansson >= 2.11.
# Mandatory for Debian v9. Optional for Debian v10 which includes a new enough version. cd /usr/src wget http://www.digip.org/jansson/releases/jansson-2.12.tar.gz tar -zxvf jansson-2.12.tar.gz cd jansson-2.12/ ./configure && make && make install
Popular content
Today’s:
- Appendix F: aastra.cfg and <MAC>.cfg files
- OpenSIPS v2 with GUI on Debian v8 MariaDB Apache install guide
- Sangoma Wanpipe Installation
- Appendix D: Special note about Cisco PIX firewall
- Asterisk Freepbx on Debian (Debian v10, Asterisk v16, Freepbx v15)
All time:
- FreePBX Production Install Guide (RHEL v5 or v6, Asterisk v1.8+, FreePBX v2.9+)
- A2Billing Install guide
- A2Billing v2 Install Guide
- Asterisk/FreePBX on an OpenVZ/Virtuozzo Virtual Private Server (VPS)
- Freepbx Production Install Guide (RHEL v6, Asterisk v11+, Freepbx v2.11+)
Last viewed:
- Asterisk Freepbx on Debian (Debian v10, Asterisk v16, Freepbx v15)
- Appendix D: Special note about Cisco PIX firewall
- A2Billing v2 Install Guide
- Install 3DM2 software for 3WARE SATA RAID card
- Kazoo v4 Single Server Install Guide
Open Source Private Branch Exchange (PBX)
Asterisk is an Open Source PBX and telephony toolkit. It is, in a
sense, middleware between Internet and telephony channels on the bottom,
and Internet and telephony applications at the top.
Asterisk can be used with Voice over IP (SIP, H.323, IAX and more) standards,
or the Public Switched Telephone Network (PSTN) through supported hardware.
Supported hardware:
* All Wildcard (tm) ISDN PRI cards from Digium (http://www.digium.com) * HFC-S/HFC-4S-based ISDN BRI cards (Junghanns.NET, beroNet, Digium etc.) * All TDM (FXO/FXS) cards from Digium * Various clones of Digium cards such as those by OpenVox * Xorcom Astribank USB telephony adapter (http://www.xorcom.com) * Voicetronix OpenPCI, OpenLine and OpenSwitch cards * CAPI-compatible ISDN cards (using the add-on package chan-capi) * Full Duplex Sound Card (ALSA or OSS) supported by Linux * Tormenta T1/E1 card (http://www.zapatatelephony.org) * QuickNet Internet PhoneJack and LineJack (http://www.quicknet.net)
Установка
Теперь установка самого Asterisk на Ubuntu.
- Скачайте его с сайта разработчика. Введите «wget ». Файл будет помещён в текущий каталог. Поэтому заранее откройте нужную папку при помощи команды «cd».
- Если программа заархивирована, распакуйте её — «tar zxvf ».
- Зайдите в директорию с Астериксом.
- В последних версиях утилиты используются службы WebRTC. Их можно загрузить прямо из Asterisk-исходников — введите «contrib/scripts/install_prereq install». Е нужны скрипты «Pjproject» и «Libsrtp». Чтобы их запустить, напишите ту же команду, но с параметром «-unpackaged».
- Снова перейдите в каталог с программой.
- Наберите «. /configure». Должна появиться заставка.
- Можете запустить графический интерфейс, чтобы посмотреть, как выглядит меню программы «make menuselect». Чтобы выйти из него, нажмите «Exit».
- Теперь последовательно введите две команды: вначале «make», потом «make install».
- Астериск установлен и работает.
Эту программу можно скачать из репозитория — «apt-get install asterisk».
Самостоятельная сборка Pjproject и Libsrtp
Если «Pjproject» и «Libsrtp» не запустятся из исходников или возникнет ошибка, придётся самостоятельно их «собирать».
- Введите команду «sudo su».
- Перейдите директорию, в которой хранятся скрипты — «cd /usr/src/».
- Скачайте в неё нужный модуль — «git clone github.com/cisco/libsrtp.git».
- Просто загрузить скрипт недостаточно. Надо его подготовить. Откройте его папку — «cd libsrtp».
- Теперь введите параметры для конфигурации и настройки — «./configure CFLAGS=-fPIC».
- Затем строчку «make libsrtp.a».
- И поочерёдно команды для установки: вначале «make uninstall», потом «make install».
- Перейдите в каталоге на уровень вверх «cd …».
- Превратите всё это в готовый скрипт — «echo «/usr/local/lib» > /etc/ld.so.conf.d/usr_local.conf».
- И завершите командой «ldconfig».
- Можете выходить из Root-режима.
Подготовка системы
Я рекомендую ознакомиться с моим материалом на тему первоначальной настройки centos 7. Многие вопросы там рассмотрены подробнее, здесь же я не буду на них задерживаться, просто выполню необходимые команды.
Прежде чем мы начнем устанавливать asterisk, нам надо выполнить целый ряд подготовительных действий. Первым делом отключаем selinux. Для этого открываем файл:
# mcedit /etc/sysconfig/selinux
и устанавливаем значение SELINUX=disabled. После этого применяем настройку без перезагрузки сервера:
# setenforce 0
Рекомендация по отключению selinux дается в официальной инструкции по установке freepbx, так как это может привести к нарушению процесса инсталляции.
Дальше обновляем систему и ставим пакеты Development Tools:
# yum update # yum groupinstall core base "Development Tools"
Запуск и остановка Asterisk
/usr/sbin/asterisk: Файл запускающий Asterisk
Если Вы установили Asterisk, можно запустить его командой:
/usr/src/asterisk -vvvgc
Остановить Asterisk из CLI можно командой ‘stop now’.
Командой без аргументов, Asterisk запускается как демон.
/usr/sbin/asterisk
Подключится к командному интерфейсу (CLI) можно используя аргумент ‘r’.
/usr/sbin/asterisk -r
Запуск Asterisk из под не — root пользователя.
По умолчанию Asterisk запускается из под root, что может быть небезопасно.
Для изменения пользователя раскомментируйте строки в файле /etc/init.d/asterisk.
AST_USER="asterisk" AST_GROUP="asterisk"
Создайте группу и пользователя asterisk.
/usr/sbin/groupadd asterisk /usr/sbin/useradd -d /var/lib/asterisk -g asterisk asterisk
Измените права на использование следующих файлов:
chown --recursive asterisk:asterisk /var/lib/asterisk chown --recursive asterisk:asterisk /var/log/asterisk chown --recursive asterisk:asterisk /var/run/asterisk chown --recursive asterisk:asterisk /var/spool/asterisk chown --recursive asterisk:asterisk /usr/lib/asterisk ## Если Вы используете Zaptel chown --recursive asterisk:asterisk /dev/zap ## Если Вы используете DAHDI chown --recursive asterisk:asterisk /dev/dahdi #---------------------------------------------------- chmod --recursive u=rwX,g=rX,o= /var/lib/asterisk chmod --recursive u=rwX,g=rX,o= /var/log/asterisk chmod --recursive u=rwX,g=rX,o= /var/run/asterisk chmod --recursive u=rwX,g=rX,o= /var/spool/asterisk chmod --recursive u=rwX,g=rX,o= /usr/lib/asterisk ## Если Вы используете Zaptel chmod --recursive u=rwX,g=rX,o= /dev/zap ## Если Вы используете DAHDI chmod --recursive u=rwX,g=rX,o= /dev/dahdi #---------------------------------------------------- chown --recursive root:asterisk /etc/asterisk chmod --recursive u=rwX,g=rX,o= /etc/asterisk
/etc/init.d/asterisk restart
Asterisk
Требуемые пакеты
aptitude install libxml2-dev unixodbc-dev libmyodbc subversion libmysqlclient15-dev libsqlite0-dev libsnmp-dev libsqlite3 libsqlite3-dev
cd /usr/src/ wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-10-current.tar.gz tar zxvf asterisk-10-current.tar.gz cd /usr/src/asterisk-<version>/ ./contrib/scripts/get_mp3_source.sh ./configure make menuconfig
Выберете дополнения:
-
Add-ons > app_mysql, app_saycountpl, cdr_mysql, format_mp3, res_config_mysql
-
Core Sound Packages > CORE-SOUNDS-RU-GSM
-
Extras Sound Packages > EXTRAS-SOUNDS-EN-GSM
make make install make config
Запускать Asterisk от одноименного пользователя
nano +107 /usr/sbin/safe_asterisk
ASTARGS="-U asterisk"
раскоментируйте
nano /etc/default/asterisk
AST_USER="asterisk" AST_GROUP="asterisk"
insserv portmap
update-rc.d -f asterisk defaults
Установка и настройка 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 настраивать не надо. Она по дефолту автоматически запускается при старте системы.