Устанавливаем iksemel, dahdi, libpri, pjproject, jansson и asterisk:
sudo apt-get install -y libiksemel-utils libpj2 libjansson4 asterisk asterisk-mp3 asterisk-mysql sudo cp -R /etc/asterisk /etc/asterisk.org
Если будет использоваться аналоговая телефония, то доустанавливаем:
sudo apt-get install -y asterisk-dahdi
Настраиваем systemd без автозагрузки.
Дополнительные звуковые файлы:
sudo apt-get install -y asterisk-core-sounds-ru wget -q http://downloads.asterisk.org/pub/telephony/sounds/asterisk-extra-sounds-en-g722-current.tar.gz -O- | sudo tar xzv -C /usr/share/asterisk/sounds/en/ wget -q --no-check-certificate https://github.com/pbxware/asterisk-sounds-additional/tarball/master -O- | sudo tar xzv --strip-components 1 -C /usr/share/asterisk/sounds/ru/
исправляем ссылку к звукам custom:
sudo rm /usr/share/asterisk/sounds/custom sudo ln -s /var/lib/asterisk/sounds/custom /usr/share/asterisk/sounds
FreePBX 13 и ниже не работает на PHP7
Добавляем репозиторий с PHP5.6:
sudo add-apt-repository ppa:ondrej/php sudo apt-get update
базу данных и php-cli, php-db, php-mysql:
sudo apt-get install -y mariadb-server curl sox php5.6-curl php5.6-cli php-db php5.6-mysql php5.6-curl php5.6-common php5.6-xml php5.6-mbstring
Настраиваем mariadb, генерируем пароль и создаем базы:
export ASTERISK_DB_PW=`dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 - | cut -c2-18` mysql -u root -e "CREATE DATABASE asterisk CHARACTER SET utf8 COLLATE utf8_general_ci;\ CREATE DATABASE asteriskcdrdb CHARACTER SET utf8 COLLATE utf8_general_ci;" -p
Устанавливаем разрешения на созданные базы:
mysql -u root -e "GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY '${ASTERISK_DB_PW}';\ GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY '${ASTERISK_DB_PW}';\ FLUSH PRIVILEGES;" -p
Устанавливаем и настраиваем ODBC, после отключаем pooling:
sudo sh -c "echo Pooling = No >> /etc/odbcinst.ini"
затем добавляем подключение:
sudo sh -c "echo [MySQL-asteriskcdrdb] >> /var/lib/asterisk/.odbc.ini" sudo sh -c "echo Description = MySQL connection to \'asteriskcdrdb\' database >> /var/lib/asterisk/.odbc.ini" sudo sh -c "echo Driver = MySQL >> /var/lib/asterisk/.odbc.ini" sudo sh -c "echo Database = asteriskcdrdb >> /var/lib/asterisk/.odbc.ini" sudo sh -c "echo User = asteriskuser >> /var/lib/asterisk/.odbc.ini" sudo sh -c "echo Password = ${ASTERISK_DB_PW} >> /var/lib/asterisk/.odbc.ini" sudo sh -c "echo Socket = /var/run/mysqld/mysqld.sock >> /var/lib/asterisk/.odbc.ini" sudo chmod 640 /var/lib/asterisk/.odbc.ini sudo chown root:asterisk /var/lib/asterisk/.odbc.ini
Проверяем:
sudo su - asterisk -s /bin/bash -c "echo 'show tables' | isql MySQL-asteriskcdrdb"
Сам freepbx с помощью git:
export VER_FREEPBX=13.0 cd /usr/src sudo apt-get install -y git sudo git clone http://git.freepbx.org/scm/freepbx/framework.git freepbx cd freepbx sudo git checkout release/${VER_FREEPBX}
или скачиваем архив:
wget -P /tmp http://mirror.freepbx.org/modules/packages/freepbx/freepbx-13.0-latest.tgz sudo tar -xzf /tmp/freepbx-13.0-latest.tgz -C /usr/src cd /usr/src/freepbx
Убираем лишние символы из asterisk.conf, перезапускаем asterisk и устанавливаем freepbx:
sudo sed -i "s/(\!)//" /etc/asterisk/asterisk.conf sudo service asterisk stop sudo ./start_asterisk start sudo ./install -n --dbuser=asteriskuser --dbpass=${ASTERISK_DB_PW} --astagidir=/usr/share/asterisk/agi-bin --ampcgibin=/usr/lib/cgi-bin
Добавляем пользователя freepbx для управления asterisk:
sudo killall asterisk sudo sh -c "echo [admin] > /etc/asterisk/manager.d/freepbx.conf" sudo sh -c "cat /etc/amportal.conf | grep AMPMGRPASS | sed 's/AMPMGRPASS=/secret = /' >> /etc/asterisk/manager.d/freepbx.conf" sudo sh -c "echo deny = 0.0.0.0/0.0.0.0 >> /etc/asterisk/manager.d/freepbx.conf" sudo sh -c "echo permit = 127.0.0.1/255.255.255.0 >> /etc/asterisk/manager.d/freepbx.conf" sudo sh -c "echo read = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate,message >> /etc/asterisk/manager.d/freepbx.conf" sudo sh -c "echo write = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate,message >> /etc/asterisk/manager.d/freepbx.conf" sudo sh -c "echo writetimeout = 5000 >> /etc/asterisk/manager.d/freepbx.conf" sudo chmod 640 /etc/asterisk/manager.d/freepbx.conf sudo chown root:asterisk /etc/asterisk/manager.d/freepbx.conf sudo fwconsole start
Обновляем и устанавливаем модули:
sudo fwconsole ma updateall sudo fwconsole ma downloadinstall voicemail dashboard asteriskinfo backup cdr sipsettings logfiles callrecording sudo fwconsole ma enablerepo unsupported sudo fwconsole ma updateall sudo fwconsole ma downloadinstall customcontexts sudo fwconsole ma refreshsignatures
Настраиваем Автозагрузку
Дальше настраиваем Web-сервер
Исключаем лишние модули: res_config_pgsql.so, chan_local.so, cel_tds.so, cel_pgsql.so, res_config_mysql.so, res_pjsip_phoneprov_provider.so
Перед установкой модуля DAHDi Config создаём файл /etc/asterisk/freepbx_chown.conf:
[custom] file = /etc/dahdi/modules,0660,asterisk,asterisk file = /etc/dahdi/system.conf,0660,asterisk,asterisk file = /etc/modprobe.d/dahdi.conf,0660,asterisk,asterisk rdir = /etc/asterisk/manager.d/,640,root,asterisk file = /var/lib/asterisk/.odbc.ini,0640,root,asterisk [blacklist] directory = /var/spool/asterisk/monitor/
и запускаем:
sudo fwconsole chown
Подробнее о freepbx_chown.conf
sudo fwconsole ma downloadinstall conferences customappsreg music fax featurecodeadmin findmefollow infoservices ivr queues recordings ringgroups soundlang timeconditions userman sudo fwconsole ma enablerepo unsupported sudo fwconsole ma downloadinstall customcontexts
sudo killall asterisk sudo rm /var/log/asterisk/* sudo rm -rf /etc/asterisk sudo rm /etc/amportal.conf /etc/freepbx.conf sudo rm -rf /var/lib/asterisk/bin /var/www/* mysql -u root -e "DROP DATABASE asterisk; DROP DATABASE asteriskcdrdb; DROP USER asteriskuser@localhost; FLUSH PRIVILEGES;" -p
Устанавливаем файлы moh и делаем ссылку на директорию куда смотрит freepbx:
sudo apt-get install asterisk-moh-opsound-wav sudo rm -rf /var/lib/asterisk/moh sudo ln -s /usr/share/asterisk/moh /var/lib/asterisk sudo chown -R asterisk:asterisk /usr/share/asterisk/moh
Проверить конфигурацию moh можно в /etc/asterisk/musiconhold_additional.conf
Удаляем asterisk из автозагрузки:
sudo systemctl disable asterisk
Добавляем freepbx в systemd, добавляем файл /etc/systemd/system/freepbx.service:
Добавляем в автозагрузку:
sudo systemctl daemon-reload sudo systemctl enable freepbx.service
http://wiki.freepbx.org/display/FOP/Example+systemd+startup+script+for+FreePBX
Устанавливаем для PHP5.6:
sudo apt-get install libapache2-mod-php5.6
Меняем права запуска и разрешаем смотреть не свою дирректорию:
sudo sed '/memory_limit/s/128/256/' -i /etc/php/5.6/apache2/php.ini sudo sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf echo " /usr/share/asterisk/agi-bin/** r," | sudo tee -a /etc/apparmor.d/abstractions/apache2-common sudo service apparmor restart sudo service apache2 restart
/etc/apache2/sites-available/freepbx.conf:
подключаем сайт:
sudo a2dissite 000-default sudo a2ensite freepbx sudo a2enmod rewrite sudo service apache2 restart
Устанавливаем nginx и php5-fpm
Добавляем пользователя www-data в группу asterisk:
sudo adduser www-data asterisk
Увеличиваем переменные:
sudo sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php5/fpm/php.ini
/etc/nginx/sites-available/freepbx:
подключаем сайт:
sudo ln -s /etc/nginx/sites-available/freepbx /etc/nginx/sites-enabled/ sudo nginx reload
http://askubuntu.com/questions/84189/how-to-install-asterisk-1-8-freepbx-2-9-nginx-php-fpm
Устанавливаем JRE:
sudo apt-get install openjdk-7-jre
Скачиваем и устанавливаем iSymphonyServer:
wget -P /tmp/ http://www.getisymphony.com/files/builds/isymphony/3.0.3_1564/iSymphonyServerV3-3.0.3.1564.tar.gz tar -xzf /tmp/iSymphonyServerV3-3.0.3.1564.tar.gz -C /tmp cd /tmp/iSymphonyServerV3-3.0.3.1564/install.sh
при запросе где находится jre указываем /usr/lib/jvm/java-7-openjdk-amd64/
Запускаем сервер:
sudo /opt/isymphony3/server/startup.sh
Добавляем в /etc/asterisk/manager_custom.conf:
password можно узнать:
sudo grep cxpanel /opt/isymphony3/server/conf/servers/default/asterisk.xml
Перегружаем модуль manager:
sudo asterisk -rx "manager reload"
Создаем /etc/init.d/isymphony:
и добавлем в автозагрузку:
sudo chmod +x /etc/init.d/isymphony sudo update-rc.d isymphony defaults
http://highsecurity.blogspot.ru/2014/04/isymphony-super-cool-unified.html
Для отправки факсов на email необходим sendmail. Устанавливаем postfix без конфигурации «No configuration»:
sudo apt-get install postfix
Создаём /var/spool/asterisk/monitor/freepbx_monitor.sh:
Добавляем в крон:
sudo bash -c "echo '#' >/etc/cron.daily/freepbx_monitor" sudo bash -c "echo '# Regular cron jobs for the freepbx_monitor.sh' >>/etc/cron.daily/freepbx_monitor" sudo bash -c "echo '#' >>/etc/cron.daily/freepbx_monitor" sudo bash -c "echo '0 0 * * * asterisk [ -x /var/spool/asterisk/monitor/freepbx_monitor.sh ] && /var/spool/asterisk/monitor/freepbx_monitor.sh -d' >>/etc/cron.daily/freepbx_monitor" sudo bash -c "echo '0 1 1 * * asterisk [ -x /var/spool/asterisk/monitor/freepbx_monitor.sh ] && /var/spool/asterisk/monitor/freepbx_monitor.sh -m' >>/etc/cron.daily/freepbx_monitor" sudo bash -c "echo '0 2 1 1 * asterisk [ -x /var/spool/asterisk/monitor/freepbx_monitor.sh ] && /var/spool/asterisk/monitor/freepbx_monitor.sh -y' >>/etc/cron.daily/freepbx_monitor"
Способ 1:
sudo apt install mpg123
Способ 2:
sudo apt install libsox-fmt-mp3
и добавляем в /var/www/html/admin/libraries/media/Media/Driver/Drivers/SoxShell.php в функцию supportedCodecs:
$formats["in"]["mp3"] = "mp3";
CW Enabled by Default - Возможность принятия второго вызова включена по умолчанию - true /false
Ожидание второго вызова (Call Waiting - yes) будет включаться по умолчанию при создании внутреннего номера. Установите опцию в noесли не хотите создавать внутренние номера с уже включенной опцией принятия второго вызова (например для агентов очереди колл-центра). Тогда пользователям можно будет включать эту возможность путём набора сервисного кода (по умолчанию - *70). В большинстве случаев этот параметр рекомендуется оставить так как есть. Таким образом многоканальным телефонам даётся возможность принимать несколько одновременных входящих соединений.
Disable -custom Context Includes - Отключить кастом включения в контексты - true/false
Обычно FreePBX автоматически генерирует кастомные контексты которые могут использоваться для добавления пользовательских диал-планов чтобы изменить стандартное поведение FreePBX. Все вложения такого рода вызывают обычно сообщения WARNING! в журнале если не найден контекст на который ссылается инклюд, но это не является ошибкой. Если вы уверены, что вам понадобятся вложения можно установить этот параметр в true. В противном случае FreePBX генерирует несуществующие инклюды в контекстах так же как в предыдущих версиях.
Extension Concurrency Limit - Лимит одновременных вызовов для внутренних номеров - 3
Количество одновременных исходящих вызовов которые может совершить внутренний номер. Это ОЧЕНЬ полезно в качестве дополнительной меры безопасности. В случае взлома системы ограничивает количество одновременных исходящих вызовов которые могут быть сделаны со взломанного внутреннего номера. По умолчанию, при создании внутреннего номера значение '0', что соответствует неограниченному количеству вызовов.
Feature Codes Beep Only - Использовать только звуковой сигнал для подтверждения операций сервисных кодов - true/false
Если установлено в true то вместо подтверждающих голосовых сообщений при активации и деактивации режимов FollowMe, CallWaiting, DND, итд, будет воспроизводиться просто звуковой сигнал.
Generate Diversion Headers - Генерировать заголовки перенаправления - true/false
Если установлено в true то исходящие вызовы, которые являются, на самом деле, последовательно перенаправленными входящими из Ring Groups, Follow Me или др., будут иметь дополнительные SIP заголовки diversion, в которых будет содержаться оригинальный DID на который пришёл начальный вызов, предполагая, что этот DID доступен. Это может быть полезно при соединениях с некоторыми операторами, которые могут требовать этого, в качестве обязательного условия при перенаправленных звонках.
Asterisk Dial Options - Опции передаваемые команде Dial() - Ttr
Опции передаваемые команде Dial() при совершении внутренних вызовов. Полный список команд содержится описании команды Dial(). Опции по умолчанию:
T - разрешает переадресацию вызова (transfer) вызывающему абоненту.
t - разрешает переадресацию вызова (transfer) ответившему абоненту.
r - генерирует КПВ.
1. Для обновления через proxy, включаем использование wget:
Setting → Advanced Settings → Раздел GUI Behavior → Use wget For Module Admin: True
либо равнозначной командой:
sudo /var/lib/asterisk/bin/freepbx_setting MODULEADMINWGET 1
2. Прописываем адрес прокси в: Setting → Advanced Settings → Раздел Proxy Settings
либо равнозначной командой пример для proxy.domain.com (без аутентификационных данных):
sudo /var/lib/asterisk/bin/freepbx_setting PROXY_ENABLED 1 sudo /var/lib/asterisk/bin/freepbx_setting PROXY_ADDRESS proxy.domain.com:3128
или адрес прокси для wget можно прописать в глобальном файле конфигурации в /etc/wgetrc.
Добавляем в крон:
echo '#!/bin/sh' | sudo tee /etc/cron.daily/freepbx echo 'find /var/www/html/admin/modules/_cache/*.tgz.gpg -mtime +90 -exec rm {} \;' | sudo tee -a /etc/cron.daily/freepbx sudo chmod +x /etc/cron.daily/freepbx
Пример проверки подписи:
su -l asterisk -c 'gpg --verify /var/www/html/admin/modules/_cache/core-13.0.116.tgz.gpg'
Downgrade модуля, на примере framework-13.0.190.5.tgz.gpg:
gpg --output /tmp/framework-13.0.190.5.tgz --decrypt /var/www/html/admin/modules/_cache/framework-13.0.190.5.tgz.gpg sudo rm -rf /var/www/html/admin/modules/framework sudo tar xzf /tmp/framework-13.0.190.5.tgz -C /var/www/html/admin/modules/ sudo chown -R asterisk:asterisk /var/www/html/admin/modules/framework
Обновляем через GUI или через консоль:
sudo fwconsole ma install framework
Настройка VoIP шлюза D-Link DVG-XXXX - http://www.lynks.ru/blog/nastroika-voip-shlyuza-d-link-dvg-xxxx
Grandstream GXW - http://awsswa.livejournal.com/17681.html
Заисает amportal при запуке:
amportal start Please wait... SETTING FILE PERMISSIONS chattr : Operation not supported while reading flags on /var/www/html/cxpanel Permissions OK Removing any dangling symlinks Dangling symlinks removed STARTING ASTERISK
Изменил строчку в /usr/sbin/safe_asterisk в run_asterisk():
nice -n $PRIORITY ${ASTSBINDIR}/asterisk -f ${CLIARGS} ${ASTARGS}> /dev/${TTY} 2>&1 </dev/${TTY} &
Нужно установить и настроить ODBC драйвер:
sudo apt-get install libmyodbc
/etc/odbcinst.ini
[MySQL] Description = ODBC for MySQL Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so FileUsage = 1
sudo odbcinst -q -d
ответ: [MySQL]
Следующие настройки берем из /etc/asterisk/res_odbc_additional.conf
/etc/odbc.ini
[MySQL-asteriskcdrdb] Description = MySQL connection to 'asteriskcdrdb' database Driver = MySQL Database = asteriskcdrdb Server = localhost UserName = asteriskuser Password = password Port = 3306 Socket = /var/run/mysqld/mysqld.sock
http://www.asteriskdocs.org/en/3rd_Edition/asterisk-book-html-chunk/installing_configuring_odbc.html
sudo sed -i 's/cc_callback_macro/cc_callback_sub/' /var/www/html/admin/modules/campon/functions.inc.php
sudo sed -i 's/CALLERPRES()/CALLERID(name-pres)/' /var/www/html/admin/modules/core/functions.inc.php sudo sed -i 's/CALLERPRES()/CALLERID(name-pres)/' /var/www/html/admin/libraries/extensions.class.php
sudo sed -i "s/'_\.'/'_X\.'/" /var/www/html/admin/modules/core/functions.inc.php sudo sed -i "s/_\./_X\./" /var/www/html/admin/modules/core/etc/extensions.conf sudo sed -i "s/'_\.'/'_X\.'/" /var/www/html/admin/modules/queues/functions.inc/dialplan.php
Необходимо удалить символы (!) в первой строчке /etc/asterisk.org/asterisk.conf:
с
[directories](!)
на
[directories]
Необходиммо установить модуль voicemail для версии 12 и ниже:
sudo amportal a ma download voicemail sudo amportal a ma install voicemail
либо для версии 13 и выше:
sudo fwconsole ma download voicemail sudo fwconsole ma install voicemail
Исправление для InnoDB.
http://community.freepbx.org/t/fatal-error-when-updateing-core/28392
FreePBX Advanced Settings → Session Limit: 100
После установки модуля findmefollow при нажатии в web интерфейсе Apply появляется ошибка.
Необходимо изменить таблицу:
ALTER TABLE findmefollow CONVERT TO CHARACTER SET utf8;
Одной командой:
mysql -u`grep -i user /var/lib/asterisk/.odbc.ini | awk -F' = ' '{print $2}'` -p`grep -i password /var/lib/asterisk/.odbc.ini | awk -F' = ' '{print $2}'` -e "ALTER TABLE findmefollow CONVERT TO CHARACTER SET utf8;" asterisk