Carbonio Installation

This page provides hardware and software requirements for Carbonio and directions for its installation. Please review carefully this whole page before attempting to install.

Requirements

System Requirements

Hardware requirements

CPU

Intel/AMD 64-bit CPU 1.5 GHz

RAM

8 GB min, 16GB recommended

Disk space (Operating system and Carbonio)

40 GB

These requirements are valid for Carbonio Single-Server or for each Carbonio Node in a Multi-Server Installation and may vary depending on the size on the infrastructure, which includes the number of mailboxes and the functionalities running.

Supported Virtualization Platforms

VMware vSphere 6.x

VMware vSphere 7.x

XenServer

KVM

Virtualbox (testing purposes only)

Software Requirements

Carbonio is available for 64-bit CPUs only and can be installed on top of any vanilla Ubuntu 20.04 LTS Server Edition or RHEL 8 installation and requires valid DNS resolution for

  • the domain (MX and A record)

  • the FQDN (A record)

See the dedicated box below for details and examples.

Support for other distributions will be announced in due course when it becomes available.

On RHEL 8, make sure you also have :

  • an active subscription (you must be able to fetch from BaseOS and the other main repositories)

Configuring DNS resolution

To make sure that the DNS is correctly configured for both A and MX records: to do so, you can use any DNS resolution server, including dnsmasq, systemd-resolved, and bind.

We show as an example, only suitable for demo or testing purposes, how to install and configure dnsmasq for DNS resolution.

Example: Set up of dnsmasq

Follow these simple steps to set up dnsmasq on your testing environment.

Warning

On Ubuntu 20.04, installing and running dnsmasq may raise a port conflict over port 53 UDP with the default systemd-resolved service, so make sure to disable the latter before continuing with the next steps.

# apt install dnsmasq
# dnf install dnsmasq

To configure it, add the following lines to file /etc/dnsmasq.conf:

server=1.1.1.1
mx-host=carbonio.local,mail.carbonio.local,50
host-record=carbonio.local,172.16.0.10
host-record=mail.carbonio.local,172.16.0.10

Finally, restart the dnsmasq service

# systemctl restart dnsmasq

Single-Server Installation

The installation on Ubuntu 20.04 or RHEL 8 is organised in steps, some of which are preliminary configuration tasks, and some is optional. During the installation and configuration of Carbonio, it is necessary to execute commands from the command line, so make sure you have access to it.

We remark that, unless differently stated, all CLI commands must be run as the root user.

Step 1: Repository Configuration

Instructions for setting up Carbonio repository will be provided by Zextras Sales Department.

Repository and Channels

The following are important information concerning the packages repository Carbonio and its content. Please read them carefully, as they might save you some time in case of installation or upgrade problems and help you to provide more precise bug reports.

The repository hosts simultaneously packages of two channels:

  • Release Candidate (RC). Packages in this channel are made available as soon as they are built by Zextras development and tested by the QA team. While they are stable, they are not suitable for a use in a production environment, because they might still contain some bug, new functionalities that have not yet reached a production-level quality, or some broken dependencies might be introduced.

    Usually these problems are fixed within days or even hours, so in case just try again before you report some problem.

    Use this channel and its packages for testing (or demo) installations only.

  • RELEASE. This channel contains only packages that are stable and suitable for a production environment.

Hint

When reporting a problem or opening a ticket, remember to always add the channel if you are using, as this helps us to analyse the problem quickly.

FAQ

  1. I want to help testing things, which channel should I use?

    RC channel.

  2. I need to install Carbonio in a production environment which channel should I use?

    RELEASE channel.

  3. How will we be informed about new RC packages?

    There will be no notification, because RC channel is updated continuously.

  4. How will we be informed about a potential new release incoming?

    A red message on the homepage of the documentation site will notify you of the release of a new stable version. You may also be informed through other means of communication such as email and social media.

  5. Could there be bugs in the packages downloaded from the RC channel?

    Yes, RC versions have a risk of containing bugs (which in some cases could lead to data loss). If you find a bug in an RC package we kindly ask you to report it on the appropriate community page. We will try to resolve it as quickly as possible.

