Using packages (remote server)
You must run the installation procedure as a privileged user.
When you run a command, check its output. If you get an error message, stop the procedure and fix the issue.
We recommend encrypting the communications of both the web server and the database, even though these steps are not required for Centreon to work. The procedure below sets up this encryption. In some cases (e.g. when running quick tests), you may want a non-secure setup: just skip step 3: Set up the TLS configuration.
Prerequisitesβ
After installing your host server, update your operating system using the following command:
- Alma / RHEL / Oracle Linux 9
- Alma / RHEL / Oracle Linux 10
- Debian 13
dnf update
Additional configuration for EL 9β
If you intend to use Centreon in French, Spanish, Portuguese or German, install the corresponding packages:
dnf install glibc-langpack-fr
dnf install glibc-langpack-es
dnf install glibc-langpack-pt
dnf install glibc-langpack-de
Use the following command to check which languages are installed on your system:
locale -a
To get the PHP version required by Centreon 26.10 during installation, your Alma/RHEL/Oracle Linux version must be at least 10.2.
dnf update
Additional configuration for EL 10β
If you intend to use Centreon in French, Spanish, Portuguese or German, install the corresponding packages:
dnf install glibc-langpack-fr
dnf install glibc-langpack-es
dnf install glibc-langpack-pt
dnf install glibc-langpack-de
Use the following command to check which languages are installed on your system:
locale -a
apt update && apt upgrade
Accept all GPG keys and reboot your server if a kernel update is proposed.
Step 1: Pre-installationβ
Disable SELinuxβ
- Alma / RHEL / Oracle Linux 9
- Alma / RHEL / Oracle Linux 10
- Debian 13
During installation, SELinux should be disabled. To do this, edit the file /etc/selinux/config and replace enforcing with disabled. You can also run the following command:
sed -i s/^SELINUX=.*$/SELINUX=disabled/ /etc/selinux/config
Reboot your operating system to apply the change.
reboot
After system startup, perform a quick check of the SELinux status:
getenforce
You should have this result:
Disabled
Note that this deactivation should be temporary. SELinux should be reenabled after installation for security reasons.
During installation, SELinux should be disabled. To do this, edit the file /etc/selinux/config and replace enforcing with disabled. You can also run the following command:
sed -i s/^SELINUX=.*$/SELINUX=disabled/ /etc/selinux/config
Reboot your operating system to apply the change.
reboot
After system startup, perform a quick check of the SELinux status:
getenforce
You should have this result:
Disabled
Note that this deactivation should be temporary. SELinux should be reenabled after installation for security reasons.
SELinux is not installed on Debian 13, continue.
Configure or disable the firewallβ
If you have a firewall and it is active, add firewall rules. You can also disable the firewall during installation by running the following commands:
systemctl stop firewalld
systemctl disable firewalld
Note that this deactivation should be temporary. The firewall should be reenabled after installation for security reasons.
Dependenciesβ
- Alma 9
- RHEL 9
- Oracle Linux 9
- Alma Linux 10
- RHEL Linux 10
- Oracle Linux 10
- Debian 13
dnf install dnf-plugins-core
dnf install epel-release
dnf config-manager --set-enabled crb
Install and enable PHP 8.4 using the following commands:
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
dnf module switch-to php:remi-8.4/common -y
dnf install -y dnf-plugins-core
dnf install -y http://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
subscription-manager repos --enable codeready-builder-for-rhel-9-x86_64-rpms
If your server is a Cloud RHEL instance, you will have to execute the following command:
dnf config-manager --set-enabled codeready-builder-for-rhel-9-rhui-rpms
Install and enable PHP 8.4 using the following commands:
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
dnf module switch-to php:remi-8.4/common -y
dnf install dnf-plugins-core
dnf install -y http://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
dnf config-manager --set-enabled ol9_codeready_builder
Install and enable PHP 8.4 using the following commands:
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
dnf module switch-to php:remi-8.4/common -y
dnf install dnf-plugins-core -y
dnf config-manager --set-enabled crb
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm
dnf install -y php8.4 php8.4-fpm
dnf install dnf-plugins-core -y
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm
subscription-manager repos --enable codeready-builder-for-rhel-10-x86_64-rpms
dnf install -y php8.4 php8.4-fpm
If your server is a Cloud RHEL instance, you will have to execute the following command:
dnf config-manager --set-enabled codeready-builder-for-rhel-10-rhui-rpms
dnf install dnf-plugins-core -y
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm
dnf config-manager --set-enabled ol10_codeready_builder
dnf install -y php8.4 php8.4-fpm
apt update && apt install -y lsb-release ca-certificates apt-transport-https wget gnupg2 curl sudo
Database repositoryβ
- MariaDB
- MySQL
- Alma / RHEL / Oracle Linux 9
- Alma / RHEL / Oracle Linux 10
- Debian 13
curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | bash -s -- --os-type=rhel --os-version=9 --mariadb-server-version=mariadb-11.8 --skip-maxscale
curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | bash -s -- --os-type=rhel --os-version=10 --mariadb-server-version=mariadb-11.8 --skip-maxscale
curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash -s -- --os-type=debian --os-version=13 --mariadb-server-version="mariadb-11.8" --skip-maxscale
- Alma / RHEL / Oracle Linux 9
- Alma / RHEL / Oracle Linux 10
- Debian 13
dnf install -y "https://dev.mysql.com/get/mysql84-community-release-el9-1.noarch.rpm"
curl -fsSL https://repo.mysql.com/RPM-GPG-KEY-mysql-2025 -o /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2023
old_mysql_key=$(rpm -q gpg-pubkey 2>/dev/null | grep -i a8d3785c || true)
if [ -n "$old_mysql_key" ]; then rpm -e $old_mysql_key 2>/dev/null || true; fi
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2023
dnf install -y "https://dev.mysql.com/get/mysql84-community-release-el10-1.noarch.rpm"
curl -fsSL https://repo.mysql.com/RPM-GPG-KEY-mysql-2025 -o /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2023
old_mysql_key=$(rpm -q gpg-pubkey 2>/dev/null | grep -i a8d3785c || true)
if [ -n "$old_mysql_key" ]; then rpm -e $old_mysql_key 2>/dev/null || true; fi
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2023
mysql_apt_config="mysql-apt-config_0.8.36-1_all.deb"
curl -fJLO "https://dev.mysql.com/get/$mysql_apt_config"
echo "mysql-apt-config mysql-apt-config/select-server select mysql-8.4-lts" | debconf-set-selections
export DEBIAN_FRONTEND="noninteractive"
apt install -y "./$mysql_apt_config"
mysql_keyring=$(grep -ohm1 'signed-by=[^] ]*' /etc/apt/sources.list.d/mysql.list 2>/dev/null | cut -d= -f2)
[ -z "$mysql_keyring" ] && mysql_keyring=/etc/apt/trusted.gpg.d/mysql.gpg
( set -o pipefail; curl -fsSL https://repo.mysql.com/RPM-GPG-KEY-mysql-2025 | gpg --dearmor --yes -o "$mysql_keyring" )
Centreon repositoryβ
- Alma / RHEL / Oracle Linux 9
- Alma / RHEL / Oracle Linux 10
- Debian 13
dnf config-manager --add-repo https://packages.centreon.com/rpm-standard/26.10/el9/centreon-26.10.repo
dnf clean all --enablerepo=*
dnf update
dnf config-manager --add-repo https://packages.centreon.com/rpm-standard/26.10/el10/centreon-26.10.repo
dnf clean all --enablerepo=*
dnf update -y
echo "deb https://packages.centreon.com/apt-standard/ $(lsb_release -sc)-26.10-stable main" | tee -a /etc/apt/sources.list.d/centreon-26.10-stable.list
echo "deb https://packages.centreon.com/apt-plugins-stable/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/centreon-plugins.list
Then import the repository key:
wget -O- https://apt-key.centreon.com | gpg --dearmor | tee /etc/apt/trusted.gpg.d/centreon.gpg > /dev/null 2>&1
apt update
Step 2: Install the serverβ
This section describes how to install a Centreon remote server.
You can install this server with a local database on the server or a remote database on a dedicated server.
- With a local database
- With a remote database
- MariaDB
- MySQL
- Alma / RHEL / Oracle Linux 9
- Alma / RHEL / Oracle Linux 10
- Debian 13
dnf install -y centreon-mariadb centreon
systemctl daemon-reload
systemctl restart mariadb
dnf install -y centreon-mariadb centreon
systemctl daemon-reload
systemctl restart mariadb
apt update
apt install -y centreon-mariadb centreon
systemctl daemon-reload
systemctl restart mariadb
Set a password for the root user of the database by executing the following command:
mariadb-secure-installation
Answer yes to all the questions except "Disallow root login remotely?".
- Alma / RHEL / Oracle Linux 9
- Alma / RHEL / Oracle Linux 10
- Debian 13
dnf install -y mysql-server mysql
dnf install -y centreon-mysql centreon
grep -q '^!includedir /etc/my.cnf.d' /etc/my.cnf || echo '!includedir /etc/my.cnf.d' >> /etc/my.cnf
systemctl enable --now mysqld
sed -Ei 's/LimitNOFILE\s\=\s[0-9]{1,}/LimitNOFILE = 32000/' /usr/lib/systemd/system/mysqld.service
systemctl daemon-reload
systemctl restart mysqld
It is mandatory to set a password for the root user of the database (you will need this password during the web installation). It must have at least 8 characters, upper and lower case, a digit and a special character. Retrieve the temporary password created by MySQL:
grep 'temporary password' /var/log/mysqld.log
Then change it when prompted by the following command:
mysql_secure_installation
Answer yes to all the questions except "Disallow root login remotely?".
dnf install -y centreon-mysql centreon
grep -q '^!includedir /etc/my.cnf.d' /etc/my.cnf || echo '!includedir /etc/my.cnf.d' >> /etc/my.cnf
systemctl start mysqld
It is mandatory to set a password for the root user of the database (you will need this password during the web installation). It must have at least 8 characters, upper and lower case, a digit and a special character. Retrieve the temporary password created by MySQL:
grep 'temporary password' /var/log/mysqld.log
Then change it when prompted by the following command:
mysql_secure_installation
Answer yes to all the questions except "Disallow root login remotely?".
apt update
apt install -y centreon-mysql mysql-common
apt install -y centreon
# Select "Use Legacy Authentication Method"
systemctl daemon-reload
systemctl restart mysql
You can now move on to the next step.
If installing the database on a dedicated server, this server should also have the prerequisite repositories.
Run the following command on the central server:
- Alma / RHEL / Oracle Linux 9
- Alma / RHEL / Oracle Linux 10
- Debian 13
dnf install -y centreon-central
dnf install -y centreon-central
apt update
apt install -y centreon-central
Then run the following commands on the dedicated server for your database:
- MariaDB
- MySQL
- Alma / RHEL / Oracle Linux 9
- Alma / RHEL / Oracle Linux 10
- Debian 13
dnf install -y centreon-mariadb
systemctl daemon-reload
systemctl restart mariadb
dnf install -y centreon-mariadb
systemctl daemon-reload
systemctl restart mariadb
apt update
apt install -y --no-install-recommends centreon-mariadb
systemctl daemon-reload
systemctl restart mariadb
- Alma / RHEL / Oracle Linux 9
- Alma / RHEL / Oracle Linux 10
- Debian 13
dnf install -y mysql-server mysql
dnf install -y centreon-mysql
grep -q '^!includedir /etc/my.cnf.d' /etc/my.cnf || echo '!includedir /etc/my.cnf.d' >> /etc/my.cnf
sed -Ei 's/LimitNOFILE\s*=\s*[0-9]+/LimitNOFILE = 32000/' /usr/lib/systemd/system/mysqld.service
systemctl daemon-reload
systemctl enable --now mysqld
systemctl status mysqld
dnf install -y mysql-server mysql
dnf install -y centreon-mysql
grep -q '^!includedir /etc/my.cnf.d' /etc/my.cnf || echo '!includedir /etc/my.cnf.d' >> /etc/my.cnf
sed -Ei 's/LimitNOFILE\s*=\s*[0-9]+/LimitNOFILE = 32000/' /usr/lib/systemd/system/mysqld.service
systemctl daemon-reload
systemctl enable --now mysqld
systemctl status mysqld
apt update
apt install -y centreon-mysql
# SΓ©lectionner "Use Legacy Authentication Method"
systemctl daemon-reload
systemctl restart mysql
It is mandatory to set a password for the root user of the database (you will need this password during the web installation).
- MariaDB
- MySQL
mariadb-secure-installation
Answer yes to all the questions except "Disallow root login remotely?".
Retrieve the temporary password created by MySQL:
grep 'temporary password' /var/log/mysqld.log
Then change it when prompted by the following command (the password must have at least 8 characters, upper and lower case, a digit and a special character):
mysql_secure_installation
Answer yes to all the questions except "Disallow root login remotely?".
Then, in the remote database, create a user with root privileges. You will have to enter this user during the web installation process (at step 6, in the Root user and Root password fields).
CREATE USER '<USER>'@'<CENTRAL_SERVER_IP>' IDENTIFIED BY '<PASSWORD>';
GRANT ALL PRIVILEGES ON *.* TO '<USER>'@'<CENTRAL_SERVER_IP>' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Example:
CREATE USER 'dbadmin'@'<CENTRAL_SERVER_IP>' IDENTIFIED BY '<DBADMIN_PASSWORD>';
GRANT ALL PRIVILEGES ON *.* TO 'dbadmin'@'<CENTRAL_SERVER_IP>' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Replace <CENTRAL_SERVER_IP> with the Centreon Central IP address that will connect to the database server.
Replace <USER> and <PASSWORD> with the user's credentials.
This user will only be used for the installation process; once the web installation is complete you can delete this user using:
DROP USER '<USER>'@'<CENTRAL_SERVER_IP>';
Example:
DROP USER 'dbadmin'@'<CENTRAL_SERVER_IP>';
- MariaDB
- MySQL
- The package centreon-mariadb installs an optimized MariaDB configuration to be used with Centreon.
If this package is not installed, system limitation LimitNOFILE should be at least set to 32000 using a dedicated configuration file; for example:
$ cat /etc/systemd/system/mariadb.service.d/centreon.conf[Service]LimitNOFILE=32000
- Same for the MariaDB open_files_limit directive:
Please note that the following configuration is only an example for an 8 GB of RAM infrastructure. It is up to each user to adapt the database configuration to fit their needs. We recommend you consult your database administrator for a configuration that fits your needs.
- Alma / RHEL / Oracle Linux 9
- Alma / RHEL / Oracle Linux 10
- Debian 13
$ cat /etc/my.cnf.d/centreon.cnf[server]innodb_file_per_table=1open_files_limit=32000
$ cat /etc/my.cnf.d/centreon.cnf[server]innodb_file_per_table=1open_files_limit=32000
$ cat /etc/mysql/mariadb.conf.d/80-centreon.cnf[server]innodb_file_per_table=1open_files_limit=32000MariaDB must listen to all interfaces instead of localhost/127.0.0.1, which is the default value. Edit the following file:
/etc/mysql/mariadb.conf.d/50-server.cnfSet the bind-address parameter to 0.0.0.0 and restart mariadb.
systemctl restart mariadb
- The package centreon-mysql installs an optimized MySQL configuration to be used with Centreon.
If this package is not installed, system limitation LimitNOFILE should be at least set to 32000 using a dedicated configuration file; for example:
$ cat /etc/systemd/system/mysqld.service.d/centreon.conf[Service]LimitNOFILE=32000
- Same for the MySQL open_files_limit directive:
Please note that the following configuration is only an example for an 8 GB of RAM infrastructure. It is up to each user to adapt the database configuration to fit their needs. We recommend you consult your database administrator for a configuration that fits your needs.
- Alma / RHEL / Oracle Linux 9
- Alma / RHEL / Oracle Linux 10
- Debian 13
$ cat /etc/my.cnf.d/centreon.cnf[server]innodb_file_per_table=1open_files_limit=32000
$ cat /etc/my.cnf.d/centreon.cnf[server]innodb_file_per_table=1open_files_limit=32000
$ cat /etc/mysql/mysql.conf.d/80-centreon.cnf[server]innodb_file_per_table=1open_files_limit=32000MySQL must listen to all interfaces instead of localhost/127.0.0.1, which is the default value. Edit the following file:
/etc/mysql/mysql.conf.d/50-server.cnfSet the bind-address parameter to 0.0.0.0 and restart mysql.
systemctl restart mysqld
In addition to the directives above, it is strongly recommended to tune the database configuration with the following parameters:
[server]key_buffer_size = 256Msort_buffer_size = 32Mjoin_buffer_size = 4Mthread_cache_size = 64read_buffer_size = 512Kread_rnd_buffer_size = 256Kmax_allowed_packet = 128MOptionally, tune the memory and buffer utilization of the InnoDB engine powered tables. The example below applies to a database server with 8 GB RAM
innodb_buffer_pool_size=1GRemember to restart database after changing the configuration.
Step 3: Set up the TLS configurationβ
Generate the certificatesβ
Use a certificate issued by a trusted authority. Self-signed certificates may be used for test purposes, but they MUST NOT be used in production.
- If you already have a certificate validated by an authority, you can proceed to the next step.
- If you do not have a certificate validated by an authority, you can generate one on platforms such as Let's Encrypt.
- If, for test purposes, you want to use a self-signed certificate, follow this procedure before activating HTTPS mode on your server. Note that you will have to import the CA certificate into your browser.
Say you have the following files (in our example, in /etc/pki/centreon-tls/ on EL 9 or 10, or /etc/ssl/certs/centreon-tls on Debian 13):
- rootCA.pem (public - not needed if you are using a trusted certificate)
- web.pem (web server certificate)
- web-key.pem (web server private key)
- db.pem (database server certificate)
- db-key.pem (database server private key)
-
Install the root CA into the OS trust store of the central server's host machine:
- Alma / RHEL / Oracle Linux 9
- Alma / RHEL / Oracle Linux 10
- Debian 13
cp /etc/pki/centreon-tls/rootCA.pem /etc/pki/ca-trust/source/anchors/centreon-dev.crtupdate-ca-trust extractcp /etc/pki/centreon-tls/rootCA.pem /etc/pki/ca-trust/source/anchors/centreon-dev.crtupdate-ca-trust extractcp /etc/ssl/certs/centreon-tls/rootCA.pem /usr/local/share/ca-certificates/centreon-dev.crtupdate-ca-certificates -
If you are using a remote database, also execute this procedure on the machine that will host the remote database, then copy the root CA certificate of the database machine to the central server host machine's trust store.
For the databaseβ
This section describes how to set up a TLS connection between the central server and the database.
- MariaDB
- MySQL
- Alma / RHEL / Oracle Linux 9
- Alma / RHEL / Oracle Linux 10
- Debian 13
- Create the configuration file for the database to start in TLS.
cat > /etc/my.cnf.d/centreon-tls.cnf <<'EOF'
[mariadb]
ssl_ca = /etc/pki/centreon-tls/rootCA.pem
ssl_cert = /etc/pki/centreon-tls/db.pem
ssl_key = /etc/pki/centreon-tls/db-key.pem
require_secure_transport = OFF
tls_version = TLSv1.2,TLSv1.3
EOF
- Give the following permissions on the key so that it is readable by the mysql user only:
chown root:mysql /etc/pki/centreon-tls/db-key.pem
chmod 0640 /etc/pki/centreon-tls/db-key.pem
- Configure MariaDB CLI to use TLS (you will need it later).
cat > /etc/my.cnf.d/centreon-tls-client.cnf <<'EOF'
[client]
ssl-ca=/etc/pki/centreon-tls/rootCA.pem
ssl-verify-server-cert
EOF
- Start MariaDB:
systemctl daemon-reload
systemctl enable --now mariadb
systemctl restart mariadb
- Secure the installation by defining a password for the database root account:
mariadb-secure-installation
- Check that the server is using the certificates you defined (not the certificates it generates automatically when it starts).
mariadb -e "SHOW GLOBAL VARIABLES WHERE Variable_name IN ('have_ssl','ssl_ca','ssl_cert','ssl_key');"
The expected result is:
have_ssl YES and ssl_ca /etc/pki/centreon-tls/rootCA.pem
- Set the environment variables that will be used by PHP to communicate with the database in TLS mode.
for f in /etc/centreon/.env /usr/share/centreon/.env; do
mkdir -p "$(dirname "$f")"
cat >> "$f" <<'EOF'
DATABASE_SSL_ENABLED=1
DATABASE_VERIFY_SERVER_CERT=1
DATABASE_CA_PATH=/etc/pki/centreon-tls/rootCA.pem
EOF
done
- Create the configuration file for the database to start in TLS.
cat > /etc/my.cnf.d/centreon-tls.cnf <<'EOF'
[mariadb]
ssl_ca = /etc/pki/centreon-tls/rootCA.pem
ssl_cert = /etc/pki/centreon-tls/db.pem
ssl_key = /etc/pki/centreon-tls/db-key.pem
require_secure_transport = OFF
tls_version = TLSv1.2,TLSv1.3
EOF
- Give the following permissions on the key so that it is readable by the mysql user only:
chown root:mysql /etc/pki/centreon-tls/db-key.pem
chmod 0640 /etc/pki/centreon-tls/db-key.pem
- Configure MariaDB CLI to use TLS (you will need it later).
cat > /etc/my.cnf.d/centreon-tls-client.cnf <<'EOF'
[client]
ssl-ca=/etc/pki/centreon-tls/rootCA.pem
ssl-verify-server-cert
EOF
- Start MariaDB:
systemctl daemon-reload
systemctl enable --now mariadb
systemctl restart mariadb
- Check that the server is using the certificates you defined (not the certificates it generates automatically when it starts).
mariadb -e "SHOW GLOBAL VARIABLES WHERE Variable_name IN ('have_ssl','ssl_ca','ssl_cert','ssl_key');"
The expected result is:
have_ssl YES and ssl_ca /etc/pki/centreon-tls/rootCA.pem
- Set the environment variables that will be used by PHP to communicate with the database in TLS mode.
for f in /etc/centreon/.env /usr/share/centreon/.env; do
mkdir -p "$(dirname "$f")"
cat >> "$f" <<'EOF'
DATABASE_SSL_ENABLED=1
DATABASE_VERIFY_SERVER_CERT=1
DATABASE_CA_PATH=/etc/pki/centreon-tls/rootCA.pem
EOF
done
- Store the certificates in a location the database service can read. (By default, MariaDB on Debian only reads certificates under /etc/mysql/).
install -d -o root -g mysql -m 0750 /etc/mysql/centreon-tls
cp /etc/ssl/certs/centreon-tls/rootCA.pem /etc/mysql/centreon-tls/rootCA.pem
cp /etc/ssl/certs/centreon-tls/db.pem /etc/mysql/centreon-tls/db.pem
cp /etc/ssl/certs/centreon-tls/db-key.pem /etc/mysql/centreon-tls/db-key.pem
chown root:mysql /etc/mysql/centreon-tls/*.pem
chmod 0644 /etc/mysql/centreon-tls/rootCA.pem /etc/mysql/centreon-tls/db.pem
chmod 0640 /etc/mysql/centreon-tls/db-key.pem
- Configure the database service to start in TLS mode and specify the certificate locations.
mapfile -t inc < <(grep -oP '^\s*!includedir\s+\K\S+' /etc/mysql/my.cnf)
[ "${#inc[@]}" -eq 0 ] && echo "WARNING: no !includedir in /etc/mysql/my.cnf" >&2
for d in "${inc[@]}"; do
mkdir -p "$d"
cat > "$d/99-centreon-tls.cnf" <<'EOF'
[mysqld]
ssl_ca = /etc/mysql/centreon-tls/rootCA.pem
ssl_cert = /etc/mysql/centreon-tls/db.pem
ssl_key = /etc/mysql/centreon-tls/db-key.pem
require_secure_transport = OFF
tls_version = TLSv1.2,TLSv1.3
EOF
chmod 0644 "$d/99-centreon-tls.cnf"
done
- Configure MariaDB CLI to use TLS (you will need it later).
cat > /etc/mysql/conf.d/centreon-tls-client.cnf <<'EOF'
[client]
ssl-ca=/etc/mysql/centreon-tls/rootCA.pem
ssl-verify-server-cert
EOF
- Start MariaDB.
systemctl daemon-reload
systemctl enable --now mariadb
systemctl restart mariadb
- Check that the server is using the certificates you defined (not the certificates it generates automatically when it starts).
mariadb -e "SHOW GLOBAL VARIABLES WHERE Variable_name IN ('have_ssl','ssl_ca','ssl_cert','ssl_key');"
The results should be as follows:
have_ssl YES and ssl_ca /etc/mysql/centreon-tls/rootCA.pem
- Set the environment variables that will be used by PHP to communicate with the database in TLS mode.
for f in /etc/centreon/.env /usr/share/centreon/.env; do
mkdir -p "$(dirname "$f")"
cat >> "$f" <<'EOF'
DATABASE_SSL_ENABLED=1
DATABASE_VERIFY_SERVER_CERT=1
DATABASE_CA_PATH=/etc/ssl/certs/centreon-tls/rootCA.pem
EOF
done
- Alma / RHEL / Oracle Linux 9
- Alma / RHEL / Oracle Linux 10
- Debian 13
- Create the configuration file for the database to start in TLS.
cat > /etc/my.cnf.d/centreon-tls.cnf <<'EOF'
[mysqld]
ssl_ca = /etc/pki/centreon-tls/rootCA.pem
ssl_cert = /etc/pki/centreon-tls/db.pem
ssl_key = /etc/pki/centreon-tls/db-key.pem
require_secure_transport = OFF
tls_version = TLSv1.2,TLSv1.3
EOF
- Give the following permissions on the key so that it is readable by the mysql user only:
chown root:mysql /etc/pki/centreon-tls/db-key.pem
chmod 0640 /etc/pki/centreon-tls/db-key.pem
- Configure MySQL CLI to use TLS (you will need it later).
cat > /etc/my.cnf.d/centreon-tls-client.cnf <<'EOF'
[client]
ssl-ca=/etc/pki/centreon-tls/rootCA.pem
ssl-mode=VERIFY_CA
EOF
- Start MySQL:
systemctl daemon-reload
systemctl enable --now mysqld
systemctl restart mysqld
- Check that the server is using the certificates you defined (not the certificates it generates automatically when it starts).
my_print_defaults mysqld | grep -iE 'ssl|tls'
mysql --ssl-mode=DISABLED -u root -e \
"SHOW GLOBAL STATUS WHERE Variable_name IN ('Current_tls_ca','Current_tls_cert','Current_tls_key');"
The results should be as follows:
Current_tls_ca /etc/pki/centreon-tls/rootCA.pem
- Secure the installation (replace my_password by your own in the following command). Define the password you want:
db_root_password='my_password'
mysql_root_auth=(--ssl-mode=DISABLED -u root)
if ! mysql --ssl-mode=DISABLED -u root -e "SELECT 1" >/dev/null 2>&1; then
mysql_temp_pw=$(grep 'temporary password is generated for root@localhost' /var/log/mysqld.log \
2>/dev/null | tail -1 | sed -E 's/.*root@localhost: //')
if [ -z "$mysql_temp_pw" ]; then
echo "Could not authenticate to MySQL as root" >&2
exit 1
fi
mysql_root_auth=(--ssl-mode=DISABLED --connect-expired-password -u root -p"${mysql_temp_pw}")
fi
Then replace the default autogenerated password with yours.
mysql "${mysql_root_auth[@]}" --verbose <<EOF
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '${db_root_password}';
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;
EOF
Restart MySQL:
systemctl restart mysql
- Raise the open-file limit and restart:
sed -Ei 's/LimitNOFILE\s\=\s[0-9]{1,}/LimitNOFILE = 32000/' /usr/lib/systemd/system/mysqld.service
systemctl daemon-reload
systemctl restart mysqld
- Check that the end-to-end TLS handshake chains to YOUR CA (optional):
mysql --ssl-mode=VERIFY_CA --ssl-ca=/etc/pki/centreon-tls/rootCA.pem -u root -p -e "STATUS" | grep -i ssl
The expected output is as follows:
SSL: Cipher in use is TLS_AES_128_GCM_SHA256
- Set the environment variables that will be used by PHP to communicate with the database in TLS mode.
for f in /etc/centreon/.env /usr/share/centreon/.env; do
mkdir -p "$(dirname "$f")"
cat >> "$f" <<'EOF'
DATABASE_SSL_ENABLED=1
DATABASE_VERIFY_SERVER_CERT=1
DATABASE_CA_PATH=/etc/pki/centreon-tls/rootCA.pem
EOF
done
- Create the configuration file for the database to start in TLS.
cat > /etc/my.cnf.d/centreon-tls.cnf <<'EOF'
[mysqld]
ssl_ca = /etc/pki/centreon-tls/rootCA.pem
ssl_cert = /etc/pki/centreon-tls/db.pem
ssl_key = /etc/pki/centreon-tls/db-key.pem
require_secure_transport = OFF
tls_version = TLSv1.2,TLSv1.3
EOF
- Give the following permissions on the key so that it is readable by the mysql user only:
chown root:mysql /etc/pki/centreon-tls/db-key.pem
chmod 0640 /etc/pki/centreon-tls/db-key.pem
- Configure MySQL CLI to use TLS (you will need it later).
cat > /etc/my.cnf.d/centreon-tls-client.cnf <<'EOF'
[client]
ssl-ca=/etc/pki/centreon-tls/rootCA.pem
ssl-mode=VERIFY_CA
EOF
- Start MySQL:
systemctl daemon-reload
systemctl enable --now mysqld
systemctl restart mysqld
- Check that the server is using the certificates you defined (not the certificates it generates automatically when it starts).
my_print_defaults mysqld | grep -iE 'ssl|tls'
mysql --ssl-mode=DISABLED -u root -e \
"SHOW GLOBAL STATUS WHERE Variable_name IN ('Current_tls_ca','Current_tls_cert','Current_tls_key');"
The results should be as follows:
Current_tls_ca /etc/pki/centreon-tls/rootCA.pem
- Secure the installation (replace my_password by your own in the following command). Define the password you want:
db_root_password='my_password'
mysql_root_auth=(--ssl-mode=DISABLED -u root)
if ! mysql --ssl-mode=DISABLED -u root -e "SELECT 1" >/dev/null 2>&1; then
mysql_temp_pw=$(grep 'temporary password is generated for root@localhost' /var/log/mysqld.log \
2>/dev/null | tail -1 | sed -E 's/.*root@localhost: //')
if [ -z "$mysql_temp_pw" ]; then
echo "Could not authenticate to MySQL as root" >&2
exit 1
fi
mysql_root_auth=(--ssl-mode=DISABLED --connect-expired-password -u root -p"${mysql_temp_pw}")
fi
Then replace the default autogenerated password with yours.
mysql "${mysql_root_auth[@]}" --verbose <<EOF
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '${db_root_password}';
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;
EOF
Restart MySQL:
systemctl restart mysql
- Raise the open-file limit and restart:
sed -Ei 's/LimitNOFILE\s\=\s[0-9]{1,}/LimitNOFILE = 32000/' /usr/lib/systemd/system/mysqld.service
systemctl daemon-reload
systemctl restart mysqld
- Check that the end-to-end TLS handshake chains to YOUR CA (optional):
mysql --ssl-mode=VERIFY_CA --ssl-ca=/etc/pki/centreon-tls/rootCA.pem -u root -p -e "STATUS" | grep -i ssl
The expected output is as follows:
SSL: Cipher in use is TLS_AES_128_GCM_SHA256
- Set the environment variables that will be used by PHP to communicate with the database in TLS mode.
for f in /etc/centreon/.env /usr/share/centreon/.env; do
mkdir -p "$(dirname "$f")"
cat >> "$f" <<'EOF'
DATABASE_SSL_ENABLED=1
DATABASE_VERIFY_SERVER_CERT=1
DATABASE_CA_PATH=/etc/pki/centreon-tls/rootCA.pem
EOF
done
- Store the certificates in a location the database service can read. (By default, MySQL on Debian only reads certificates under /etc/mysql/).
install -d -o root -g mysql -m 0750 /etc/mysql/centreon-tls
cp /etc/ssl/certs/centreon-tls/rootCA.pem /etc/mysql/centreon-tls/rootCA.pem
cp /etc/ssl/certs/centreon-tls/db.pem /etc/mysql/centreon-tls/db.pem
cp /etc/ssl/certs/centreon-tls/db-key.pem /etc/mysql/centreon-tls/db-key.pem
chown root:mysql /etc/mysql/centreon-tls/*.pem
chmod 0644 /etc/mysql/centreon-tls/rootCA.pem /etc/mysql/centreon-tls/db.pem
chmod 0640 /etc/mysql/centreon-tls/db-key.pem
- Configure the database service to start in TLS mode and specify the certificate locations.
mapfile -t inc < <(grep -oP '^\s*!includedir\s+\K\S+' /etc/mysql/my.cnf)
[ "${#inc[@]}" -eq 0 ] && echo "WARNING: no !includedir in /etc/mysql/my.cnf" >&2
for d in "${inc[@]}"; do
mkdir -p "$d"
cat > "$d/99-centreon-tls.cnf" <<'EOF'
[mysqld]
ssl_ca = /etc/mysql/centreon-tls/rootCA.pem
ssl_cert = /etc/mysql/centreon-tls/db.pem
ssl_key = /etc/mysql/centreon-tls/db-key.pem
require_secure_transport = OFF
tls_version = TLSv1.2,TLSv1.3
EOF
chmod 0644 "$d/99-centreon-tls.cnf"
done
- Configure MySQL CLI to use TLS (you will need it later).
cat > /etc/mysql/conf.d/centreon-tls-client.cnf <<'EOF'
[client]
ssl-ca=/etc/mysql/centreon-tls/rootCA.pem
ssl-mode=VERIFY_CA
EOF
- Start MySQL.
systemctl daemon-reload
systemctl enable --now mysql
systemctl restart mysql
- Check that the server is using the certificates you defined (not the certificates it generates automatically when it starts).
my_print_defaults mysqld | grep -iE 'ssl|tls'
mysql --ssl-mode=DISABLED -u root -N -e \
"SHOW GLOBAL STATUS WHERE Variable_name IN ('Current_tls_ca','Current_tls_cert','Current_tls_key');"
The results should be as follows:
Current_tls_ca /etc/mysql/centreon-tls/rootCA.pem
- Secure the installation (replace my_password by your own in the following command). Define the password you want:
db_root_password='my_password'
mysql_root_auth=(--ssl-mode=DISABLED -u root)
if ! mysql --ssl-mode=DISABLED -u root -e "SELECT 1" >/dev/null 2>&1; then
mysql_temp_pw=$(grep 'temporary password is generated for root@localhost' /var/log/mysql/error.log \
2>/dev/null | tail -1 | sed -E 's/.*root@localhost: //')
if [ -z "$mysql_temp_pw" ]; then
echo "Could not authenticate to MySQL as root" >&2
exit 1
fi
mysql_root_auth=(--ssl-mode=DISABLED --connect-expired-password -u root -p"${mysql_temp_pw}")
fi
Then replace the default autogenerated password with yours.
mysql "${mysql_root_auth[@]}" --verbose <<EOF
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '${db_root_password}';
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;
EOF
Restart MySQL:
systemctl restart mysql
- Check that the end-to-end TLS handshake chains to YOUR CA (optional):
mysql --ssl-mode=VERIFY_CA --ssl-ca=/etc/mysql/centreon-tls/rootCA.pem -u root -p -e "STATUS" | grep -i ssl
The expected output is as follows:
SSL: Cipher in use is TLS_AES_128_GCM_SHA256
- Set the environment variables that will be used by PHP to communicate with the database in TLS mode.
for f in /etc/centreon/.env /usr/share/centreon/.env; do
mkdir -p "$(dirname "$f")"
cat >> "$f" <<'EOF'
DATABASE_SSL_ENABLED=1
DATABASE_VERIFY_SERVER_CERT=1
DATABASE_CA_PATH=/etc/ssl/certs/centreon-tls/rootCA.pem
EOF
done
For the web interfaceβ
This section describes how to set up a TLS connection between the remote server and its web interface.
- Alma / RHEL / Oracle Linux 9
- Alma / RHEL / Oracle Linux 10
- Debian 13
- Configure Apache TLS:
dnf install -y mod_ssl
echo 'Listen 443 https' > /etc/httpd/conf.d/ssl.conf
- Enter the correct certificate paths in Centreon's Apache HTTPS configuration:
sed -e 's|/etc/pki/tls/certs/ca.crt|/etc/pki/centreon-tls/web.pem|g' \
-e 's|/etc/pki/tls/private/ca.key|/etc/pki/centreon-tls/web-key.pem|g' \
/usr/share/centreon/examples/centreon-apache-https.conf \
> /etc/httpd/conf.d/00-centreon-tls.conf
- Enable and restart Centreon services:
systemctl daemon-reload
- Configure Apache TLS:
dnf install -y mod_ssl
echo 'Listen 443 https' > /etc/httpd/conf.d/ssl.conf
- Enter the correct certificate paths in Centreon's Apache HTTPS configuration:
sed -e 's|/etc/pki/tls/certs/ca.crt|/etc/pki/centreon-tls/web.pem|g' \
-e 's|/etc/pki/tls/private/ca.key|/etc/pki/centreon-tls/web-key.pem|g' \
/usr/share/centreon/examples/centreon-apache-https.conf \
> /etc/httpd/conf.d/00-centreon-tls.conf
- Enable and restart Centreon services:
systemctl daemon-reload
- MariaDB
- MySQL
systemctl restart mariadb
systemctl restart mysqld
-
Enable every module the official Centreon HTTPS references:
a2enmod ssl proxy proxy_fcgi headers deflate rewrite -
Enter the correct certificate paths in Centreon's Apache HTTPS configuration:
sed -e 's|/etc/pki/tls/certs/ca.crt|/etc/ssl/certs/centreon-tls/web.pem|g' \-e 's|/etc/pki/tls/private/ca.key|/etc/ssl/certs/centreon-tls/web-key.pem|g' \/usr/share/centreon/examples/centreon-apache-https.conf \> /etc/apache2/sites-available/00-centreon-tls.conf -
Enable the configuration you just applied.
a2ensite 00-centreon-tls
Once your web server is set to HTTPS mode, if you have a MAP server on your platform, you must set the
centreon.url=https://<server-address>inside the /etc/centreon-map/map-config.properties file to use HTTPS instead of HTTP. Otherwise recent web browsers may block communication between the two servers. The procedure is detailed here.
- Gorgone API configuration
Replace 127.0.0.1 with the FQDN of your central server in the /etc/centreon-gorgone/config.d/31-centreon-api.yaml file, like in this example:
gorgone:
tpapi:
- name: centreonv2
base_url: "https://centreon7.localdomain/centreon/api/latest/"
username: "centreon-gorgone"
password: "XXXXX"
- name: clapi
username: "centreon-gorgone"
password: "XXXXX"
If you have customized the Centreon URI, replace /centreon with your custom path in the base_url value.
Then restart the Gorgone daemon:
systemctl restart gorgoned
Then check its status:
systemctl status gorgoned
If everything is ok, you should have something like this (example on Debian):
β gorgoned.service - Centreon Gorgone
Loaded: loaded (/usr/lib/systemd/system/gorgoned.service; enabled; preset: enabled)
Active: active (running) since Thu 2026-10-08 09:27:46 UTC; 4h 10min ago
Invocation: 40225788460245609d05c9db103f1ff3
Main PID: 807 (perl)
Tasks: 51 (limit: 4618)
Memory: 176.2M (peak: 241.4M)
CPU: 9.461s
CGroup: /system.slice/gorgoned.service
ββ 807 /usr/bin/perl /usr/bin/gorgoned --config=/etc/centreon-gorgone/config.yaml --logfile=/var/log/centreon-gorgone/gorgoned.log --severity=error
ββ1073 gorgone-proxy
ββ1075 gorgone-proxy
ββ1076 gorgone-proxy
ββ1077 gorgone-proxy
ββ1080 gorgone-proxy
ββ1086 gorgone-engine
ββ1089 gorgone-audit
ββ1097 gorgone-legacycmd
ββ1098 gorgone-httpserver
ββ1100 gorgone-nodes
ββ1107 gorgone-statistics
ββ1108 gorgone-cron
ββ1113 gorgone-anomalydetection
ββ1125 gorgone-autodiscovery
ββ1133 gorgone-action
ββ1137 gorgone-dbcleaner
Oct 08 09:27:46 doc-central systemd[1]: Started gorgoned.service - Centreon Gorgone.
You should see the following line in the Gorgone daemon log file /var/log/centreon-gorgone/gorgoned.log:
2026-10-08 15:58:12 - INFO - [autodiscovery] -class- host discovery - sync started
Step 4: Configurationβ
Server nameβ
If you want to change the server's name, use the following command:
hostnamectl set-hostname new-server-name
Replace new-server-name with the name of your choice. Example:
hostnamectl set-hostname remote1
Service startup during system bootupβ
To make services start automatically during system bootup, run these commands on the remote server:
- Alma / RHEL / Oracle Linux 9
- Alma / RHEL / Oracle Linux 10
- Debian 13
systemctl enable php-fpm httpd centreon cbd centengine gorgoned snmptrapd centreontrapd snmpd
systemctl enable crond
systemctl start crond
systemctl enable php-fpm httpd centreon cbd centengine gorgoned snmptrapd centreontrapd snmpd
systemctl enable crond
systemctl start crond
systemctl enable php8.4-fpm apache2 centreon cbd centengine gorgoned centreontrapd snmpd snmptrapd
Then execute the following command (on the remote server if you are using a local database, or on your dedicated database server):
- MariaDB
- MySQL
systemctl enable mariadb
systemctl restart mariadb
- Alma / RHEL / Oracle Linux 9
- Alma / RHEL / Oracle Linux 10
- Debian 13
systemctl enable mysqld
systemctl restart mysqld
systemctl enable mysqld
systemctl enable mysql
systemctl restart mysql
Step 5: Web installationβ
- Start the Apache server with the following command:
- Alma / RHEL / Oracle Linux 9
- Alma / RHEL / Oracle Linux 10
- Debian 13
systemctl start httpd
systemctl start httpd
systemctl start apache2
- To complete the installation, follow the web installation steps procedure.
During web installation, it is not necessary to install the Autodiscovery module.
In the step Initialization of the monitoring, only actions 6 to 8 need to be done.
Step 6: Register the serverβ
To transform the server into a Remote Server and to register it to the Central server or another Remote server, execute the following command on the future remote server:
/usr/share/centreon/bin/registerServerTopology.sh -u <API_ACCOUNT> \
-t remote -h <IP_TARGET_NODE> -n<REMOTE_SERVER_NAME>
If you are using a custom URI, add it at the end of the command with this format : /custom_uri.
Example (with a custom URI):
/usr/share/centreon/bin/registerServerTopology.sh -u admin -t remote -h 192.168.0.1 -n remote-1 /monitoring
Replace <IP_TARGET_NODE> with the IP of the central server, as seen by the remote server.
The <API_ACCOUNT> must have access to the configuration API. You can use the default admin account.
If you need to change the HTTP method or the port, you can use the following format for the -h option:
HTTPS:/<IP_TARGET_NODE>:PORT
Then follow instructions by
-
Entering your password:
192.168.0.1: please enter your password: -
Select the IP address if multiple network interfaces exist:
Which IP do you want to use as CURRENT NODE IP?1) 192.168.0.22) 192.168.0.31 -
Then validate the information:
Summary of the information that will be sent:API connection:username: adminpassword: ******target server: 192.168.0.1Pending Registration Server:name: remote-1type: remoteaddress: 192.168.0.2Do you want to register this server with the previous information? (y/n)y -
Add additional information to enable future communication between your Remote Server and its Central, fill in the required information to convert your platform into a Remote server:
<CURRENT_NODE_ADDRESS>: Please enter your username:
admin
<CURRENT_NODE_ADDRESS>: Please enter your password:
<CURRENT_NODE_ADDRESS>: Protocol [http]:
<CURRENT_NODE_ADDRESS>: Port [80]:
<CURRENT_NODE_ADDRESS> : centreon root folder [centreon]:
-
If you use a proxy, please define credentials:
Are you using a proxy? (y/n)yenter your proxy Host:myproxy.example.comenter your proxy Port [3128]:Are you using a username/password? (y/n)yenter your username:my_proxy_usernameenter your password:
You will receive the validation of the Centreon central server:
2020-10-16T17:19:37+02:00 [INFO]: The CURRENT NODE 'remote: 'remote-1@192.168.0.2' has been converted and registered successfully.
Main error messagesβ
2020-10-20T10:23:15+02:00 [ERROR]: Invalid credentials
Your credentials are incorrect for the <API_ACCOUNT>.
2020-10-20T10:24:59+02:00 [ERROR]: Access Denied.
The <API_ACCOUNT> doesn't have access to configuration API.
Couldn't connect to 192.168.0.1:444; Connection refused
Unable to access the API. Please check <IP_TARGET_NODE>, scheme and port.
2020-10-20T10:39:30+02:00 [ERROR]: Canβt connect to the API using: https://192.168.0.1:443/centreon/api/latest/login
The access url is incomplete or invalid. Use the --root option to define the API URL Path. For example: --root monitoring.
2020-10-20T10:42:23+02:00 [ERROR]: No route found for βPOST /centreon/api/latest/platform/topologyβ
Your Centreon target version is invalid. It should be greater than or equal to 26.10.
Step 7: Extend local DBMS rightsβ
Finally, add rights for the centreon database user to use LOAD DATA INFILE command:
mariadb -u root -p
GRANT FILE on *.* to 'centreon'@'localhost';
SET GLOBAL local_infile=1;
exit
Step 8: Attach the remote server to the central serverβ
Go to Attach a remote server to a central server.
Step 9: Secure your platformβ
Remember to secure your Centreon platform following our recommendations.