Труконф возглавил рейтинг ВКС-разработчиков 2023

Блог

Вернуться

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

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

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

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

$USER – переменная окружения ОС семейства Linux, при использовании в командах она автоматически заменяется на логин текущего пользователя в системе.

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

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

Если вы указали данный параметр, то проброс портов, который показан ниже, настраивать не надо. Но тогда следует убедиться, что на хостовой машине открыты необходимые порты, как минимум: 80, 443, 4307.

Проброс портов (-p [host_port]:[container_port]/[protocol])

Привязка порта [host_port] хостовой машины к порту [container_port] контейнера, используя протокол [protocol] (если он не указан, то по умолчанию используется tcp). Аналогично указываются и диапазоны портов, например -p 53000-55000:53000-55000/udp.

Обязательно требуется пробросить порты, необходимые для работы TrueConf Server: 80, 443, 4307.

Если нужно обеспечить доступ к TrueConf Server по дополнительным портам, например, для работы WebRTC, то их также следует указать:

Указание значений переменных окружения (-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/lib:/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-скриптов для их запуска при старте контейнера.
При монтировании каталога с сертификатами обязательно учтите два момента:

  1. TrueConf Server работает только с форматом .crt. Таким образом, папка должна содержать два файла с расширениями: .crt для файла сертификата и .key для файла ключа. Если ваш сертификат имеет другой формат, его надо предварительно сконвертировать в .crt как показано в нашей статье о настройке HTTPS.
  2. Файлы должны иметь следующие название: сертификат tls.crt и ключ tls.key.

Имя и ID контейнера

Для использования ряда команд требуется знать имя и идентификатор (ID) контейнера. Чтобы узнать эти данные, выполните команду:

Вы получите список всех контейнеров и их статус.

Чтобы вывести список только запущенных контейнеров, выполните:

В документации Docker вы можете найти больше примеров работы с командой ps.

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 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.

Обновление TrueConf Server в контейнере

Для версии TrueConf Server 5.2.9 и новее

Если в контейнере запущена версия TrueConf Server 5.2.9 и новее, то для обновления требуется просто скачать новый образ (например, с тегом stable для скачивания релизной версии).

  1. Скачайте образ командой:
  2. Остановите имеющийся контейнер с TrueConf Server как было показано ранее:
  3. Запустите новый контейнер из скачанного в п.1 образа (в примере с тегом stable), указав те же пути монтирования каталогов, которые использовались ранее:

Если всё запустилось успешно, то предыдущие контейнер и образ можно удалить как показано ниже.

Для версии TrueConf Server 5.2.8 и старше

Если в контейнере запущена версия TrueConf Server 5.2.8 и старше, то для обновления на 5.2.9 и новее предварительно потребуется перенести информацию из базы данных:

  1. Скачайте образ с новой версией (например, с тегом stable для скачивания релизной версии):
  2. Перейдите в командную оболочку (терминал) контейнера с TrueConf Server:

    где vcs_serverимя или идентификатор вашего контейнера.
  3. Создайте резервную копию (бекап) базы данных TrueConf Server:
  4. В результате будет сохранён бекап в примонтированном каталоге по пути /database/11/trueconf/tcs_db.dump где – путь, указанный при запуске контейнера. Пример пути к файлу бекапа:
  5. Выйдите из терминала контейнера:
  6. Скопируйте файл бекапа БД в любое удобное место, например /home/$USER/backup:
  7. Создайте и запустите контейнер с новой версией TrueConf Server командой:

    где /home/$USER/backup – каталог с файлом бекапа БД.

    Также помимо пути к бекапу БД укажите в ключе -v те же пути монтирования каталогов, которые использовались ранее.

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

Удаление контейнера и образа

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

где vcs_serverимя или идентификатор вашего контейнера. При этом соответствующий образ останется даже если удалить все контейнеры. Также в ОС останется каталог, который использовался при монтировании.

Для удаления работающего контейнера следует добавить ключ --force:

Для удаления образа (например, если вы скачали более новый и вам не требуется больше предыдущий):

  1. Узнайте список всех образов вместе с тегами и идентификаторами:
  2. Для удаления нужного образа используйте команду rmi, например:

    В этом примере удаляется образ с репозиторием и тегом trueconf/trueconf-server:5.2.8.10213. При этом если у данного образа больше нет тегов – то удалится и он сам. Подробнее о работе команды читайте в официальной документации Docker.

  3. Т.к. команда rmi не освобождает место на хранилище в ОС, то для удаления с диска ненужных образов и контейнеров требуется выполнить другую команду system prune:

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

Подписка на новости