Installation

Step 2: Setting Hostname

Carbonio needs a valid FQDN as hostname and a valid entry in the /etc/hosts file. To configure them, execute these two commands. First, set the hostname

# hostnamectl set-hostname mail.carbonio.local

then update /etc/hosts with IP and hostname

# echo "172.16.0.10 mail.carbonio.local mail" >> /etc/hosts

You can also simply get the current IP and hostname and save them:

# echo "$(hostname -I) $HOSTNAME.$DOMAIN"

Hint

Replace 172.16.0.10 with the actual management IP to be assigned to the server.

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
# dnf upgrade

Next, we install all packages needed for Carbonio.

# apt install service-discover-server \
carbonio-directory-server \
carbonio-proxy \
carbonio-webui carbonio-files-ui \
carbonio-chats-ui \
carbonio-admin-login-ui \
carbonio-mta \
carbonio-mailbox-db \
carbonio-appserver carbonio-logger \
carbonio-advanced carbonio-zal \
carbonio-user-management \
carbonio-files carbonio-files-db \
carbonio-preview \
carbonio-docs-connector-ce carbonio-docs-editor \
postgresql-12
# dnf install service-discover-server \
carbonio-directory-server \
carbonio-proxy \
carbonio-webui carbonio-files-ui \
carbonio-chats-ui \
carbonio-admin-login-ui \
carbonio-mta \
carbonio-mailbox-db \
carbonio-appserver carbonio-logger \
carbonio-advanced carbonio-zal \
carbonio-user-management \
carbonio-files carbonio-files-db \
carbonio-preview \
carbonio-docs-connector-ce carbonio-docs-editor \
postgresql-12

Post Installation tasks

Step 4: Bootstrap Carbonio

Once all packages have been installed and the PostgreSQL user and database for Carbonio Files have been setup, 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@carbonio.local), initially without password (see below for instruction to set it).

Configuration and Setup tasks

The next steps concern the configuration and setup of the various Carbonio components.

Step 5: Setup Carbonio Mesh

Carbonio Mesh is required to allow communication between Carbonio and its components. The configuration is interactively generated by command

# service-discover setup-wizard

This command will:

  • ask for the IP address and netmask

  • ask for the cluster credential password, which is used for setups, management, and to access the administration GUI. See section Carbonio Mesh Administration Interface for more information.

    This password will be denoted as MESH_CLUSTER_PWD throughout the documentation.

    Hint

    We suggest to use a robust password which is at least 16 characters long, including at least one of lowercase and uppercase letters, numbers, special characters and store it in a password manager.

  • store the setup in file /etc/zextras/service-discover/cluster-credentials.tar.gpg

    Warning

    In case the password is lost or the credential file becomes corrupted and unusable, you can Regenerate Carbonio Mesh Credentials.

To complete Carbonio Mesh installation, run

# pending-setups

Finally, two commands are needed to fix access permission to Carbonio Mesh tokens.

# usermod -a -G carbonio-mailbox zextras
# chmod a+r /etc/zextras/carbonio-mailbox/token

Step 6: Configure Carbonio Databases

Carbonio relies on a number of databases to store and keep track of all the objects it needs to manage. The main database can be configured in two steps.

The first step is to create a role and password with administrative rights.

# su - postgres -c "psql --command=\"CREATE ROLE carbonio_adm WITH LOGIN SUPERUSER encrypted password 'DB_ADM_PWD';\""

Remember to replace the password with a robust password of your choice and store it in a safe place (preferably using a password manager), as you need it in the remainder of the procedure, and you also might need them in the future.

The second step is to create the database.

# su - postgres -c "psql --command=\"CREATE DATABASE carbonio_adm owner carbonio_adm;\""

Step 7: Bootstrap Database of Carbonio Files

The password created in the previous step for the carbonio_adm role in database is required in this step, in which we bootstrap the database of Carbonio Files, which requires a few commands to be executed:

