Перейти к содержанию
Обсудить задачу →
Статьи и инструкции

Asterisk GUI 2.0: установка в лаборатории, настройка и замена устаревшей панели

Как восстановить Asterisk GUI 2.0 в лаборатории: исходники, HTTP, AMI, права, SSH-доступ, тестовые номера и переход на поддерживаемую АТС.
Asterisk GUI 2.0: установка в лаборатории, настройка и замена устаревшей панели

Asterisk GUI 2.0 до сих пор встречается на старых телефонных станциях. Администратор открывает страницу, меняет внутренний номер или маршрут и получает привычный результат, пока не приходится восстанавливать сервер, переносить его на другую ОС или подключать современный SIP-транк. В этот момент выясняется, что возраст панели нельзя отделить от возраста Asterisk и структуры его конфигурации.

Эта инструкция предназначена для обследования и восстановления исторической установки в изолированной лаборатории. Asterisk GUI 2.0 нельзя считать универсальным интерфейсом для актуального Asterisk. Для новой АТС сначала выбирают поддерживаемую платформу, а старую панель используют, чтобы понять и перенести существующую логику. Важно не путать Asterisk GUI с FreePBX: это разные проекты с разными схемами управления файлами.

Как устроена старая панель и почему она зависит от версии АТС

Панель состоит преимущественно из HTML и JavaScript. Веб-страницы раздаёт встроенный HTTP-сервер Asterisk, а управляющие действия выполняются через AMI и его HTTP-интерфейс AJAM. Успешная загрузка страницы доказывает только доступность статических файлов. Для входа и изменения настроек нужны доступный управляющий интерфейс, правильная учётная запись и соответствующие права.

AMI позволяет получать события, управлять вызовами и конфигурацией. Его учётная запись не является Linux-пользователем. Она хранится в manager.conf, имеет отдельный секрет и набор разрешений. Современное описание назначения AMI доступно в документации Asterisk; конкретные права старой панели следует проверять по её исходникам и версии ядра.

Панель ожидает определённые файлы, секции и контексты dialplan. Она не просто отображает произвольный Asterisk: её код может создавать и переписывать конфигурацию под собственную модель. Поэтому установка поверх вручную настроенной АТС способна повредить логику маршрутизации даже тогда, когда форма входа работает. Установка поверх FreePBX также создаёт двух владельцев одних файлов.

Как устроена старая панель и почему она зависит от версии АТС
КомпонентЗа что отвечаетЧто не подтверждает его работа
HTTP-серверДоставка страницы и JavaScriptВозможность входа через AMI
AMI/AJAMАвторизация и управляющие действияСовместимость модели GUI с конфигурацией
Конфигурационные файлыПользователи, каналы и маршрутыУспешные звонки после reload
SIP-сигнализацияРегистрация и установление вызоваПрохождение RTP и двусторонний звук
RTPГолосовой потокКорректные маршруты, тарификация и права

Исторический стек Asterisk 1.4/1.6/1.8 принципиально отличается от современных веток с PJSIP. Восстановление старой пары «ядро + GUI» и проектирование новой АТС — две разные задачи. Статус веток ядра проверяйте в официальной таблице версий Asterisk, а не по возрасту последнего найденного архива панели.

Подготовить копию станции, которую можно безопасно изменять

Лучший исходный материал — резервная копия вашей работающей АТС с известными версиями и настройками. Восстановите её в отдельную VM без маршрута к внешнему SIP-провайдеру. Не допускайте одновременной регистрации старой и лабораторной станции под одним транком: это может перенаправить рабочие вызовы и создать расходы.

До изменений соберите сведения в консоли:

asterisk -V
asterisk -rx 'core show version'
asterisk -rx 'core show settings'
asterisk -rx 'module show like chan_sip'
asterisk -rx 'module show like res_http'
asterisk -rx 'http show status'
asterisk -rx 'manager show settings'

Первая команда проверяет исполняемый файл, вторая — запущенный процесс. Их версии могут различаться после неполного обновления. core show settings помогает найти реальные каталоги конфигурации и данных. Наличие chan_sip важно для исторической модели панели; современный chan_pjsip не становится совместимым с ней автоматически. Если отдельной команды нет в вашей старой версии, уточните доступные варианты через core show help.

Сохраните конфигурацию, голосовые данные и сведения о владельцах файлов. Для лаборатории с обычными путями:

sudo install -d -m 700 /root/pbx-before-gui
sudo tar -czf /root/pbx-before-gui/etc-asterisk.tgz -C /etc asterisk
sudo tar -czf /root/pbx-before-gui/varlib-asterisk.tgz -C /var/lib asterisk
sudo ls -ld /etc/asterisk /var/lib/asterisk
ps -eo user,pid,args | grep '[a]sterisk'

