Расскажу без лишних комментариев и отступлений об установке чистого asterisk 16 на сервер Debian 10 Buster. Ранее я уже рассматривал этот вопрос на разных дистрибутивах и версиях. Сейчас просто освежу и актуализирую предыдущие заметки на тему установки астериска, чтобы можно было простым копипастом быстро все развернуть на голом сервере. У меня по старым инструкциям не получилось, были ошибки небольшие, поэтому решил заново описать, как быстро установить asterisk на debian.
Данная статья является частью единого цикла статьей про сервер 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.
С каналом 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/
Огромное Вам СПАСИБО за отличный мануал! Давно ждал :) Буду пробовать!