# PGPASSWORD=DB_ADM_PWD carbonio-files-db-bootstrap carbonio_adm 127.0.0.1
# PGPASSWORD=DB_ADM_PWD carbonio-mailbox-db-bootstrap carbonio_adm 127.0.0.1
# su - zextras
# zmmailboxdctl restart

Step 8: Carbonio VideoServer and video recording

Carbonio VideoServer is Carbonio component that provides video-conferencing and video-recording functionalities to Carbonio Chats. Since it is not installed by default, you need to install it separately.

# apt install carbonio-videoserver carbonio-videoserver-recorder
# dnf install carbonio-videoserver carbonio-videoserver-recorder

Note

During the installation, you will be asked for a command to be executed.

Once the package has been successfully installed, you will be asked for the public IP Address of Carbonio VideoServer: enter it, then execute the following commands to start the service.

# systemctl enable videoserver.service
# systemctl start  videoserver.service

Finally, the following commands enable video recording and must be executed as the zextras user.

# su - zextras
# carbonio chats video-server add VS_IP port 8188 servlet_port 8090 secret VIDEOSERVER_PWD
# carbonio config set global teamVideoServerRecordingEnabled true
# carbonio config set cos default teamChatEnabled true

Here, port 8188 is the default port used by Carbonio VideoServer, while 8090 for recording. Change these values according to your needs or preferences, but take into account that the value of the servlet_port must match the one defined for Carbonio VideoServer in file /etc/carbonio/videoserver-recorder/recordingEnv.

Remember also to replace VS_IP with the public IP address of the Carbonio VideoServer.

Hint

In case you forget the password used for the video recording setup, (VIDEOSERVER_PWD), you can retrieve it using this command

# grep -i -e nat_1_1 -e api_secret /etc/janus/janus.jcfg

For information about Carbonio VideoServer, advances settings, and recording options, refer to Section Carbonio VideoServer.

Final Steps: Complete Setup and Activate License

We are now on the last mile. To verify there is no dangling installation or configuration task, run:

# pending-setups

Finally, as the zextras user, activate Carbonio license, replacing TOKEN with your licence token.

# carbonio core activate-license TOKEN

Installation Complete

At this point installation is complete and you can start using Carbonio and access its graphic interface as explained in section Access to the Web Interface.

If you need to access the administration interface, you need to create a system user with administrative access, a task explained in Create System User below.

(Optional) Change Password for System User

In order to change the password used by the zextras@carbonio.local user for the Web access, log in to a shell terminal as the zextras user and execute these two commands. The first allows to switch to the zextras user, with the second you actually change the password.

# su - zextras
# zmprov setpassword zextras@carbonio.local newpassword

Make sure that newpassword meets good security criteria.

The zextras and zextras@carbonio.local users

There is a clear distinction between these two users, which are intended to execute different tasks:

zextras

This the unix account of the administrator and must be used to carry out administrative tasks from the command line.

zextras@carbonio.local

This is the default administrator user to be used to access the Admin UI and manage Carbonio from the web interface.

Access to the Web Interface

To access Carbonio's Administration Console, point a supported browser to either of the URL below.

Since Carbonio uses SSL to allow access to the Administration Console, it is strongly suggested to install an SSL certificate. Please refer to Section Deploy an SSL certificate for installation of the certificate.

Multi-Server Installation

This section describes a Carbonio Multi-Server installation, that is, a Carbonio installation spread across multiple nodes, each playing one or more Roles.

Rather than giving fixed installation instructions, with some functionality installed on any node, we present an installation scenario that can be adapted to the different needs of Carbonio users, who use a different number of nodes. For this reason, we introduce the notion of Role: a Carbonio functionality that is considered atomic and consists of one or more packages.

A Role can be installed on any node of the cluster, therefore the scenario we describe below can be modified at will by installing a Role on a different node (or even on a dedicated node).

Six Nodes Scenario

Carbonio Multi-Server is the preferred method of installation, especially for large production system, because it is more scalable in case of a growth of the infrastructure and the communication across all nodes is set up and secured automatically by Carbonio Mesh, which also adds fault detection and dynamic routing between components of the infrastructure.

