
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, примените настройки и сравните файл до/после. Только такое сравнение показывает, что панель управляет нужным объектом, а не лишь отображает форму.

Разобрать типовые ошибки и подготовить переход
| Симптом | Проверка | Что исправлять |
|---|---|---|
| Connection refused | ss, http show status | Слушающий адрес, порт, состояние HTTP |
| 404 на странице | prefix, static-путь, наличие index.html | URL и каталог установки |
| Страница есть, вход не работает | 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. Для собственной конфигурации используйте поддерживаемое ядро и управляемые конфигурационные файлы. Новый сервер сначала подключают к тестовым номерам и отдельному тестовому транку, затем проверяют согласованные сценарии и готовят возврат маршрутизации на старую АТС. Паспорт обследования и приёмки помогает сохранить эту логику, а не только список паролей и адресов.