Архив /var/lib/asterisk не включает автоматически записи разговоров и очереди в /var/spool/asterisk, внешнюю базу CDR, сертификаты вне этого каталога или systemd unit. Добавьте фактические пути вашей системы. Для согласованной копии данных выберите окно обслуживания или штатный backup-механизм. Снимок VM помогает быстро вернуться, но не заменяет отдельную проверку файлов и возможности восстановления.

Получить исходники и установить именно панель

Старые инструкции со ссылками на SVN и исчезнувший каталог загрузки не следует выполнять без проверки. Ниже используется доступное стороннее зеркало исторических исходников. Это не текущая поставка производителя и не гарантия поддержки. Предпочтительнее собственный доверенный архив исходной станции. Если используете зеркало, просмотрите код и закрепите ревизию до установки.

git clone https://github.com/antirek/asterisk-gui.git
cd asterisk-gui
git checkout 078114b7a12e8ba66769c951bfcfc97cc870adc4
git rev-parse HEAD
less README
less security.txt

Ревизия фиксирует набор файлов, чтобы последующая сборка не зависела от изменения ветки. Сверка хеша определяет идентичность выбранному исходнику, но сама по себе не подтверждает доверие к его автору. Исторический README содержит порядок сборки панели; это не инструкция по установке современного ядра Asterisk.

На восстановленной совместимой лабораторной ОС должны быть доступны Git, GNU Make, компилятор C и инструменты, требуемые configure. Не устанавливайте старые пакеты из случайного репозитория на рабочий сервер. В исходном дереве с готовым configure выполняют:

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
make
make -n install

configure определяет пути и проверяет зависимости. make готовит панель; make -n install показывает план установки без записи файлов. Убедитесь, что итоговые каталоги совпадают с core show settings, особенно astvarlibdir. Если сервер использует нестандартные пути, задайте их перед установкой и проверьте план повторно. При ошибке autotools сначала разберите журнал config.log; запускать неизвестный bootstrap или подменять зависимости на рабочей АТС не нужно.

После проверки устанавливают файлы панели:

sudo make install
sudo find /var/lib/asterisk/static-http/config -maxdepth 1 -name '*.html' -print

Ожидается появление index.html и сопутствующих страниц. Не выполняйте make samples на действующей станции: демонстрационные конфигурации способны заменить ваши настройки. Полная установка старого ядра с нуля в современную ОС не входит в этот сценарий: здесь восстанавливается уже известная совместимая пара.

Настроить HTTP и управляющий доступ без публикации в Интернет

В существующей секции [general] файла http.conf настройте локальное прослушивание. Не добавляйте вторую конфликтующую секцию и сохраните остальные необходимые параметры:

[general]
enabled = yes
enablestatic = yes
bindaddr = 127.0.0.1
bindport = 8088
prefix = asterisk

enablestatic — историческое написание параметра в README этой панели. В современных руководствах встречается enable_static; переносить параметры между версиями без проверки нельзя. Фактическую работу подтверждает http show status и получение страницы. Назначение HTTP-сервера описано в руководстве AJAM.

В существующей секции [general] файла manager.conf включите AMI и HTTP-доступ:

[general]
enabled = yes
webenabled = yes
bindaddr = 127.0.0.1
port = 5038

Создайте отдельную управляющую учётную запись. Значение REPLACE_WITH_LONG_UNIQUE_SECRET обязательно замените новым секретом; это не рабочий пароль. Пример прав соответствует широкому управлению старой лабораторной панелью. Для доступного другим системам AMI такой набор не является минимальными правами.

[gui-lab]
secret = REPLACE_WITH_LONG_UNIQUE_SECRET
deny = 0.0.0.0/0.0.0.0
permit = 127.0.0.1/255.255.255.255
read = system,call,log,verbose,command,agent,config
write = system,call,log,verbose,command,agent,config

config нужен для операций с конфигурацией; command даёт существенные полномочия управления. Поддерживаемые классы разрешений и требования конкретных функций проверяйте в своей версии. Защитите файл от чтения посторонними локальными пользователями. Не меняйте владельца всех .conf вслепую: установите, от кого работает процесс и какие файлы он действительно должен изменять.

Применение выполняйте на лабораторной копии без активных разговоров:

asterisk -rx 'core reload'
asterisk -rx 'http show status'
asterisk -rx 'manager show settings'
asterisk -rx 'manager show users'
ss -lntp
make checkconfig