In the suggested scenario we will set up a Carbonio Multi-Server environment, composed by six nodes (that we will denote as SRV1, …, SRV6) as follows:

  1. SRV1 features a dedicated installation of Postgres

  2. SRV2 represents the core infrastructure of Carbonio and installs, Directory Server, Carbonio Mesh, and DB connection

  3. SRV3 is equipped with MTA, the mail server

  4. SRV4 hosts the Proxy, which allows web access to all components, and Carbonio VideoServer, which provides the video-conference features and includes the ability to record meetings

  5. SRV5 is an AppServer which installs Carbonio Files & Carbonio Docs, that provide sharing and collaborative editing of documents

  6. SRV6 is another AppServer and consists of Carbonio Preview, Carbonio's ability to preview snippets or thumbnails of a document, and the Logger

Note

The Logger node must be unique within a Carbonio infrastructure!

In our scenario, we start Carbonio installation from 6 nodes equipped with Ubuntu 20.04 LTS. The instructions are valid for nodes which are installed with RHEL 8: the only difference is the command for the package installation, while the commands to configure the nodes are the same.

Requirements

Each node of a Multi-Server must satisfy the Single-Server’s Software Requirements and also System Requirements are valid, but take into account the following advices:

  • By dividing the services and therefore the load on more nodes, less resources per node are needed. We recommend at least 4GB of RAM on each node, though.

  • The node on which the Logger is installed acts as a log-concentrator and therefore gathers log files from all the other nodes. Depending on the logging level set on the nodes, the required disk space may greatly vary, so it is not easy to provide a minimum or suggested value.

There are no additional requirements, just a few remarks:

  • Repositories: All packages required by a multi-server setup are available in the same repository as the single server installation, hence there is no need of further configuration.

  • Acquaintance with the use of CLI is necessary. All carbonio commands must be executed as the zextras user (these commands will feature a zextras$ prompt), while all other commands must be issued as the root user, unless stated otherwise.

  • Give meaningful names to the nodes. For example, call them proxy.example.com, mta.example.com, and so on. Replace example.com with your domain name.

  • During the installation procedure, you will need to write down some configuration options and their value, because they will be needed in the setup of the next nodes. These information are summarised at the end of each node’s installation: copy them to a safe place and keep them at hand until the end of the installation. Example of values include: the IP address (public or private) of a node or the password of a database user.

Preliminary Tasks

Before starting with the actual installation, carry out the following two tasks on each of the six nodes.

Task 1: Configure repositories

Repository and Channels

The following are important information concerning the packages repository Carbonio and its content. Please read them carefully, as they might save you some time in case of installation or upgrade problems and help you to provide more precise bug reports.

The repository hosts simultaneously packages of two channels:

  • Release Candidate (RC). Packages in this channel are made available as soon as they are built by Zextras development and tested by the QA team. While they are stable, they are not suitable for a use in a production environment, because they might still contain some bug, new functionalities that have not yet reached a production-level quality, or some broken dependencies might be introduced.

    Usually these problems are fixed within days or even hours, so in case just try again before you report some problem.

    Use this channel and its packages for testing (or demo) installations only.

  • RELEASE. This channel contains only packages that are stable and suitable for a production environment.

Hint

When reporting a problem or opening a ticket, remember to always add the channel if you are using, as this helps us to analyse the problem quickly.

FAQ

  1. I want to help testing things, which channel should I use?

    RC channel.

  2. I need to install Carbonio in a production environment which channel should I use?

    RELEASE channel.

  3. How will we be informed about new RC packages?

    There will be no notification, because RC channel is updated continuously.

  4. How will we be informed about a potential new release incoming?

    A red message on the homepage of the documentation site will notify you of the release of a new stable version. You may also be informed through other means of communication such as email and social media.

  5. Could there be bugs in the packages downloaded from the RC channel?

    Yes, RC versions have a risk of containing bugs (which in some cases could lead to data loss). If you find a bug in an RC package we kindly ask you to report it on the appropriate community page. We will try to resolve it as quickly as possible.

Task 2: Setting Hostname

Carbonio needs a valid FQDN as hostname and a valid entry in the /etc/hosts file. To configure them, execute these two commands. First, set the hostname

