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

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

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

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти .

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

Введение

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

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

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

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.

Онлайн курс "DevOps практики и инструменты"

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Проверьте себя на вступительном тесте и смотрите программу детальнее по .

Помогла статья? Есть возможность отблагодарить автора

Автор Zerox

Zerox
Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству.

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

  1. Аватар

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

  2. Аватар
    Владимир

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

  3. Аватар

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

  4. Аватар

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

  5. Аватар

    # apt install asterisk

    The following NEW packages will be installed:
    asterisk (1:16.2.1~dfsg-1+deb10u1)

    • Zerox

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

  6. Аватар

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

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

    • Zerox

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

      • Аватар

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

  7. Аватар

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

  8. Аватар

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

  9. Аватар

    Сделал согласно статьи (спасибо).
    Но последняя ошибка все равно не ушла и фигурирует одна строка в статусе: radcli: rc_read_config: rc_read_config: can’t open /etc/radiusclient-ng/radiusclient.conf: No such file or directory

    Может быть еще должен быть какой-то файл конфигурации, где нужно прописать путь к файлу radiusclient.conf?

    • Zerox

      Проверяйте внимательно. Я привел исправление этой ошибки. Скорее всего где-то напутали.

      • Аватар

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

  10. Аватар

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

    • Zerox

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

  11. Аватар

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

    • Zerox

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

      • Аватар

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

        • Zerox

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

      • Аватар

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

  12. Аватар

    После этой (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

    • Zerox

      У вас что-то с сетью или доступом к репозиторию mirror.corbina.net. Первая ошибка явно об этом говорит. Попробуйте его заменить на другой.

  13. Аватар
    Алексей

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

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

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

  14. Аватар

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

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

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

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