Extend Manual Installation: Video Server Node

Extend Manual Installation: Video Server Node#

This section contains the architectural diagram, requirements, network configuration, and directions to set up the additional Video Server Node.

Architecture#

The architecture of this scenario is depicted in the following diagram.

../../../../_images/scenario-single-vs.png

Fig. 7 Sample diagram of Video Server Node within the Single Server scenario.#

Requirements#

Hardware Requirements for the Video Server Node are:

  • 8 vCPU

  • 8 GB memory

  • 50 GB disk space

  • If you plan to record video meetings, you need to allocate sufficient space to store temporary files on this Node

Network Configuration#

The following ports must be forwarded from the external network, i.e., they are required for proper access to Carbonio from the Internet.

Table 4 Forwarded ports in Scenario Single Server.#

Public hostname

Ports & Service

Mapping

mail.example.com

  • UDP 20000/40000 Video Streaming

srv3.example.com

Video Server Node Installation#

Directions are separated in steps, organised in drop-downs. Click each of them to expand the content.

Step 1: Configuration of Repositories

Carbonio

In order to configure Carbonio’s repository, you need to some files with the necessary information.

It you install Carbonio on Ubuntu, you also need to import the GPG key used for signing the packages and verify them.

Configure Carbonio Repository

You need to create file /etc/apt/sources.list.d/zextras.list and add the following content to it:

deb [arch=amd64 signed-by=/usr/share/keyrings/zextras.gpg] https://repo.zextras.io/release/ubuntu jammy main

Hint

Make sure the above content is correctly saved on the same line

You need to create file /etc/apt/sources.list.d/zextras.list and add the following content to it:

deb [arch=amd64 signed-by=/usr/share/keyrings/zextras.gpg] https://repo.zextras.io/release/ubuntu noble main

Hint

Make sure the above content is correctly saved on the same line

You need to create file /etc/yum.repos.d/zextras.repo and add the following content to it:

[zextras]
name=zextras
baseurl=https://repo.zextras.io/release/rhel8
enabled=1
repo_gpgcheck=1
gpgcheck=0
gpgkey=https://repo.zextras.io/repomd.xml.key

You need to create file /etc/yum.repos.d/zextras.repo and add the following content to it:

[zextras]
name=zextras
baseurl=https://repo.zextras.io/release/rhel9
enabled=1
repo_gpgcheck=1
gpgcheck=0
gpgkey=https://repo.zextras.io/repomd.xml.key
Import GPG Key

This step is required only on Ubuntu systems (Ubuntu 22.04 and Ubuntu 24.04).

Download and save the GPG key

# wget -O- "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x5dc7680bc4378c471a7fa80f52fd40243e584a21" | gpg --dearmor | sudo tee /usr/share/keyrings/zextras.gpg > /dev/null

Assign correct access permissions to the key

# chmod 644 /usr/share/keyrings/zextras.gpg

Download and save the GPG key

# wget -O- "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x5dc7680bc4378c471a7fa80f52fd40243e584a21" | gpg --dearmor | sudo tee /usr/share/keyrings/zextras.gpg > /dev/null

Assign correct access permissions to the key

# chmod 644 /usr/share/keyrings/zextras.gpg

This step is not needed.

This step is not needed.

Configure RHEL-only Repositories

This step is not needed.

This step is not needed.

You need to add the EPEL repository and enable the BaseOS, Appstream, and CodeReady repositories.

# dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
# subscription-manager repos --enable=rhel-8-for-x86_64-baseos-rpms
# subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms
# subscription-manager repos --enable=codeready-builder-for-rhel-8-x86_64-rpms

You need to add the EPEL repository and enable the BaseOS, Appstream, and CodeReady repositories.

# dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
# subscription-manager repos --enable=rhel-9-for-x86_64-baseos-rpms
# subscription-manager repos --enable=rhel-9-for-x86_64-appstream-rpms
# subscription-manager repos --enable=codeready-builder-for-rhel-9-x86_64-rpms
Step 2: Setting Hostname