# hostnamectl set-hostname mail.carbonio.local

then update /etc/hosts with IP and hostname

# echo "172.16.0.10 mail.carbonio.local mail" >> /etc/hosts

You can also simply get the current IP and hostname and save them:

# echo "$(hostname -I) $HOSTNAME.$DOMAIN"

Hint

Replace 172.16.0.10 with the actual management IP to be assigned to the server.

It is mandatory to configure the hostname, especially on the Directory-Server node, otherwise the services will not be able to bind to the correct address, leading to a disruption in Carbonio's functionality.

Node Installation

The installation procedure follows the suggested order of nodes as described in the scenario. A few remarks:

  • It is assumed that the Postgres node is not a “real” part of the infrastructure, in the sense that it can also be an existent server that is configured to communicate correctly with Carbonio (configuration instruction are part of SRV1 installation).

    Note

    In our scenario, we install Postgres and configure it from scratch (SRV1).

  • The first node to be installed is the one that will feature the Directory Server role (SRV2)

  • The next server to be installed is the MTA one (SRV3)

  • The other nodes can be installed in any order, you can skip instructions for any node or role that you do not plan to install

SRV1: Postgres

The first node is dedicated to PostgreSQL and will host all the databases required by Carbonio.

# apt install postgresql-12
# dnf install postgresql-12

Carbonio relies on a number of databases to store and keep track of all the objects it needs to manage. The main database can be configured in two steps.

The first step is to create a role and password with administrative rights.

# su - postgres -c "psql --command=\"CREATE ROLE carbonio_adm WITH LOGIN SUPERUSER encrypted password 'DB_ADM_PWD';\""

Remember to replace the password with a robust password of your choice and store it in a safe place (preferably using a password manager), as you need it in the remainder of the procedure, and you also might need them in the future.

The second step is to create the database.

# su - postgres -c "psql --command=\"CREATE DATABASE carbonio_adm owner carbonio_adm;\""

Finally, allow the other nodes to access the databases that will be stored on this node by running these four commands.

# su - postgres -c "psql --command=\"ALTER SYSTEM SET listen_addresses TO '*';\""
# su - postgres -c "psql --command=\"ALTER SYSTEM SET port TO '5432';\""
# echo "host    all             all             0.0.0.0/0            md5" >> /etc/postgresql/12/main/pg_hba.conf
# systemctl restart postgresql

Hint

You may replace the 0.0.0.0/0 network with the one within the cluster is installed, to prevent unwanted accesses.

Values used in the next steps

  • DB_ADM_PWD: the password of the carbonio_adm database role

  • SRV1_IP the IP address of the node

SRV2: Directory Server, DB connection, and Carbonio Mesh Server

The installation of this server encompasses a number of tasks, as it will feature a number of crucial services for the correct working of Carbonio: Directory Server and Carbonio Mesh, connection with PostgreSQL node using Pgpool-II, and Carbonio Mesh.

Note

It is possible to install multiple instances of the service-discover service provided by Carbonio Mesh. Please refer to section Set up Multiple Carbonio Mesh Servers for details.

  1. Install the following packages.

    # apt install service-discover-server \
      carbonio-directory-server carbonio-files-db \
      carbonio-mailbox-db pgpool2
    
    # dnf install service-discover-server \
      carbonio-directory-server carbonio-files-db \
      carbonio-mailbox-db pgpool2
    
  2. Configure Pgpool-II to work with the node on which PostgreSQL runs (SRV1), using the following command. Replace SRV1_IP with the value saved in the previous task.

    # echo "backend_clustering_mode = 'raw'
      port = 5432
      backend_hostname0 = 'SRV1_IP' # eg 192.168.1.100
      backend_port0 = 5432" > /etc/pgpool2/pgpool.conf
    
  3. restart the service using this command.

    # systemctl restart pgpool2.service
    
  4. Bootstrap Carbonio

    # carbonio-bootstrap
    
  5. Setup Carbonio Mesh

    Carbonio Mesh is required to allow communication between Carbonio and its components. The configuration is interactively generated by command

    # service-discover setup-wizard
    

    This command will:

    • ask for the IP address and netmask

    • ask for the cluster credential password, which is used for setups, management, and to access the administration GUI. See section Carbonio Mesh Administration Interface for more information.

      This password will be denoted as MESH_CLUSTER_PWD throughout the documentation.

      Hint

      We suggest to use a robust password which is at least 16 characters long, including at least one of lowercase and uppercase letters, numbers, special characters and store it in a password manager.

    • store the setup in file /etc/zextras/service-discover/cluster-credentials.tar.gpg

      Warning

      In case the password is lost or the credential file becomes corrupted and unusable, you can Regenerate Carbonio Mesh Credentials.

    To complete Carbonio Mesh installation, run

    # pending-setups
    
  6. Bootstrap Carbonio Databases, using the Postgres user created on SRV1 and the password defined in previous step.:

    # PGPASSWORD=DB_ADM_PWD carbonio-files-db-bootstrap carbonio_adm 127.0.0.1
    # PGPASSWORD=DB_ADM_PWD carbonio-mailbox-db-bootstrap carbonio_adm 127.0.0.1
    

