Home » Asterisk » Установка Asterisk 16 на Debian 10

Установка Asterisk 16 на Debian 10

Расскажу без лишних комментариев и отступлений об установке чистого asterisk 16 на сервер Debian 10 Buster. Ранее я уже рассматривал этот вопрос на разных дистрибутивах и версиях. Сейчас просто освежу и актуализирую предыдущие заметки на тему установки астериска, чтобы можно было простым копипастом быстро все развернуть на голом сервере. У меня по старым инструкциям не получилось, были ошибки небольшие, поэтому решил заново описать, как быстро установить asterisk на debian.

Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Курс стоящий, все подробности читайте по ссылке. Есть бесплатные курсы.

Данная статья является частью единого цикла статьей про сервер Debian.

Введение

Если у вас еще не настроен сервер с Debian, рекомендую мои материалы на эту тему:

Я не буду касаться вопроса настройки фаервола, буду считать, что он выключен. Но на сервере с астериском, особенно если он смотрит в интернет напрямую, обязательно надо настроить firewall. По этому поводу рекомендую мою подробную статью по настройке iptables. Там хоть и идет речь о другой операционной системе, но сами правила iptables во всех системах абсолютно одинаковые.

Для отладки и тестирования работы voip я рекомендую сервис Zadarma. Плюс его в том, что после регистрации вы получите настройки пира для внутренней сети оператора. И внутри этой сети вы можете бесплатно звонить. Например, я одного пира регистрирую на sip клиенте смартфона и с него звоню на второй аккаунт, пир от которого настроен в астериске. Таким образом эмулирую внешний звонок. Удобно отлаживать различные конфигурации звонков, не требуя платного подключения.

Приступаем к установке астериска. Я буду работать на следующей системе:

Debian 10 Buster

Загрузка 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

Установка зависимостей для asterisk

В процессе установки вам могут задавать различные вопросы. Везде можно выбирать дефолтные значения. Дальше скачаем исходники 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 из исходников

Теперь устанавливаем asterisk 16 и все его модули.

# make install

В процессе установки инсталлятор будет загружать некоторые файлы, к примеру wav файлы, из интернета. По окончании установки, увидите сообщение.

Установка asterisk 16 на debian 10

Формируем образцы файлов конфигурации, чтобы не писать их с нуля самим.

# 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.

Онлайн курс Infrastructure as a code

Если у вас есть желание научиться автоматизировать свою работу, избавить себя и команду от рутины, рекомендую пройти онлайн курс Infrastructure as a code. в OTUS. Обучение длится 4 месяца. Что даст вам этот курс:
  • Познакомитесь с Terraform.
  • Изучите систему управления конфигурацией Ansible.
  • Познакомитесь с другими системами управления конфигурацией - Chef, Puppet, SaltStack.
  • Узнаете, чем отличается изменяемая инфраструктура от неизменяемой, а также научитесь выбирать и управлять ей.
  • В заключительном модуле изучите инструменты CI/CD: это GitLab и Jenkins
Смотрите подробнее программу по .

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

