Расскажу без лишних комментариев и отступлений об установке чистого asterisk 16 на сервер Debian 10 Buster. Ранее я уже рассматривал этот вопрос на разных дистрибутивах и версиях. Сейчас просто освежу и актуализирую предыдущие заметки на тему установки астериска, чтобы можно было простым копипастом быстро все развернуть на голом сервере. У меня по старым инструкциям не получилось, были ошибки небольшие, поэтому решил заново описать, как быстро установить asterisk на debian.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Содержание:
Данная статья является частью единого цикла статьей про сервер Debian.
Введение
Если у вас еще не настроен сервер с Debian, рекомендую мои материалы на эту тему:
Я не буду касаться вопроса настройки фаервола, буду считать, что он выключен. Но на сервере с астериском, особенно если он смотрит в интернет напрямую, обязательно надо настроить firewall. По этому поводу рекомендую мою подробную статью по настройке iptables. Там хоть и идет речь о другой операционной системе, но сами правила iptables во всех системах абсолютно одинаковые.
Для отладки и тестирования работы voip я рекомендую сервис Zadarma. Плюс его в том, что после регистрации вы получите настройки пира для внутренней сети оператора. И внутри этой сети вы можете бесплатно звонить. Например, я одного пира регистрирую на sip клиенте смартфона и с него звоню на второй аккаунт, пир от которого настроен в астериске. Таким образом эмулирую внешний звонок. Удобно отлаживать различные конфигурации звонков, не требуя платного подключения.
Приступаем к установке астериска. Я буду работать на следующей системе:
Загрузка asterisk на сервер
Я буду устанавливать LTS версию Asterisk 16. Советую для долгосрочного использования всегда использовать LTS версии. Они в целом стабильнее и дольше срок поддержки. Идем на страницу https://www.asterisk.org/downloads/asterisk/all-asterisk-versions и копируем ссылку на нужную версию. Загружаем ее на сервер.
# cd /usr/src # wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
После загрузки, сразу распаковываем.
# tar xzvf asterisk-16-current.tar.gz
Переходим в директорию с исходниками asterisk 16.
# cd asterisk-16.*
Установка зависимостей для asterisk 16
Установим теперь все необходимые зависимости в debian. Перебирать вручную их нет необходимости. Все зависимости собраны в скрипте, который надо запустить, находясь в директории с исходниками.
# contrib/scripts/install_prereq install
В процессе установки вам могут задавать различные вопросы. Везде можно выбирать дефолтные значения. Дальше скачаем исходники mp3, которые нужны для сборки mp3 модуля.
# contrib/scripts/get_mp3_source.sh
Это все необходимые зависимости. Можно приступать к сборке и установке asterisk 16
Установка Asterisk 16 на Debian 10
Запускаем скрипт подготовки исходников asterisk к компиляции.
# ./configure
Успешное завершение подготовки будет ознаменовано следующим выводом в консоль.
На следующем этапе мы будем выбирать компоненты астериска для установки.
# make menuselect
К тому, что установлено по-умолчанию, я добавляю:
- На первой вкладке format_mp3.
- В Core Sound Packages указываю русские звуки RU-WAV.
- В Extras Sound Packages выбираю английский EN-WAV, русского, к сожалению, нет.
Продолжаю, после принятия настроек, нажатием на Save & Exit. Компилируем, добавляя ключ j4. В данном случае у меня 4 ядра на сервере, сборка будет происходить с участием всех ядер.
# make -j4
Успешное окончание сборки будет обозначено сообщением в консоли.
Теперь устанавливаем asterisk 16 и все его модули.
# make install
В процессе установки инсталлятор будет загружать некоторые файлы, к примеру wav файлы, из интернета. По окончании установки, увидите сообщение.
Формируем образцы файлов конфигурации, чтобы не писать их с нуля самим.
# make samples
В завершении установки, создаем init скрипт.
# make config
Можно еще обновить кэш используемых динамических библиотек.
# ldconfig
На этом непосредственно установка asterisk 16 закончена.
Запуск asterisk
По-умолчанию, asterisk установлен от root и будет запускаться от него же. Я предлагаю для этого создать отдельного пользователя и запускать астериск от него. Для этого создаем пользователя и добавляем его в некоторые группы.
# adduser --system --group --home /var/lib/asterisk --no-create-home --gecos "Asterisk" asterisk # usermod -a -G dialout,audio asterisk
Настраиваем Asterisk на запуск под этим пользователем. Для этого добавляем в конфиг /etc/default/asterisk параметры:
AST_USER="asterisk" AST_GROUP="asterisk"
Назначаем новому пользователю права на директории астериска.
# chown -R asterisk: /var/{lib,log,run,spool}/asterisk /usr/lib/asterisk /etc/asterisk
Пробуем запустить asterisk:
# systemctl start asterisk
Если нет сообщений об ошибке, скорее всего все в порядке. Проверяем статус службы.
# systemctl status asterisk
Asterisk запустился, но у меня ошибка:
radcli: rc_read_config: rc_read_config: can't open /etc/radiusclient-ng/radiusclient.conf: No such file or directory
Не может найти необходимый конфиг. Я проверил глазами, директории /etc/radiusclient-ng действительно нет, но есть /etc/radcli, где находится указанный в ошибке конфиг radiusclient.conf. Подозреваю, что это он и есть. Посмотрел, где в конфигах астериска используется этот путь. Оказалось, что в /etc/asterisk/cdr.conf и /etc/asterisk/cel.conf. Я там раскомментировал параметры, где указан ошибочный путь и указал правильный.
В /etc/asterisk/cdr.conf раскомментировал и отредактировал строки:
[radius] radiuscfg => /etc/radcli/radiusclient.conf
То же самое в /etc/asterisk/cel.conf:
[radius] radiuscfg => /etc/radcli/radiusclient.conf
После этого перезапустил астериск и проверил, все было в порядке.
# systemctl restart asterisk # systemctl status asterisk
Добавим астериск в автозагрузку:
# systemctl enable asterisk
Запускаем консоль астериск и убеждаемся, что он работает:
# rasterisk
Все в порядке, сервер телефонии asterisk установлен и готов к работе. Можно заниматься настройкой.
Заключение
Мы установили оригинальную версию asterisk 16 на сервер под управлением debian 10 без каких-либо дополнений и web панелей. Дальше можно приступать к настройке. Я рекомендую воспользоваться моей инструкцией по базовой настройке asterisk с нуля. Там подробно рассказано как сконфигурировать основной функционал, который удовлетворит потребности в телефонии для среднестатистического офиса. Настройка включает в себя так же запись разговоров и подробную статистику звонков.
Напоминаю, что данная статья является частью единого цикла статьей про сервер Debian.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
С каналом ALSA не работаете?
Собрал астер по вашей инструкции, включил загрузку модуля chan_alsa.so и отключил chan_console.so и chan_oss.so. В минимально необходимой степени настроил alsa.conf. Но при попытке включить модуль получаю ошибку:
d10*CLI> module load chan_alsa.so
Unable to load module chan_alsa.so
Command 'module load chan_alsa.so' failed.
[Feb 16 00:04:30] ERROR[14154]: chan_alsa.c:190 alsa_card_init: snd_pcm_open failed: No such file or directory
[Feb 16 00:04:30] ERROR[14154]: chan_alsa.c:286 soundcard_init: Problem opening alsa capture device
== No sound card detected -- console channel will be unavailable
== Turn off ALSA support by adding 'noload=chan_alsa.so' in /etc/asterisk/modules.conf
Случайно не знаете в чём может быть проблема?
Владимир, здравствуйте! Огромное спасибо за огромный труд! За то, что делитесь его результатами. Скажите, пожалуйста, канал "Бывших IT-шников не бывает!" на Дзене - это Ваш? Или это плагиат Ваших статей? (https://dzen.ru/id/5e5bcc0c91ed7368b654cfd8)
Благодарю за добрые слова. Это плагиат, канал не мой.
Было бы замечательно, если бы развернули asterisk на alt server из исходников, а то по стране активно продвигают "Российские операционки", а инструкций толковых нету совсем.
sed -i 's/;\[radius\]/\[radius\]/' /etc/asterisk/cdr.conf
sed -i 's/;\[radius\]/\[radius\]/' /etc/asterisk/cel.conf
echo 'radiuscfg => /etc/radcli/radiusclient.conf' >> /etc/asterisk/cdr.conf
echo 'radiuscfg => /etc/radcli/radiusclient.conf' >> /etc/asterisk/cel.conf
systemctl enable --now asterisk
Абсолютно ни каких ошибок serveradmin.ru мы с тобой !!!!
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Jan 9 14:38:29 2022 from 10.10.50.90
load-net@dcload:~$ systemctl status asterisk
● asterisk.service - LSB: Asterisk PBX
Loaded: loaded (/etc/init.d/asterisk; generated)
Active: active (running) since Sun 2022-01-09 15:55:39 +05; 50s ago
Docs: man:systemd-sysv-generator(8)
Process: 445 ExecStart=/etc/init.d/asterisk start (code=exited, status=0/SUCCESS)
Tasks: 71 (limit: 1117)
Memory: 110.2M
CPU: 5.636s
CGroup: /system.slice/asterisk.service
└─488 /usr/sbin/asterisk -U asterisk -G asterisk
Warning: some journal files were not opened due to insufficient permissions.
load-net@dcload:~$ uname -a
Linux dcload 5.10.0-10-amd64 #1 SMP Debian 5.10.84-1 (2021-12-08) x86_64 GNU/Linux
load-net@dcload:~$
ps
Пытался запустить астер на CentOS-Stream-9-latest-x86_64-dvd1
вот что получил спустя 1.5 часа
[root@asterdc1 ~]# systemctl status asterisk
× asterisk.service - LSB: Asterisk PBX
Loaded: loaded (/etc/rc.d/init.d/asterisk; generated)
Active: failed (Result: exit-code) since Sat 2021-12-25 02:21:33 +05; 2 weeks 1 day ago
Docs: man:systemd-sysv-generator(8)
Process: 794 ExecStart=/etc/rc.d/init.d/asterisk start (code=exited, status=1/FAILURE)
CPU: 6ms
дек 25 02:21:33 asterdc1 systemd[1]: Starting LSB: Asterisk PBX...
дек 25 02:21:33 asterdc1 asterisk[794]: /etc/rc.d/init.d/asterisk: строка 42: /etc/rc.d/init.d/functions: Нет >
дек 25 02:21:33 asterdc1 systemd[1]: asterisk.service: Control process exited, code=exited, status=1/FAILURE
дек 25 02:21:33 asterdc1 systemd[1]: asterisk.service: Failed with result 'exit-code'.
дек 25 02:21:33 asterdc1 systemd[1]: Failed to start LSB: Asterisk PBX.
lines 1-12/12 (END)
× asterisk.service - LSB: Asterisk PBX
Loaded: loaded (/etc/rc.d/init.d/asterisk; generated)
Active: failed (Result: exit-code) since Sat 2021-12-25 02:21:33 +05; 2 weeks 1 day ago
Docs: man:systemd-sysv-generator(8)
Process: 794 ExecStart=/etc/rc.d/init.d/asterisk start (code=exited, status=1/FAILURE)
CPU: 6ms
дек 25 02:21:33 asterdc1 systemd[1]: Starting LSB: Asterisk PBX...
дек 25 02:21:33 asterdc1 asterisk[794]: /etc/rc.d/init.d/asterisk: строка 42: /etc/rc.d/init.d/functions: Нет такого файла ил>
дек 25 02:21:33 asterdc1 systemd[1]: asterisk.service: Control process exited, code=exited, status=1/FAILURE
дек 25 02:21:33 asterdc1 systemd[1]: asterisk.service: Failed with result 'exit-code'.
дек 25 02:21:33 asterdc1 systemd[1]: Failed to start LSB: Asterisk PBX.
~
lines 1-12/12 (END)
^C
[root@asterdc1 ~]# uname -a
Linux asterdc1 5.14.0-34.el9.x86_64 #1 SMP PREEMPT Sat Dec 18 02:57:53 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
[root@asterdc1 ~]#
yum install -y initscripts
У меня вот такая проблема на debian
root@orangepi3:~# systemctl status asterisk
● asterisk.service - LSB: Asterisk PBX
Loaded: loaded (/etc/init.d/asterisk; generated; vendor preset: enabled)
Active: active (exited) since Tue 2020-09-22 12:31:47 UTC; 1h 2min ago
Docs: man:systemd-sysv-generator(8)
Tasks: 0 (limit: 4915)
CGroup: /system.slice/asterisk.service
Sep 22 12:31:47 orangepi3 systemd[1]: Starting LSB: Asterisk PBX...
Sep 22 12:31:47 orangepi3 asterisk[1830]: ERROR: /usr/sbin/asterisk not found
Sep 22 12:31:47 orangepi3 systemd[1]: Started LSB: Asterisk PBX.
root@orangepi3:~# rasterisk
-bash: rasterisk: command not found
По пути ERROR: /usr/sbin/asterisk not found файла нет
поставил как в мануале,только asterisk-13-current.tar.gz
Заработали внешние звонки через VPN. - Спасибо!!!!!!!!!!!!!!!!!!
поставил на raspberry pi3 - работают номера только внутри сети.
Если подключаться к asterisk через vpn,то подключение есть,звонок проходит в обе стороны,но никого не слышно.
Преодоление Nat как-то надо настроить - я не знаю.
Пробовал freepbx - все ок.
какой web gui проще всего будет прикрутить?
Если нужен web gui, я бы сразу рекомендовал ставить freepbx.
Здравствуйте! Предполагаю, что вам уже порядком надоели эти словесные благодарности, но всё же - спасибо вам за ваши статьи!
Подскажите, какие вы используете аналоги пакета mariadb-connector-odbc.x86_64 и пакета unixODBC-devel.x86_64 для debain? Ведь эти центосовские пакеты даже называются по своему. Не получается заставить asterisk делать записи в базу...
Ещё раз - спасибо!
Можно эти попробовать для unixodbc - unixodbc unixodbc-dev odbcinst. А сам коннектор mariadb, если вдруг его нет в репах debian (не проверял), можно собрать из исходников - https://downloads.mariadb.org/connector-odbc/3.1.6/ https://github.com/MariaDB/mariadb-connector-odbc.git
Перепробовал несколько версий коннекоторов mariadb. На debian buster все версии 3.* - не работают. Поставил 2.0.19 - работает. Провозился... На centos 8 - вообще таких проблем нет...
Запускаем консоль астериск и убеждаемся, что он работает:
asterisk -r
Все делал по инструкции . Выдает
oot@max:/etc/asterisk# systemctl status asterisk
● asterisk.service - LSB: Asterisk PBX
Loaded: loaded (/etc/init.d/asterisk; generated)
Active: active (exited) since Thu 2020-02-13 14:50:56 MSK; 9min ago
Docs: man:systemd-sysv-generator(8)
Process: 1401 ExecStart=/etc/init.d/asterisk start (code=exited, status=0/SUCCESS)
фев 13 14:50:55 max systemd[1]: Starting LSB: Asterisk PBX...
фев 13 14:50:56 max asterisk[1401]: Starting Asterisk PBX: asterisk/usr/sbin/asterisk already running.
фев 13 14:50:56 max asterisk[1401]: .
фев 13 14:50:56 max systemd[1]: Started LSB: Asterisk PBX.
root@max:/etc/asterisk# rasterisk
bash: rasterisk: команда не найдена
Надо системный лог и лог астериска смотреть, почему он не запускается.
как решилась проблема? аналогичная ситуация при вводе команды rasterisk выдает bash: rasterisk: команда не найдена
Тут варианта 2. Либо астериск не установился, а вместе с ним и утилита rasterisk. Либо из консоли она не запускается, потому что в переменной path не указан путь до директории, где лежит rasterisk. Кажется, я уже видел подобные ошибки именно на debian. У меня нет под рукой debian 10 с астериском, чтобы точно проверить. Попробуйте просто через поиск найти rasterisk и запустить по полному пути.
проверю, однако астериск точно установился и такая проблема наблюдается только после первой перезагрузки.
вопрос решился использованием команды su -
вместо rastrisk запускаем командой asterisk -r
У кого выдает ошибку при установки contrib/scripts/get_mp3_source.sh: svn: not found
В водим apt-get install subversion . И все устанавливается ! Долго искал решение проблемы !
# apt install asterisk
...
The following NEW packages will be installed:
asterisk (1:16.2.1~dfsg-1+deb10u1)
...
Кстати, самый простой и удобный способ установки. Я сам всегда предпочитаю из пакетов ставить, если есть возможность. Но почему-то народ привык собирать из исходников, поэтому большой спрос на такие статьи. Я их по привычке поддерживаю.
Добрый день. Просьба ответить на мои вопросы:
1) А обязательно ставить утилиты pjsip и jansson?
2) Что будет если их не поставить??
3) для каких целей они нужны на сервере телефонии?
4) есть такая ситуация Итак установил Астер с прогрмными утилитами pjsip, jansson, dahdi, libpri. система Centos8. настроил конфигурацию, как и Ранее, файлы extensions.conf и sip.conf. Сделал соответственно core reload. пытаюсь пидключить софтфон выдает следующее:
res_pjsip / pjsip_distributor.c: 676 log_failed_request
Вопрос: что может быть?
Все эти вопросы отлично гуглятся. Рекомендую ознакомиться самостоятельно. Там написано более полно, чем отвечу я.
Я решил пойти по более лёгкому пути и спросить у экспертов т.к. делал всё по Вашему мануалу.))
Добрый день. А обязательно ставить утилиты pjsip и jansson? Что будет если их не поставить??
Debian 10
Все пошагово по мануалу, но после запуска консоли командой "rasterisk" получаю следующее Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?) подскажите пожалуйста в какую сторону двигаться с решением.
Спасибо.
Решалась проблема. Просмотрел внимательно конфиги, беда была такая же как и предидущего коментатора с закоментированным [radius]. но теперь по факту запуска проверик статуса астериска я вижу тоже что и представленно на скриншоте в манале, а вот запуская rasterisk консол пишет
Asterisk 16.5.1, Copyright (C) 1999 - 2018, Digium, Inc. and others.
Created by Mark Spencer
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 16.5.1 currently running on asterisk (pid = 572)
asterisk*CLI>
видимо что то не доустановленно т.к про SIP ни слова. куда двигаться дальше.
Спасибо.
я тупой, но не безнадежный...((( Спасибо за мануал, все работает как нужно!
Сделал согласно статьи (спасибо).
Но последняя ошибка все равно не ушла и фигурирует одна строка в статусе: radcli: rc_read_config: rc_read_config: can't open /etc/radiusclient-ng/radiusclient.conf: No such file or directory
Может быть еще должен быть какой-то файл конфигурации, где нужно прописать путь к файлу radiusclient.conf?
Проверяйте внимательно. Я привел исправление этой ошибки. Скорее всего где-то напутали.
root@asterdeb:/etc/asterisk# grep radiusclient.conf *.*
cdr.conf:; variable is properly pointing to an existing radiusclient.conf file.
cdr.conf:; The default is /etc/radiusclient-ng/radiusclient.conf
cdr.conf:radiuscfg => /etc/radcli/radiusclient.conf
cel.conf:; The default is /etc/radiusclient-ng/radiusclient.conf
cel.conf:radiuscfg => /etc/radcli/radiusclient.conf
Вроде бы нигде не ошибся. Попробую снова настроить, может быть где-то по пути ошибся.
Переделал. В одном файле [radius] раскомментирован, в а другом закомментирован.
Отсюда и ошибка.
Спасибо за статью.
Цитата:
"В процессе установки вам могут задавать различные вопросы. Везде можно выбирать дефолтные значения. Дальше скачаем исходники mp3, которые нужны для сборки mp3 модуля."
В процессе установки появляется диалоговое окно с указанием кода страны. По умолчанию 61, а в РФ используется 7.
Можно исправить мануал с указанием этого момента, подкрепленный скриншотом.
Или все-таки нужно жать далее ничего не меняя?
Это не принципиально. Вы этот код нигде использовать не будете. Я не знаю точно, зачем он нужен сейчас, но подозреваю, что эта настройка тянется с тех времен, когда использовались железные платы для подключения к астериск аналоговых или каких-то еще линий. Сейчас все эти коды вы будете явно указывать в диалплане.
Спасибо за статью!
Есть вопрос, как установить астер с Mariadb?
Примерно так же. Если не ошибаюсь, надо перед установкой asterisk установить пакеты mariadb, mariadb-server, mariadb-client, может еще что-то. А потом при сборке астера выбрать в menuselect модули с mysql. Это все гипотетически, сам давно не пробовал. Но раньше это не представляло какой-то особенной сложности.
Там проблема в другом! даже на скрине в текущем гайде, видно, что модуль res_config_mysql не активен(помечен крестами), соответственно получаем болт при привязке конфиг к бд. Можно пойти по простому пути и поставить туеву кучу пакетов из манов в интернете, но не очень то охота)))
Этот модуль не активен как раз потому, что в системе не хватает каких-то либ от mysql. Если их поставить заранее, то пункт станет активен. Надо просто потестировать на какой-то виртуалке, или в инете поискать, какие точно пакеты нужны.
Сижу, короче ищу)). Ставил бд - клиент+ сервер+ еще чего-то, но не помогло пока.
После этой (contrib/scripts/install_prereq install) команды получил:
E: Failed to fetch http://mirror.corbina.net/debian/pool/main/libw/libwebp/libwebp6_0.6.1-2_amd64.deb: Undetermined Error [IP: 195.14.50.21 80]
E: Unable to fetch some packages; try '-o APT::Get::Fix-Missing=true' to continue with missing packages
А после этой (contrib/scripts/get_mp3_source.sh) получил в консоли:
contrib/scripts/get_mp3_source.sh: 18: contrib/scripts/get_mp3_source.sh: svn: not found
У вас что-то с сетью или доступом к репозиторию mirror.corbina.net. Первая ошибка явно об этом говорит. Попробуйте его заменить на другой.
Спасибо за статью.
Если есть уже установленный и настроенный Asterisk 11-й версии и необходимо настроить на филиале в другом городе еще один Asterisk этой последней версии, то большая вероятность, что они будут несовместимы между собой? У каждого Asterisk-а свои внешние транки от местных провайдеров, также будет настроить IAX транк между ними.
Цель обычная здесь - связать эти два PBX, чтобы юзера с разных двух городов могли общаться между собой по внутренним номерам.
Скорее всего все будет нормально работать. У меня даже пример есть, как объединить между собой два астериска - https://serveradmin.ru/soedinit-2-asterisk-servera-mezhdu-soboy/
Огромное Вам СПАСИБО за отличный мануал! Давно ждал :) Буду пробовать!