Values used in the next steps

  • SRV2_hostname: this node’s hostname

  • LDAP_PWD: the LDAP bind password for the root user and applications (by default, all the bind passwords are configured the same), that can be retrieved with this command:

    # zmlocalconfig -s zimbra_ldap_password
    
  • MESH_CLUSTER_PWD: the Carbonio Mesh password

SRV3: MTA

On this node we install the MTA, which is the actual software which sends and receives emails.

# apt install service-discover-agent carbonio-mta
# dnf install service-discover-agent carbonio-mta

These following tasks must be executed to configure the MTA.

  1. Bootstrap Carbonio, using SRV2_hostname and LDAP_PWD when required

    # carbonio-bootstrap
    
  2. Copy the credentials from the Carbonio Mesh server node (SRV2) to the local server

    # scp root@[SRV2_IP]:/etc/zextras/service-discover/cluster-credentials.tar.gpg \
      /etc/zextras/service-discover/cluster-credentials.tar.gpg
    

    Hint

    the SRV2_IP can be retrieved using command su - zextras -c "zmprov gas service-discover"

  3. Run Carbonio Mesh setup using MESH_CLUSTER_PWD

    # service-discover setup-wizard
    

Values used in the next steps

  • MTA_IP: the IP address of this node

SRV4: Proxy and Carbonio VideoServer

This node featurs the proxy, the *-ui files (i.e., the front-end packages for Carbonio Chats and Carbonio Files), then the packages related to Carbonio VideoServer. Since Proxy and Carbonio VideoServer are different roles, we separate their installation and setup, so they can easily be installed on different nodes.

These tasks need to be carried out for the Proxy.

  1. Install packages

    # apt install service-discover-agent carbonio-proxy \
      carbonio-webui carbonio-files-ui carbonio-chats-ui
    
    # dnf install service-discover-agent carbonio-proxy \
      carbonio-webui carbonio-files-ui carbonio-chats-ui
    
  2. Bootstrap Carbonio, using SRV2_hostname and LDAP_PWD when required

    # carbonio-bootstrap
    
  3. Copy credentials from the Carbonio Mesh server node (SRV2) to the local server

    # scp root@[SRV2_IP]:/etc/zextras/service-discover/cluster-credentials.tar.gpg \
      /etc/zextras/service-discover/cluster-credentials.tar.gpg
    

    Hint

    the SRV2_IP can be retrieved using command su - zextras -c "zmprov gas service-discover"

  4. Run Carbonio Mesh setup using MESH_CLUSTER_PWD

# service-discover setup-wizard