42 комментария

  1. У меня вот такая проблема на 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 файла нет

  2. Сергей

    поставил как в мануале,только asterisk-13-current.tar.gz
    Заработали внешние звонки через VPN. - Спасибо!!!!!!!!!!!!!!!!!!

  3. Сергей

    поставил на raspberry pi3 - работают номера только внутри сети.
    Если подключаться к asterisk через vpn,то подключение есть,звонок проходит в обе стороны,но никого не слышно.
    Преодоление Nat как-то надо настроить - я не знаю.
    Пробовал freepbx - все ок.

  4. какой web gui проще всего будет прикрутить?

  5. Здравствуйте! Предполагаю, что вам уже порядком надоели эти словесные благодарности, но всё же - спасибо вам за ваши статьи!
    Подскажите, какие вы используете аналоги пакета mariadb-connector-odbc.x86_64 и пакета unixODBC-devel.x86_64 для debain? Ведь эти центосовские пакеты даже называются по своему. Не получается заставить asterisk делать записи в базу...
    Ещё раз - спасибо!

  6. Владимир

    Запускаем консоль астериск и убеждаемся, что он работает:
    asterisk -r

  7. Максим

    Все делал по инструкции . Выдает
    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

  8. У кого выдает ошибку при установки contrib/scripts/get_mp3_source.sh: svn: not found
    В водим apt-get install subversion . И все устанавливается ! Долго искал решение проблемы !

  9. # apt install asterisk
    ...
    The following NEW packages will be installed:
    asterisk (1:16.2.1~dfsg-1+deb10u1)
    ...

    • Кстати, самый простой и удобный способ установки. Я сам всегда предпочитаю из пакетов ставить, если есть возможность. Но почему-то народ привык собирать из исходников, поэтому большой спрос на такие статьи. Я их по привычке поддерживаю.

  10. Добрый день. Просьба ответить на мои вопросы:
    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

    Вопрос: что может быть?

    • Все эти вопросы отлично гуглятся. Рекомендую ознакомиться самостоятельно. Там написано более полно, чем отвечу я.

      • Я решил пойти по более лёгкому пути и спросить у экспертов т.к. делал всё по Вашему мануалу.))

  11. Добрый день. А обязательно ставить утилиты pjsip и jansson? Что будет если их не поставить??

  12. 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 ни слова. куда двигаться дальше.
      Спасибо.

      • я тупой, но не безнадежный...((( Спасибо за мануал, все работает как нужно!

  13. Сделал согласно статьи (спасибо).
    Но последняя ошибка все равно не ушла и фигурирует одна строка в статусе: 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] раскомментирован, в а другом закомментирован.
          Отсюда и ошибка.
          Спасибо за статью.

  14. Цитата:
    "В процессе установки вам могут задавать различные вопросы. Везде можно выбирать дефолтные значения. Дальше скачаем исходники mp3, которые нужны для сборки mp3 модуля."
    В процессе установки появляется диалоговое окно с указанием кода страны. По умолчанию 61, а в РФ используется 7.
    Можно исправить мануал с указанием этого момента, подкрепленный скриншотом.
    Или все-таки нужно жать далее ничего не меняя?

    • Это не принципиально. Вы этот код нигде использовать не будете. Я не знаю точно, зачем он нужен сейчас, но подозреваю, что эта настройка тянется с тех времен, когда использовались железные платы для подключения к астериск аналоговых или каких-то еще линий. Сейчас все эти коды вы будете явно указывать в диалплане.

  15. Спасибо за статью!
    Есть вопрос, как установить астер с Mariadb?

    • Примерно так же. Если не ошибаюсь, надо перед установкой asterisk установить пакеты mariadb, mariadb-server, mariadb-client, может еще что-то. А потом при сборке астера выбрать в menuselect модули с mysql. Это все гипотетически, сам давно не пробовал. Но раньше это не представляло какой-то особенной сложности.

      • Там проблема в другом! даже на скрине в текущем гайде, видно, что модуль res_config_mysql не активен(помечен крестами), соответственно получаем болт при привязке конфиг к бд. Можно пойти по простому пути и поставить туеву кучу пакетов из манов в интернете, но не очень то охота)))

        • Этот модуль не активен как раз потому, что в системе не хватает каких-то либ от mysql. Если их поставить заранее, то пункт станет активен. Надо просто потестировать на какой-то виртуалке, или в инете поискать, какие точно пакеты нужны.

      • Сижу, короче ищу)). Ставил бд - клиент+ сервер+ еще чего-то, но не помогло пока.

  16. После этой (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. Первая ошибка явно об этом говорит. Попробуйте его заменить на другой.

  17. Алексей

    Спасибо за статью.

    Если есть уже установленный и настроенный Asterisk 11-й версии и необходимо настроить на филиале в другом городе еще один Asterisk этой последней версии, то большая вероятность, что они будут несовместимы между собой? У каждого Asterisk-а свои внешние транки от местных провайдеров, также будет настроить IAX транк между ними.

    Цель обычная здесь - связать эти два PBX, чтобы юзера с разных двух городов могли общаться между собой по внутренним номерам.

  18. Огромное Вам СПАСИБО за отличный мануал! Давно ждал :) Буду пробовать!

Добавить комментарий

Ваш адрес email не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.