OmniFlow — версии платформы

Реестр образов registry.omniflow.ru

Доступные версии

0.63.1текущая

Перед установкой

Нужен сервер с Linux, публичным статическим IP и установленным Docker (Engine 24+, плагин compose v2.20+). Ставьте Docker из официального репозитория docker.com: в дистрибутивных пакетах часто нет плагина compose, без которого установка не пройдёт.

docker version          # Engine 24+
docker compose version  # v2.20+

# Разрешаем своему пользователю работать с Docker без sudo.
# Все команды — и установщик, и docker compose — обращаются к сокету
# /var/run/docker.sock, а он принадлежит группе docker. Не состоя в ней,
# вы получите "permission denied" на первой же команде.
sudo usermod -aG docker $USER

# Теперь выйдите из системы и зайдите заново (для ssh — переподключитесь).
# Состав групп берётся в момент входа, текущая сессия о новой группе не знает:
# без повторного входа команды продолжат падать, хотя настроено уже верно.
id                      # в списке групп должна появиться docker
Дальше — либо всё под своим пользователем, либо всё под sudo, но не вперемешку. У root свой домашний каталог, поэтому логин в реестр, сделанный под вашим пользователем, для sudo docker просто не существует — оттуда берётся no basic auth credentials. Вдобавок файлы инсталляции окажутся с разными владельцами, и обычные команды перестанут в них писать. Рекомендуемый вариант — обычный пользователь в группе docker.

Порты, которые должны быть свободны и открыты извне: 5060, 5080, 5061, 8443, 30000-30500/udp, а для веб-интерфейса — 80 и 443.

Доступ к реестру образов

Реестр закрытый: логин и пароль выдаются вместе с поставкой. Без них не скачается ни установщик, ни сама платформа. Шаг делается один раз — Docker запоминает учётные данные в домашнем каталоге пользователя.

docker login registry.omniflow.ru
# успех выглядит как: Login Succeeded

# Проверяем, что доступ рабочий (маленьким образом (~8 МБ)):
docker pull registry.omniflow.ru/omniflow/alpine:3.20

Если проверка не прошла: unauthorized — неверный пароль или логин; no basic auth credentials — команда идёт под другим пользователем, чем docker login (обычно из-за sudo); denied — учётная запись есть, но прав на этот образ у неё нет; no such host или таймаут — сервер не резолвит имя реестра либо закрыт исходящий доступ на 443.

Установка

# Каталог инсталляции: сюда лягут конфиги, база, записи разговоров.
# Он и есть вся система — бэкап делается с него.
# В корне файловой системы папку создаёт только root, поэтому mkdir под sudo,
# а сразу за ним chown: каталог должен принадлежать ВАМ ещё до установщика.
# Он определяет владельца по каталогу и передаёт ему всё, что создал; каталог
# root'а означает .env и конфиги, которые вы не сможете править без sudo.
sudo mkdir -p /app/omniflow
sudo chown "$USER":"$USER" /app/omniflow
cd /app/omniflow

# CTL_HOST_DIR — чтобы установщик показывал ваши пути, а не свои внутренние:
# внутрь контейнера этот каталог виден как /install.
docker run --rm -it --pull always -v "$PWD:/install" -e CTL_HOST_DIR="$PWD" \
  registry.omniflow.ru/omniflow/ctl:0.63.1 install

# По EXTERNAL_IP телефоны находят сервер, по PUBLIC_DOMAIN — браузер.
# Остальное установщик заполнил сам, включая пароли.
nano .env

# Первый запуск скачивает образы и создаёт схему базы — несколько минут.
docker compose up -d

Установщик сначала показывает будущую структуру каталогов и только после подтверждения пишет на диск. Повторный запуск ничего не затирает. Вместе с файлами он кладёт скрипт ./omniflow-ctl — дальше все команды выполняются через него, длинный docker run больше не нужен.

После установки

Работающий стек ещё никому не звонит: в системе нет ни одного телефона. Откройте панель по своему домену (логин admin, пароль показан в конце установки), заведите SIP-точки — по одной на каждый аппарат, подключите телефоны к внешнему IP сервера и позвоните с одной точки на другую: это разом проверяет весь тракт. Остальное — в INSTALL.md, он лежит рядом с инсталляцией.

Обновление

# дамп базы (миграции необратимы поэтому лучше сделать перед обновлениями дамп)
docker compose exec -T postgres pg_dump -U postgres omniflow > backup.sql

./omniflow-ctl upgrade 0.63.1

docker compose pull && docker compose up -d
Миграции базы данных необратимы. Возврат к предыдущей версии образа не откатывает схему. Перед обновлением делайте дамп.

Диагностика

./omniflow-ctl doctor

Состав поставки

alpine, asterisk, corenode, ctl, fail2ban, kamailio, mc, minio, nats, postgres, rtpengine, strategy-ai-reception, strategy-chat-queue, strategy-dial-by-code, strategy-not-work, strategy-operator-status, strategy-queue-operator, strategy-reminder-dialer, strategy-simple-main, strategy-speech-demo, ui, valkey