To set up the Carbonio VideoServer, these are the necessary tasks.

  1. Install packages

    # apt install carbonio-videoserver carbonio-videoserver-recorder
    
    # dnf install carbonio-videoserver carbonio-videoserver-recorder
    

    Note

    One of the output received during the installation is a command that will be run on SRV5. Copy it, because it will be needed on SRV5.

  2. Enable and start the service with the commands

    # systemctl enable videoserver.service
    # systemctl start  videoserver.service
    
  3. Enable Memcached access using the commands as the zextras user:

    zextras$ carbonio prov ms $(zmhostname) zimbraMemcachedBindAddress $(hostname -i)
    zextras$ zmmemcachedctl restart
    zextras$ zmproxyctl restart
    

    Warning

    Since Memcached does not support authentication, make sure that the Memcached port (11211) is accessible only from internal, trusted networks.

The video-recording feature is enabled by default, and recorded sessions are stored in directory /var/lib/videorecorder/. Make sure that the directory has sufficient free space, otherwise recorded videos can not be stored.

Hint

You can mount on that location a dedicated disk or partition and keep it monitored for space usage.

Values used in the next steps

  • VS_IP: the IP address of this node

  • the command suggested during the Carbonio VideoServer installation (to be used on SRV5)

  • SERVLET_PORT: the value of the servlet port configuration option saved in file /etc/carbonio/videoserver-recorder/recordingEnv, needed when running the previous command

SRV5: Advanced, AppServer, Files, and Docs

On this node, first install all the required packages for Carbonio Files, and .

# apt install service-discover-agent carbonio-appserver \
  carbonio-user-management carbonio-files carbonio-advanced \
  carbonio-zal carbonio-docs-connector-ce \
  carbonio-docs-editor
# dnf install service-discover-agent carbonio-appserver \
  carbonio-user-management carbonio-files carbonio-advanced \
  carbonio-zal carbonio-docs-connector-ce \
  carbonio-docs-editor

Execute the following tasks: make sure you keep at hand the data configured on the other nodes (SRV2_hostname, LDAP_PWD, MESH_CLUSTER_PWD, and MTA_IP).

  1. Bootstrap Carbonio, using the data from previous tasks when required

# carbonio-bootstrap
  1. Copy the credentials from the Carbonio Mesh server node (SRV2) to the local server

    # scp root@[SRV2_IP]:/etc/zextras/service-discover/cluster-credentials.tar.gpg \
      /etc/zextras/service-discover/cluster-credentials.tar.gpg
    

    Hint

    The SRV2_IP can be retrieved using command su - zextras -c "zmprov gas service-discover"

  2. Run Carbonio Mesh setup using MESH_CLUSTER_PWD

    # service-discover setup-wizard
    
  3. Let Carbonio Files use Memcached. Edit file /etc/carbonio/files/config.properties and search for section # Nginx Lookup servers.

    1# Nginx Lookup servers
    2nginxlookup.server.protocol=https
    3nginxlookup.server.urls=127.0.0.1
    4memcached.server.urls=127.0.0.1
    

    Make sure that:

    • in line 2 protocol is https

    • in line 3 there is at least the current node’s (SRV5) IP

    • in line 4 the SRV4_IP is written, to allow this node’s access to Memcached

  4. Fix carbonio-mailbox token access

    # chmod a+r /etc/zextras/carbonio-mailbox/token
    
  5. restart the mailbox process

    # su - zextras -c "zmmailboxdctl restart"
    
  6. Run as the zextras user the command proposed during the Carbonio VideoServer installation, using SERVLET_PORT and VS_IP configured on SRV4.

    zextras$ carbonio chats video-server add VS_IP port 8188 \
      servlet_port SERVLET_PORT secret VS_PWD
    

    Hint

    VS_PWD was given as part of the command, but can be retrieved using this command.

    # grep -i -e nat_1_1 -e api_secret /etc/janus/janus.jcfg
    
  7. Enable Chats and VideoServerRecording, issuing the commands as the zextras user

    zextras$ carbonio config set global teamVideoServerRecordingEnabled true
    zextras$ carbonio config set cos default teamChatEnabled true
    
  8. (optional) Activate the license as the zextras user

    zextras$ carbonio core activate-license TOKEN
    

SRV6: Advanced, AppServer, Preview, and Logger

On this node, first install all the necessary packages:

# apt install service-discover-agent carbonio-appserver \
  carbonio-user-management carbonio-preview \
  carbonio-advanced carbonio-zal  carbonio-logger
