How to Install Zextras Carbonio Community Edition (CE)

Posted by

Zextras Carbonio Community Edition (CE) is one of the solutions for Zimbra Open Source Edition users. Considering that Zimbra Open Source edition is no longer officially created by Zimbra. Indeed, we can create a Zimbra installer independently using the guidelines provided by Zimbra. One of them is created by Zextras here:

In this article, I am using Ubuntu 20.04. To make it easier, here is the system that will be created:

IP Address :
Hostname (Short) : mail
Domain :
Hostname (FQDN) :

# Hostname Configuration

Please run the following command

hostnamectl set-hostname

# /etc/hosts Configuration

Adjust /etc/hosts as below :     localhost  mail

# /etc/resolv.conf Configuration

rm /etc/resolv.conf

Adjust /etc/resolv.conf as below :


# Disable sendmail and postfix services

systemctl disable --now sendmail
systemctl disable --now postfix

# Disable UFW

systemctl disable --now ufw

# DNS configuration (local dns) – Optional

Local DNS is required if you don’t have active DNS records. I always install local DNS even have active DNS records. This local DNS is for internal communication only. So, if there is a problem with active DNS (production), Zextras Carbonio Community Edition (CE) can still be used for internal

apt update -y
apt upgrade -y
systemctl disable --now systemd-resolved.service
apt install dnsmasq

Adjust /etc/dnsmasq.conf as below :


Restart dnsmasq service

systemctl enable --now dnsmasq
systemctl restart dnsmasq

Test DNS using host command

host -t MX
host -t A

The result will look like below

root@mail:~# host -t MX mail is handled by 10
root@mail:~# host -t A has address

# Zextras Carbonio CE Repository configuration
Please go to and fill the form to get the full intruction regarding setup Zextras Carbonio CE Repository
# Install Zextras Carbonio CE

apt update
apt upgrade
apt install screen libpangocairo-1.0-0

Note: I always use “screen” for prevention. If you install Zextras Carbonio CE using remote install like SSH to server, I recommend you to run screen first before install Zextras Carbonio CE

apt install service-discover-server \
carbonio-directory-server \
carbonio-proxy \
carbonio-webui carbonio-files-ui \
carbonio-mta \
carbonio-appserver \
carbonio-user-management \
carbonio-files-ce carbonio-files-db \
carbonio-storages-ce \
carbonio-preview-ce \
carbonio-docs-connector-ce carbonio-docs-editor \
postgresql-12 carbonio-prometheus

# Check Carbonio CE service

systemctl status carbonio-*

Note: If any service fails, restart the service. The service that fails most often is the Carbonio Monitoring exporter. Restart that service manually

systemctl restart carbonio-prometheus-nginx-exporter.service

# Initial Configuration


Just type y and click the enter button for the initialization process. Below is an example output

root@ubuntu:~# carbonio-bootstrap
| Starting Carbonio Bootstrap... |
Zextras may collect a minimal set of public-facing technical information about 
your use of Carbonio CE. This data should not contain personal identifiable 
information, but in case they are subject to Zextras' Privacy Policy 

As an additional condition, use of the entire software is conditional upon your 
acceptance that no liability whatsoever shall be attributable to Zextras except 
that for gross negligence or malice. Nothing in this condition detracts from 
the provisions of the single licenses for the same case. Should you not accept 
this condition you use of the software would not be permitted and your licenses 
would be terminated.

No trademark license is granted nor implied. Trademark use, where expressly 
permitted, is subject to the then-current trademark policy of Zextras. 

Operations logged to /tmp/zmsetup.20230509-213603.log

Bootstrap mode: new install
Installing LDAP configuration database...done.
Setting defaults...

Querying DNS for "A" record of current hostname

Querying DNS for "MX" record of

Querying DNS for "A" record of	MX: (

	Interface: ::1

Querying DNS for "A" record of

Querying DNS for "A" record of

Querying DNS for "A" record of
Checking for port conflicts

Main menu

   1) Common Configuration:                                                  
   2) carbonio-directory-server:               Enabled                       
   3) carbonio-mta:                            Enabled                       
   4) carbonio-appserver:                      Enabled                       
   5) carbonio-proxy:                          Enabled                       
   s) Save config to file                                                    
   x) Expand menu                                                            
   q) Quit                                    

*** CONFIGURATION COMPLETE - press 'y' to apply configuration
Select from menu, or press 'y' to apply config (? - help) y

# Setup Carbonio Mesh

service-discover setup-wizard

Insert IP that used (with netmask). Please insert the password for mesh secret. Below is an example output

Setup of first service-discover server instance
ens160, fe80::20c:29ff:fee9:cd29/64
Specify the binding address for service discovery:
Create the cluster credentials password (will be used for setups): 
Type the credential password again: 

To complete the installation of Carbonio Mesh, please run the command below

pending-setups -a

Insert mesh secret password that input formerly. The mesh secret password is saved at /var/lib/service-discover/password file

# Create Main DB Role and Database for Carbonio CE

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

Note: Please adjust DB_ADM_PWD with strong password

# Initial Carbonio Files Databases

Please run the following command

PGPASSWORD=DB_ADM_PWD carbonio-files-db-bootstrap carbonio_adm

Note: Please adjust DB_ADM_PWD with strong password

Below is an example output

root@ubuntu:~# PGPASSWORD=DB_ADM_PWD carbonio-files-db-bootstrap carbonio_adm
Database: user carbonio_adm
Check postgres connection: OK
carbonio-files-db database initialized successfully!

Restart Zextras services

su - zextras
zmcontrol stop
zmcontrol start

# Change Zextras admin password

Zextras Carbonio CE use zextras@domainname as Global Admin. Please change the password for that user for login

zmprov setpassword NewStrongpassword

# Test Zextras Carbonio Admin and Webmail

To access Zextras Carbonio CE, please access URL: https://ip-address for webmail and URL: https://ip-address:6071 for Admin. Login as default user Below is some screenshot from Zextras Carbonio CE

Zextras carbonio CE webmail
Zextras carbonio CE mail folder
Zextras carbonio CE admin
Zextras carbonio CE admin dashboard

Good luck 🙂


  1. Hello, very clever guy 🙂
    Very big thank for your manuals!
    Can you please help me with external mail warning, like you wrote about zimbra 8 🙂
    Its not working in Carbonio CE 🙁 smthing changed there 🙁

  2. halo mas, saya sudah ikutin instuksi dari atas sampe bawah, tapi pas saya testing kirim email ke email pribadi saya, kok tidak ditermina ya?, padahal tidak ada error

      1. Untuk terima email apakah harus dengan port 25 juga?, atau bisa diganti ya mas ?.

        Soalnya port 25nya di tutup dari isp, di kasih smtp relay dari isp.

        Pas di coba kirim email ke, emailnya masuk, lalu coba di bales ke dari email kantor tidak masuk emailnya ke mail server.

        Apa smtp relay cuman bisa kirim tapi gk bisa nerima ?

        Kalau biar bisa nerima email dari luar dengan port 25 yg di blok ini gimana ya mas

        Terima kasih

  3. Hello sir,
    can you please explain how to set up the zextras carbonio ce multi server installation on ubuntu 20.04

  4. Dear Sir,
    I have tried your docs to install the carbonio ce but there are some problems faced by me. Such as I have not seen the proper admin panel in which only mail store list are available not all the servers ( Ldap and Proxy ). Can you please help me.

  5. hello sir,
    will we have to configure the dnsmasq service on all five nodes? or only ldap node? Kindly rply.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.