Как запустить TrueConf Server в Docker-контейнере

Димитрий Зуйков

Сервер видеоконференцсвязи TrueConf Server доступен для установки как на Windows, так и на различные ОС семейства Linux. При этом для удобства развёртывания вы можете использовать подготовленный нами Docker-контейнер с ВКС-сервером, доступный в публичном репозитории по следующему адресу:

https://hub.docker.com/r/truetrueconf/trueconf-server

Внимание!

На текущий момент TrueConf Server для Linux, который используется для построения Docker-образа, находится в статусе бета-тестирования, поэтому не предназначен для использования в рабочем окружении. Подробнее о присоединении к тестированию читайте в статье нашего блога.

Что же такое Docker?

Docker – это пакет программного обеспечения для доставки приложений на физические или виртуальные машины и их запуска в изолированном окружении (т.н. контейнере). В свою очередь, контейнер запускается из образа, который содержит в упакованном виде программу и необходимые для её работы зависимости. Среда, в которой работают контейнеры, называется хост (например, ваш компьютер).

Многие популярные образы содержатся в публичных репозиториях на официальном портале Docker Hub.

Такой метод развёртывания ПО активно используется благодаря его универсальности, минимизации потребления системных ресурсов, простоте и скорости запуска, удобству дальнейшей поддержки, обширной базе общедоступных образов, а также обеспечении независимости различных контейнеров друг от друга.

Для примера рассмотрим, как установить Docker на Debian 10 и запустить контейнер с TrueConf Server.

Как установить Docker на Windows и macOS, смотрите в официальной документации.

Для выполнения перечисленных далее команд в ОС должна присутствовать программа sudo и пользователь, под которым они запускаются, должен быть в соответствующей группе. В Debian по умолчанию sudo может отсутствовать, проверьте её наличие командой sudo -V и установите при необходимости с помощью команды apt install sudo (выполняется под учётной записью root). А для добавления пользователя с логином user в группу sudo выполните sudo usermod -a -G sudo user. Также требуется добавить этого пользователя в группу docker как показано в документации.

Шаг 1. Установка Docker

Чтобы установить Docker на Debian из официального репозитория, откройте терминал и выполните следующую последовательность команд:

  1. Установите пакеты, которые необходимы для работы с репозиторием по HTTPS:
  2. Импортируйте официальный GPG-ключ Docker:
  3. Добавьте ссылку на репозиторий со стабильной версией:
  4. Установите Docker и сопутствующие пакеты:
  5. Проверьте корректность установки: Данная команда скачает тестовое изображение, откроет его в изолированном контейнере, отобразит сопутствующую информацию в терминале и затем автоматически завершит работу контейнера.

Данная команда скачает тестовое изображение, откроет его в изолированном контейнере, отобразит сопутствующую информацию в терминале и затем автоматически завершит работу контейнера.

Шаг 2. Скачивание и запуск контейнера с TrueConf Server

Для создания и автоматического запуска контейнера ВКС-сервера из образа используется команда docker run, при этом если образ отсутствует в системе, он автоматически будет скачан из публичного репозитория:

где [OPTIONS] – дополнительные параметры. Например, выполняемая в первый раз команда:

скачает образ TrueConf Server, на его основе создаст и запустит в фоне  контейнер, вернув управление в терминал. При этом будут проброшены необходимые для работы ВКС-сервера порты, дан доступ к панели управления  администратору с логином tc_admin и паролем 12345, а рабочий каталог сервера будет примонтирован к каталогу хоста по пути /home/user/trueconf/server.

Ниже подробно рассмотрены некоторые из используемых параметров. Их можно комбинировать со стандартными опциями Docker, описанными в его официальной документации. Например, вы можете указать ключ --name, чтобы присвоить имя контейнеру для удобства его дальнейшего использования.

Использование сетевого подключения хоста (–network=host)

Чтобы предоставить доступ из контейнера к сети, используйте параметр --network=host. Данная настройка позволит не прописывать необходимые для работы TrueConf Server порты, а полностью использовать сетевое подключение хоста.

Указание значений переменных окружения (-e [variable]=[value])

Задание переменных окружения для контейнера. Доступны такие значения:

  • -e ADMIN_USER=tc_admin -e ADMIN_PASSWORD=password – создание администратора TrueConf Server с логином tc_admin и паролем password внутри контейнера. Учтите, что данный пользователь никак не связан с пользователями хостовой ОС и потому его авторизационные данные могут быть любыми;
  • -e INIT_DB=true – принудительное создание чистого кластера базы данных в примонтированном на хосте томе. Это приведёт к удалению всех предыдущих настроек TrueConf Server (сведений о регистрации, списков пользователей и групп, созданных конференций и пр.), останутся только файлы записей сеансов видеосвязи, но в панели управления они отображаться не будут;
  • -e ServerID=xxxx -e Serial=xxxx -e ServerName=xxxx – запуск автоматической регистрации сервера после запуска контейнера, если вы ранее уже получали регистрационный ключ сервера. Здесь:
    • ServerIDID сервера;
    • Serial – регистрационный ключ без первого блока (то есть без ID), например, BBBB-CCCC-DDDD если ваш ключ AAAAA-BBBB-CCCC-DDDD;
    • ServerName – доменное имя (FQDN) для доступа к серверу, например, video.company.name.

    При этом для регистрации обязательно указывать все 3 параметра сразу.

  • -e ServiceAddress – указание внешнего адреса ВКС-сервера для доступа снаружи корпоративной сети, если не указан – принимается равным адресу ServerName.