# dnf install service-discover-agent carbonio-appserver \
  carbonio-user-management carbonio-preview \
  carbonio-advanced carbonio-zal  carbonio-logger

Execute the following tasks: make sure you keep at hand the data configured on the other nodes (SRV2_hostname, LDAP_PWD, MESH_CLUSTER_PWD, and MTA_IP).

  1. Bootstrap Carbonio, using the data from previous tasks when required

    # carbonio-bootstrap
    
  2. Copy credentials from the Carbonio Mesh server node (SRV2) to the local server.

    # scp root@[SRV2_IP]:/etc/zextras/service-discover/cluster-credentials.tar.gpg \
      /etc/zextras/service-discover/cluster-credentials.tar.gpg
    

    Hint

    the SRV2_IP can be retrieved using command su - zextras -c "zmprov gas service-discover"

  3. Run Carbonio Mesh setup using MESH_CLUSTER_PWD

    # service-discover setup-wizard
    
  4. Fix carbonio-mailbox token access

    # chmod a+r /etc/zextras/carbonio-mailbox/token
    
  5. Let Carbonio Preview use Memcached. Edit file /etc/carbonio/preview/config.ini and search for section # Nginx Lookup servers.

    1nginx_lookup_server_full_path_urls = https://127.0.0.1:7072 #<<--- must be the address of the application server. for a single server it's ok
    2memcached_server_full_path_urls = 127.0.0.1:11211           #<<--- must be the address of the memcached server. for a single server it's ok
    

    Make sure that:

    • in line 1 protocol is https and the IP address the current node’s (SRV6) IP

    • in line 2 there is the Memcached node’s (SRV5) IP

  6. Restart the mailbox process

    # su - zextras -c "zmmailboxdctl restart"
    

Carbonio upgrade

Carbonio does not have any installer: whenever new versions are released, the Zextras repositories are updated and packages are available for installation along with the other system updates. Therefore, the upgrade procedure is usually a very quick activity, carried out with by means of a few commands.

However, in seldom cases, some incompatibility may arise in third-party software, which lead to some additional manual steps to be carried out. Section Upgrade Troubleshooting below contains information to prevent or fix these issues.

The steps required are basically two, although in some rare cases some additional care is required, see after the instructions below.

Step 1. Update package list

# apt update
# dnf update

Step 2 Install new packages

# apt upgrade
# dnf upgrade

These two commands also take care of resolving all dependencies and install all the upgrades available, of both the system and Carbonio.

Manual steps

Whenever a db package is upgraded (currently there are two of these packages, carbonio-mailbox-db and carbonio-files-db), remember to bootstrap the corresponding Database, by running either of the commands.

# PGPASSWORD=$DB_ADM_PWD carbonio-mailbox-db-bootstrap carbonio_adm 127.0.0.1
# PGPASSWORD=$DB_ADM_PWD carbonio-files-db-bootstrap carbonio_adm 127.0.0.1

In the above commands, $DB_ADM_PWD is the the password of the carbonio_adm database role, that is, the one created during Step 6 of the Single-Server installation or the installation of SRV1: Postgres in the Multi-Server installation

Finally, since new version of Carbonio packages may include new services, it is strongly suggested to execute the command

# pending-setups

This will register the services to Carbonio Mesh, so they can immediately be used.

Upgrade Troubleshooting

This section lists some troubleshooting options related to the upgrade process.

Upgrade of Docs-Editor

When installing recent version of the Docs-Editor, running the pending-setups might abruptly exit with an error message similar to:

Error writing config entry service-defaults/carbonio-docs-editor: Unexpected response code:
400 (Bad request: Request decoding failed: 1 error occurred:

      * invalid config key "Websocket"

To avoid this error, make sure that the installed package service-discover-base is at least version 1.10.12. You can verify this with the following commands.

# apt search service-discover-base
# dpkg -l service-discover-base
# dnf info service-discover-base
# rpm -q service-discover-base

If the version is older than 1.10.12, please upgrade the package.

After you verified that the version is the correct one, please run this command before pending-setups.

# systemctl restart service-discover.service