Carbonio CE Installation

This page provides hardware and software requirements for Carbonio CE 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 CE 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 CE, 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

In order to add Carbonio CE’s repository, go to the following page and fill in the form:

https://www.zextras.com/carbonio-community-edition/#discoverproduct

You will receive an e-mail containing:

  • the URL of the repository

  • the GPG key of the repository

Follow the instructions in the e-mail to add these data to your system.

Repository and Channels

The following are important information concerning the packages repository Carbonio CE 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 CE 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.

Post Installation tasks

Step 3: System Upgrade and Package Installation

The installation of Carbonio CE requires to run the command

# apt install service-discover-server \
carbonio-directory-server \
carbonio-proxy \
carbonio-webui carbonio-files-ui \
carbonio-admin-login-ui \
carbonio-mta  \
carbonio-appserver carbonio-logger  \
carbonio-user-management \
carbonio-files-ce carbonio-files-db \
carbonio-storages-ce \
carbonio-preview-ce \
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-admin-login-ui \
carbonio-mta  \
carbonio-appserver carbonio-logger  \
carbonio-user-management \
carbonio-files-ce carbonio-files-db \
carbonio-storage-ce \
carbonio-preview-ce \
carbonio-docs-connector-ce carbonio-docs-editor \
postgresql-12

Step 4: Bootstrap Carbonio CE

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

# 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 CE components.

Step 5: Setup Carbonio Mesh

Carbonio Mesh is required to allow communication between Carbonio CE 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 0666 /etc/zextras/carbonio-mailbox/token

Step 6: Configure Carbonio CE Databases

Carbonio CE 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
# su - zextras
# zmmailboxdctl restart

Installation Complete

At this point installation is complete and you can start using Carbonio CE 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 CE 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 CE 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.

Carbonio CE Management and troubleshooting

The carbonio service integrates seamlessly with the various system tools like systemctl and journalctl, therefore allowing quicker analysis of the situation and check for any problem should arise.

The syntax is the standard used by systemctl, hence you can use

# systemctl start|stop|status carbonio.*

to start, stop or verify the status of all the carbonio units and

# journalctl -u carbonio.*

to access the logs produced by all the units.

To check, start, or stop a single carbonio unit, you can receive a list of all Carbonio-related units (and their status) with the command below, then use only the unit that you would like to access.

# systemctl list-units "carbonio.*"

Multi-Server Installation

This section describes a Carbonio CE 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 CE users, who use a different number of nodes. For this reason, we introduce the notion of Role: a Carbonio CE 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

In the suggested scenario we will set up a Carbonio CE 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 CE and installs LDAP Server, Directory Server, and DB connection

  3. SRV3 is equipped with MTA, the mail server

  4. SRV4 hosts the Proxy, which allows web access to all components

  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 CE infrastructure!

In our scenario, we start Carbonio CE 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

In order to add Carbonio CE’s repository, go to the following page and fill in the form:

https://www.zextras.com/carbonio-community-edition/#discoverproduct

You will receive an e-mail containing:

  • the URL of the repository

  • the GPG key of the repository

Follow the instructions in the e-mail to add these data to your system.

Repository and Channels

The following are important information concerning the packages repository Carbonio CE 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 CE 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 CE'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 CE (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 and LDAP roles (SRV2)

    Note

    If you plan to install LDAP (possibly also a master/slave LDAP), install this node before the Directory Server.

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

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

Carbonio CE 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 and DB connection

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 CE: Directory Server and LDAP Server, 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 service-discover 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 CE 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
    

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 Service-Discover 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

This node featurs the Proxy, and all the *-ui files (i.e., the front-end packages for Carbonio Files) will be installed here.

  1. Install packages

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

    # carbonio-bootstrap
    
  3. Copy credentials from the Service-Discover 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
  1. 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.

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: 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-storages-ce carbonio-user-management
  carbonio-files-ce carbonio-docs-connector-ce \
  carbonio-docs-editor
# dnf install  service-discover-agent carbonio-appserver \
  carbonio-storages-ce carbonio-user-management
  carbonio-files-ce 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 credentials from the Service-Discover 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. restart the Carbonio Files processes:

    # systemctl restart carbonio-files
    # systemctl restart carbonio-files-sidecar
    

SRV6: 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-ce \
  carbonio-logger
# dnf install service-discover-agent carbonio-appserver \
  carbonio-user-management carbonio-preview-ce \
  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 Service-Discover 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. 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

  5. Restart the Carbonio Preview process

    # systemctl restart carbonio-preview
    # systemctl restart carbonio-preview-sidecar
    
  6. Restart the mailbox process

    # su - zextras -c "zmmailboxdctl restart"
    

To configure the Logger, please refer to Section Logger Node Configuration.

Carbonio CE upgrade

Carbonio CE does not need any installer, but whenever new versions are released, the repositories are updated and packages are available for installation along with the other system updates. Therefore, to upgrade Carbonio CE, first check for new packages:

# apt update
# dnf update

Then either

  • upgrade Carbonio CE packages only

    # apt install "carbonio-*"
    
    # dnf install "carbonio-*"
    

or

  • upgrade the whole system

    # apt upgrade
    
    # dnf upgrade
    

Hint

Even if you choose to upgrade only Carbonio CE, remember that you should keep the whole system up to date, because new system packages may contain security fixes or bug fixes.

Troubleshooting

Problem: Error in upgrading

In early Carbonio CE versions, up to 4.0.3 included, an error similar to the following one may arise during upgrades in both Single-Server or Multi-Server installations:

Preparing to unpack .../114-carbonio-core_4.0.5-1ubuntu1~focal_amd64.deb ...
Unpacking carbonio-core (4.0.5-1ubuntu1~focal) over (4.0.3-1ubuntu1~focal) ...
dpkg: error processing archive /tmp/apt-dpkg-install-GOKoug/114-carbonio-core_4.0.5-1ubuntu1~focal_amd64.deb (--unpack):
trying to overwrite '/opt/zextras/.mini_alue_ce', which is also in package carbonio-ce 4.0.3-1ubuntu1~focal
dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)

[...]

Errors were encountered while processing:
/tmp/apt-dpkg-install-GOKoug/114-carbonio-core_4.0.5-1ubuntu1~focal_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

In this case, the error message stems from carbonio-ce package, but it may be related to any Carbonio package, for example carbonio-mta, carbonio-proxy, and so on. If this is the case, use the proper package name (instead of carbonio-ce) in the commands given below.

Solution:

This is a known problem, fixed in 4.0.4, for which the following workaround exists: install package carbonio-ce (or the one that failed):

# apt install carbonio-ce

Make sure that the carbonio-core package is installed and is the latest version available:

# apt policy carbonio-core

The outcome of the command shows the available versions of a package and should include three asterisks (***) before the latest available version. If not, install the package:

# apt install carbonio-core

Once installed, if a message appears, that some packages are not needed anymore, execute:

# apt autoremove

It is worth noticing that the manual installation of the package does not have any effect on its existing configurations, so you can proceed without any fear to lose them.