Всем привет
Если в офисе нет развернутой телефонии, а звонить с городского номера очень хочется, переключать входящие вызовы по коротким номерам, ввести к городскому номеру добавочные короткие номера, но цена за VoiP-шлюз режет глаз, то можно развернуть программную телефонию и пользоваться ей через SIP-телефоны в локальной сети, либо через софтофоны на Android или iPhone, благо их на айфон полным полно, а на андроид - уже есть встроенная функция в гугловскую звонилку.
Итак, начнем
Надеюсь все умеют устанавливать линуксовые дистрибутивы и настраивать на них сеть + обновлять пакеты, этот шаг пропустим, начнем сразу с установки. За основу был взят дистрибутив Ubuntu Server 18.04, на новые версии и иные Debian-дистрибутивы минимальные различия при установке
1. Установка зависимостей Asterisk'а
sudo apt -y install git curl wget libnewt-dev libssl-dev libncurses5-dev subversion libsqlite3-dev build-essential libjansson-dev libxml2-dev uuid-dev
2. Качаем исходники Asterisk'а
sudo curl -O http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
3. Распаковываем
sudo tar xvf asterisk-16-current.tar.gz
cd asterisk-16*/
где * - название распакованной папки, если не переходит, вводим ls, видим отображение всего содержимого папки, в которой вы сейчас находитесь, и пишем целиком команду
cd asterisk-16-current/
Запускаем скрипт для загрузки библиотеки mp3-декодера для нашей телефонии
sudo contrib/scripts/get_mp3_source.sh
4. Убедимся, что все зависимости установлены
sudo contrib/scripts/install_prereq install
выдаст
#############################################
# # install completed successfully
#############################################
5. Конфигурация
запускаем скрипт конфигурации
sudo ./configure
sudo make menuselect
выдаст меню с выбором необходимых функций
в Add-ons выбираем
Для музыки на удержании выбираем следующее
Включаем app_macro в Applications
6. Запускаем сборку
sudo make
Сборка программы займет минут 10-15
sudo make install
Опционально можно установить документацию командой
sudo make progdocs
Наконец, устанавливаем конфиги и шаблоны
sudo make samples
sudo make config
sudo ldconfig
7. Создаем пользователя Asterisk'a
Создаем отдельного пользователя и группу для запуска служб телефонии, назначаем нужные права
sudo groupadd asterisk
sudo useradd -r -d /var/lib/asterisk -g asterisk asterisk
sudo usermod -aG audio,dialout asterisk
sudo chown -R asterisk.asterisk /etc/asterisk
sudo chown -R asterisk.asterisk /var/{lib,log,spool}/asterisk
sudo chown -R asterisk.asterisk /usr/lib/asterisk
Назначаем пользователя Asterisk пользователем по-умолчанию для нашей телефонии
sudo nano /etc/default/asterisk
AST_USER="asterisk"
AST_GROUP="asterisk"
sudo nano /etc/asterisk/asterisk.conf
runuser = asterisk ; The user to run as.
rungroup = asterisk ; The group to run as.
Перезапускаем службу телефонии и включаем ее
sudo systemctl restart asterisk
sudo systemctl enable asterisk
Пробуем подключиться к CLI Аsterisk'a
sudo asterisk -rvv
Если все прошло удачно, то мы попадем в командную строку Asterisk'a
8. Установка веб-интерфейса FreePBX
Начнем с установки DB-сервера
sudo apt -y install mariadb-server mariadb-client
Далее ставим Node.js для выполнения скриптов веб-интерфейса
Сначала добавляем репозиторий
sudo apt update
sudo apt -y install curl dirmngr apt-transport-https lsb-release ca-certificates
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
Потом, собственно, ставим саму платформу
sudo apt update
sudo apt -y install gcc g++ make
sudo apt -y install nodejs
Устанавливаем Web-сервер Apache
sudo apt -y install apache2
Назначаем пользователя asterisk для веб-сервера, разрешаем переопределение
sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_orig
sudo sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf
sudo sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
Сносим стартовую страницу веб-сервера
sudo rm -f /var/www/html/index.html
Устанавливаем php и зависимости
sudo apt -y install wget php php-pear php-cgi php-common php-curl php-mbstring php-gd php-mysql php-gettext php-bcmath php-zip php-xml php-imap php-json php-snmp php-fpm libapache2-mod-php
Изменяем максимальный размер загрузок для php
sudo sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php/7.2/apache2/php.ini
sudo sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php/7.2/cli/php.ini
Обращаем внимание на установленную версию, она может отличаться
ВАЖНО
Веб-интерфейс FreePBX может не работать с версией PHP 7.4+ из-за magic_quotes, при этом для "работоспособности" возможно отключить bootstrap в файле конфигурации FreePBX, но потом теряется часть мониторинга, обработка ошибок и т.д.
Для Ubuntu Server 20.04 ставим версию php 7.2 принудительно
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt -y install wget php7.2 php-pear php7.2-cgi php7.2-common php7.2-curl php7.2-mbstring php7.2-gd php7.2-mysql php7.2-gettext php7.2-bcmath php7.2-zip php7.2-xml php7.2-imap php7.2-json php7.2-snmp php7.2-fpm libapache2-mod-php7.2
sudo update-alternatives --set php /usr/bin/php7.2
sudo service apache2 restart
Наконец, качаем исходники веб-интерфейса FreePBX
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-15.0-latest.tgz
Распаковываем
tar xfz freepbx-15.0-latest.tgz
Начинаем установку
cd freepbx
sudo ./start_asterisk start
sudo ./install -n
если вы раньше уже пользовались базой данных, то команда будет такого вида, имя пользователя и пароль изменить на свое
sudo ./install -n --dbuser root --dbpass password
После установки включаем модуль Apache и перезапускаем службу
sudo a2enmod rewrite
sudo systemctl restart apache2
Для Ubuntu Server 20.04 в случае появления ошибок дополнительно ставим модули
sudo apt install npm
sudo fwconsole ma downloadinstall pm2
sudo fwconsole ma enable pm2
После этого заходим в веб-браузер на ваш_айпи/admin, создаем пользователя и готовимся к дальнейшей настройке транков, IVR-меню и внутренних номеров
Всем спасибо за внимание
#системное администрирование #Ubuntu server #VOIP #серверное администрирование #asterisk #freepbx