core reload может затронуть больше модулей, чем нужно, поэтому на рабочей системе применяют проверенный для версии порядок в окно обслуживания. checkconfig из дерева GUI проверяет текстовые настройки; его успешный результат не доказывает, что AMI авторизует пользователя или браузер может выполнить действия. Обратите внимание: старый Makefile ищет конкретные строки и может не учитывать конфигурацию в include-файлах.

Открыть панель и проверить изменение на тестовом номере

С рабочего компьютера пробросьте HTTP-порт через SSH. pbx.example замените именем вашей лабораторной станции:

ssh -N -L 18088:127.0.0.1:8088 operator@pbx.example

Откройте http://127.0.0.1:18088/asterisk/static/config/index.html. Внешнее соединение защищает SSH, HTTP остаётся локальным. Если prefix в вашем http.conf пуст, уберите /asterisk из пути. Если локальный порт занят, выберите другой и измените URL. Сам SSH-сеанс должен оставаться открытым.

Вход выполняется пользователем gui-lab из manager.conf, а не именем оператора Linux. На первом входе панель может проверять или создавать ожидаемые контексты. Поэтому перед подтверждением начальной настройки сравните файлы с резервной копией и убедитесь, что работаете на лабораторной VM.

В разделе пользователей создайте тестовый внутренний номер, например 7101, задайте отдельный SIP-секрет и разрешите только лабораторный контекст. Названия полей зависят от сборки GUI; номер, пароль регистрации и набор разрешённых вызовов нужно проверять в фактических файлах. Не назначайте тестовому устройству маршрут на внешний транк. Зарегистрируйте тестовый софтфон по адресу лабораторной АТС и проверьте канал:

asterisk -rx 'sip show peers'
asterisk -rx 'sip show peer 7101'
asterisk -rx 'dialplan show'
asterisk -rx 'core show channels'

Для исторического chan_sip ожидается найденный peer с адресом тестового клиента. Имя peer не всегда совпадает с внутренним номером: используйте фактическое имя из конфигурации. UNREACHABLE при включённом qualify указывает на отсутствие ответа проверке; регистрация и успешный голосовой вызов проверяются отдельно.

Создайте второй тестовый номер, выполните звонок между ними и проверьте звук в обе стороны, DTMF, удержание и завершение. Затем измените безопасное поле через GUI, примените настройки и сравните файл до/после. Только такое сравнение показывает, что панель управляет нужным объектом, а не лишь отображает форму.

Историческая панель Asterisk: браузер, HTTP, AMI и конфигурация станции
Схема поясняет связи между компонентами. Команды, условия применения и проверка результата приведены в тексте.

Разобрать типовые ошибки и подготовить переход

Разобрать типовые ошибки и подготовить переход
СимптомПроверкаЧто исправлять
Connection refusedss, http show statusСлушающий адрес, порт, состояние HTTP
404 на страницеprefix, static-путь, наличие index.htmlURL и каталог установки
Страница есть, вход не работаетwebenabled, AMI-пользователь, права, журналУправляющий доступ, не только HTTP
Вход есть, настройки не сохраняютсяВладелец файлов, AMI config, ответы браузеруПрава конкретных файлов и API
Настройки исчезаютДругой генератор конфигурацииОпределить единственного владельца файлов
Peer зарегистрирован, звука нетRTP, NAT, адреса SDPМедиа-путь и диапазон RTP
После правки сломался dialplanСравнение с резервной копиейВернуть изменённые файлы и проверить reload

Для восстановления лаборатории проще вернуть снимок VM. При файловом возврате сначала определите весь набор изменений панели: возврат одного http.conf не отменит переписанные номера и маршруты. Восстановите нужные файлы с владельцами и правами, выполните проверенный reload и повторите тестовые вызовы. Не перезапускайте рабочую АТС во время разговоров ради проверки веб-страницы.

Переход на новую систему начинают с перечня внутренних номеров, транков, входящих DID, очередей, IVR, расписаний, записей разговоров и разрешённых направлений. Зафиксируйте, что должно произойти при недоступности оператора или основного провайдера. Перенос файлов старого sip.conf в современный PJSIP не является миграцией: сущности endpoint, auth и aor описывают другую модель.

Для готовой современной панели рассмотрите поддерживаемую сборку FreePBX по официальному порядку установки, проверив её требования и совместимую версию Asterisk. Для собственной конфигурации используйте поддерживаемое ядро и управляемые конфигурационные файлы. Новый сервер сначала подключают к тестовым номерам и отдельному тестовому транку, затем проверяют согласованные сценарии и готовят возврат маршрутизации на старую АТС. Паспорт обследования и приёмки помогает сохранить эту логику, а не только список паролей и адресов.