Carbonio needs a valid FQDN as hostname and a valid entry in the /etc/hosts file. Therefore, it is necessary to take care of properly configuring the /etc/hosts file, otherwise the services will not be able to bind to the correct address, leading to a disruption in Carbonio's functionality.

To configure the file and the hostname, execute these two commands.

Note

Replace the values srv1.example.com and 172.16.0.10 with values suitable for your setup.

First, set the hostname

# hostnamectl set-hostname srv1.example.com

then replace the content of the /etc/hosts file with IP and hostname.

# echo -e  "127.0.0.1 localhost\n172.16.0.10 srv1.example.com srv1" > /etc/hosts

You can also simply get the current IP and hostname and save it in the file /etc/hosts/:

# echo "$(hostname -I) $(hostname -f)"
Step 3: System Upgrade and Package Installation

After configuring the repositories, the installation of Carbonio requires to run a few commands.

We start by updating and upgrading the system.

# apt update && apt upgrade
# apt update && apt upgrade
# dnf upgrade
# dnf upgrade

Next, we install all packages needed for Carbonio.

# apt install service-discover-agent \
carbonio-videoserver-advanced carbonio-videorecorder
# apt install service-discover-agent \
carbonio-videoserver-advanced carbonio-videorecorder
# dnf install service-discover-agent \
carbonio-videoserver-advanced carbonio-videorecorder
# dnf install service-discover-agent \
carbonio-videoserver-advanced carbonio-videorecorder
Step 4: Bootstrap Carbonio

To carry out this step, you need the LDAP password and the Node hostname that you have retrieved at Step 9 of the Core Node (see Data Required for Additional Nodes).

Use the following command to configure and launch Carbonio.

# carbonio-bootstrap

Before finalising the bootstrap, press y to apply the configuration. The process will continue until its completion: click Enter to continue.

What does carbonio-bootstrap do?

This command makes a few checks and then starts the installation, during which a few messages are shown, including the name of the log file that will store all messages produced during the process:

Operations logged to /tmp/zmsetup.20211014-154807.log

In case the connection is lost during the installation, it is possible to log in again and check the content of that file for information about the status of the installation. If the file does not exist anymore, the installation has already been completed and in that case the log file can be found in directory /opt/zextras/log.

The first part of the bootstrap enables all necessary services and creates a new administrator account (zextras@mail.example.com), initially without password (see below for instruction to set it).

Step 5: Setup Carbonio Mesh

To carry out this step, you need the Carbonio Mesh secret generated during the installation of the Core Node (see Data Required for Additional Nodes).

The Carbonio Mesh configuration is interactively generated by command

# service-discover setup-wizard

To complete Carbonio Mesh installation, run

# pending-setups -a
Step 6: Configure Carbonio VideoServer

1. Routing & mapping

Starting from 25.3 release, the /etc/janus/janus.jcfg configuration file will be updated automatically to include the Carbonio VideoServer public IP address (i.e., the one that will accept incoming connections to the Carbonio VideoServer) using a curl call.

Different IPs for outgoing and incoming traffic

This might be incorrect in case the Node setup has different IP addresses for incoming and outgoing traffic, for example:

  • the incoming traffic to the Carbonio VideoServer node is routed using IP address 203.0.113.102

  • the outgoing traffic from the Node to the Internet is routed through IP address 203.0.113.105

In cases like this one, the curl call would return the latter IP (i.e., 105), but the actual IP in the configuration file should be the former (102).

Therefore, after the installation, make sure that the correct public IP address is present in the file: the line containing the nat_1_1_mapping variable should be:

nat_1_1_mapping = "203.0.113.102"

Finally, enable and start the service with the commands

# systemctl enable carbonio-videoserver.service
# systemctl start  carbonio-videoserver.service

2. Check Video Server & Broker

To make sure that videoserver and message broker are connected successfully, check that in the carbonio-videoserver logs (journalctl -u carbonio-videoserver) you find the line:

RabbitMQEventHandler: Connected successfullySetup of RabbitMQ event
handler completed