Монтирование каталогов (-v [host_path]:[container_path])

Монтирование каталога [host_path] на хосте в каталог контейнера [container_path]. Это обеспечит сохранение по пути [host_path] логов и данных, генерируемых при работе сервера (настройки сервера, учётные записи, список конференций, файлы записей и пр.), а также подключение SSL-сертификатов и пользовательских скриптов. После остановки контейнера все данные сохранятся и будут доступны снова при его последующих запусках. Если каталог [host_path] отсутствует на хосте, он будет создан автоматически.

Доступные для монтирования пути и примеры их использования:

  • -v /home/user/trueconf/server:/opt/trueconf/server/var/lib – сохранение в каталоге хоста /home/user/trueconf/server всего содержимого рабочего каталога сервера, кроме лог-файлов;
  • -v /home/user/trueconf/server/log:/opt/trueconf/server/var/log – сохранение в каталоге хоста /home/user/trueconf/server/log только генерируемых при работе сервера лог-файлов;
  • -v /path/to/custom/certs:/ssl – указание каталога /path/to/custom/certs на хосте с файлами SSL-сертификатов для их использования сервером в контейнере. Для применения сертификатов после монтирования перейдите в раздел Веб → HTTPS панели управления сервером и в выпадающем списке Режим работы HTTPS: выберите Использовать загруженный сертификат. Нажмите последовательно кнопки Проверить конфигурацию и Применить для сохранения изменений.
  • -v /path/to/custom/scripts:/setup.d – монтирование тома /path/to/custom/scripts с файлами дополнительных sh-скриптов для их запуска при старте контейнера.

Остановка и повторный запуск контейнера

Для остановки контейнера используйте команду:

где vcs_server – имя или идентификатор вашего контейнера. Чтобы узнать эти данные, выполните команду sudo docker ps -a. Вы получите список всех контейнеров и их статус.

Для запуска созданного и остановленного ранее контейнера используйте команду:

Одноразовый запуск

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

Например, команда старта одноразового контейнера с указанием логина и пароля администратора будет выглядеть следующим образом:

Шаг 3. Активация TrueConf Server

Перейдите в панель управления сервером через браузер на любом компьютере из вашей локальной сети, указав IP адрес машины с запущенным контейнером.

Теперь вы можете активировать сервер (если вы не сделали этого ранее с помощью ключа -e) и добавить учётные записи пользователей.

Шаг 4. Добавление администраторов TrueConf Server

Перед добавлением новых пользователей с административным доступом к панели управления сервером убедитесь, что контейнер был запущен с монтированием его каталога /opt/trueconf/server/var/lib к каталогу /home/user/trueconf/server на хосте как показано выше.

Данные для авторизации хранятся в трёх файлах:

  • passwd – логин и в зашифрованном виде пароль;
  • tcadmins – список логинов администраторов сервера с полным доступом;
  • tcsecadmins – список логинов администраторов с уровнем доступа Security Admin.

Поэтому сначала надо создать их с помощью команды:

После этого:

  1. Установите пакет утилит apache2-utils, который содержит программу htpasswd для управления паролями в зашифрованном виде:
  2. Сгенерируйте пароль для нового логина, при этом он будет сохранён в файл passwd в каталоге, из которого запущен терминал:

где:

  • new_admin – логин нового администратора;
  • password – пароль для него.
  1. Добавьте содержимое из сгенерированного файла passwd в файл  /home/user/trueconf/server/docker/passwd на примонтированном томе на хосте. Вы можете воспользоваться для этого текстовым редактором (например, vim или nano, обязательно запустив их под root или через sudo) или же выполнить команду:
  2. Добавьте логин созданного администратора в файл tcadmins или tcsecadmins в зависимости от того, какой уровень доступа вы хотите ему предоставить:
  3. Для проверки, что вы всё сделали правильно, войдите на гостевую страницу TrueConf Server и с помощью кнопки Вход для администратора авторизуйтесь с новыми учётными данными.

Шаг 5. Добавление контейнера в автозапуск

Чтобы контейнер с ВКС-сервером запускался автоматически (например, после перезагрузки хостовой машины), используйте ключ --restart. Вы можете указать его с помощью команды update (в том числе и для уже запущенного контейнера):

где vcs_server – имя или идентификатор вашего контейнера.

Узнать информацию о работающем контейнере вы можете, выполнив команду sudo docker ps.

Не нашли ответ на свой вопрос? Напишите нам в онлайн-чате, мы будем рады помочь.