In this guide, we will show you how to install and configure the latest Zabbix version 8.0 with PostgreSQL 18 and TimescaleDB in just five minutes.
Operating System Selection
The guide includes instructions for RHEL platforms version 10, where you may only need to adjust the repositories if necessary. The Debian guide is prepared for version 13, which is currently the latest supported version.
Also select the web server you want to install:
Before we start
For the purposes of this example, we will first switch SELinux to Permissive mode.
If you plan to permanently disable SELinux, you can do so by editing the configuration file. However, we recommend that you consider learning how to work with SELinux and take advantage of its security benefits. For detailed information on how to properly configure and monitor SELinux, see our separate article.
setenforce 0
PostgreSQL Installation
In the first step, we will install the PostgreSQL repositories.
dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-10-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Next, we will install PostgreSQL, in this case, the currently supported version 18.
dnf install -y postgresql18-server
We will initialize the database and configure it to start automatically.
/usr/pgsql-18/bin/postgresql-18-setup initdb
systemctl enable postgresql-18 --now
Installation of Zabbix Server and Its Components
The database is now installed, so we can proceed with installing the Zabbix server and all its components.
First, we will exclude any installation packages related to Zabbix from the EPEL repository, assuming it is installed.
We do this by adding the following line to the end of the /etc/yum.repos.d/epel.repo file:
[epel]
...
excludepkgs=zabbix*
We will add the Zabbix repositories and clear the installation cache.
rpm -Uvh https://repo.zabbix.com/zabbix/8.0/release/rocky/10/noarch/zabbix-release-latest.el10.noarch.rpm
dnf clean all
And we will install all the necessary Zabbix components.
In this case, we will use Zabbix Agent 2 as the primary monitoring agent, which we recommend because it offers significantly more functionality.
dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-apache-conf zabbix-sql-scripts zabbix-agent2 zabbix-web-service wget nano
dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2 zabbix-web-service wget nano
Database Initialization
First, we will create a database user for Zabbix. You will be prompted to set its access password.
cd /tmp
sudo -u postgres createuser --pwprompt zabbix
At this point, we can import the default schema and data. You will again be prompted to enter the password.
Here, use the password from the previous step.
sudo -u postgres createdb -O zabbix zabbix
zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix
Firewall Configuration
Finally, we will allow the ports necessary for the operation of the Zabbix server on the firewall.
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-port=10051/tcp
firewall-cmd --reload
TimescaleDB Installation
TimescaleDB Community Edition is a PostgreSQL extension that also includes features under the Timescale License (TSL), including the historical data compression used by Zabbix. Packages built only under the Apache 2.0 license do not include these features. We therefore use the official TimescaleDB (Tiger Data) repository, which provides Community packages for EL 10 and PostgreSQL 18.
tee /etc/yum.repos.d/timescale_timescaledb.repo <<EOL
[timescale_timescaledb]
name=timescale_timescaledb
baseurl=https://packagecloud.io/timescale/timescaledb/el/$(rpm -E %{rhel})/\$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/timescale/timescaledb/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
EOL
Install TimescaleDB for PostgreSQL 18, its loader and the timescaledb-tools package. This package contains timescaledb-tune, which we will use in the next step to prepare the PostgreSQL configuration for operation with TimescaleDB:
dnf install timescaledb-2-postgresql-18 timescaledb-2-loader-postgresql-18 timescaledb-tools
In this procedure, --max-conns=125 sets the PostgreSQL limit to 125 concurrent connections. This is a starting value for a typical installation; the appropriate limit depends on connections used by Zabbix processes, the frontend and other clients. Leave capacity for database administration as well.
If the available connections are insufficient, PostgreSQL reports messages such as too many clients already or remaining connection slots are reserved; connection errors may also appear in the Zabbix server log. Adjust the limit according to the workload and available memory, then restart PostgreSQL. A higher limit is not automatically better: it increases resource requirements.
The timescaledb-tune utility recommends PostgreSQL settings based on the available memory and CPUs. It adjusts settings such as memory parameters and write behaviour, providing an initial configuration for operation with TimescaleDB.
The wizard finds the PostgreSQL configuration file, creates a backup and also offers to add the timescaledb library to shared_preload_libraries.
Review the proposed changes before accepting suitable values with y. If PostgreSQL shares the server with Zabbix or other applications, leave enough memory for them; automatic recommendations still need to be adapted to the environment.
timescaledb-tune --pg-config /usr/pgsql-18/bin --max-conns=125

Next, restart the PostgreSQL system service:
systemctl restart postgresql-18.service
All that remains is to create and activate TimescaleDB itself:
Note: During development, the path changed from the original /usr/share/zabbix-sql-scripts/postgresql/timescaledb/schema.sql to the new /usr/share/zabbix/sql-scripts/postgresql/timescaledb/schema.sql.
echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix
cat /usr/share/zabbix/sql-scripts/postgresql/timescaledb/schema.sql | sudo -u zabbix psql zabbix
Zabbix Server Configuration
Open the Zabbix server configuration file located at:
nano /etc/zabbix/zabbix_server.conf
Set AllowUnsupportedDBVersions=1 before the first startup. New TimescaleDB versions are often released before Zabbix adds them to its supported range. Without this setting, Zabbix may refuse to start because the version is too new, including after a later TimescaleDB upgrade.
Adjust the following parameters in the configuration file. Set DBPassword to the database user password from the previous step:
...
DBPassword=password
AllowUnsupportedDBVersions=1
StartReportWriters=1
WebServiceURL=http://localhost:10053/report
...
In the next step, we will configure all language packages for the Zabbix frontend:
dnf install glibc-langpack-en glibc-langpack-cs glibc-langpack-sk glibc-langpack-fr glibc-langpack-de glibc-langpack-es glibc-langpack-it glibc-langpack-zh glibc-langpack-pt glibc-langpack-da glibc-langpack-nb glibc-langpack-pl glibc-langpack-tr glibc-langpack-he glibc-langpack-ja glibc-langpack-ko glibc-langpack-ru glibc-langpack-uk glibc-langpack-ca glibc-langpack-ka glibc-langpack-vi glibc-langpack-uz glibc-langpack-lv
For Nginx, open the Zabbix website configuration:
nano /etc/nginx/conf.d/zabbix.conf
In the server block, uncomment and edit the listen and server_name lines as shown. Replace 192.168.0.50 with the actual IP address or DNS name you will use in the browser. This selects Zabbix even when Nginx also has a default welcome page.
listen 80;
server_name 192.168.0.50;
Save the file and check the configuration:
nginx -t
The check must report syntax is ok and test is successful.
Finally, we restart all related services and configure them to start automatically at boot:
systemctl restart zabbix-server zabbix-web-service zabbix-agent2 httpd php-fpm
systemctl enable zabbix-server zabbix-web-service zabbix-agent2 httpd php-fpm
systemctl restart zabbix-server zabbix-web-service zabbix-agent2 nginx php-fpm
systemctl enable zabbix-server zabbix-web-service zabbix-agent2 nginx php-fpm
To verify that the Zabbix server has started correctly, we can, among other things, check its log file:
less /var/log/zabbix/zabbix_server.log
Possible issues: TimescaleDB version
For example, the failure appears in the log as follows:
16402:20261004:104219.739 Unsupported DB! timescaledb version 23002 is newer than 22999
16402:20261004:104219.739 TimescaleDB version is too new. Recommended version is up to TimescaleDB Community Edition 2.29.x.
16402:20261004:104219.742 Zabbix Server stopped. Zabbix 8.0.0rc1 (revision dd0d9c26a3a).
If you skipped AllowUnsupportedDBVersions in the main configuration, or Zabbix will not start after a TimescaleDB upgrade, check the log above. If it reports TimescaleDB version is too new, adjust the settings in /etc/zabbix/zabbix_server.conf:
Open the configuration file:
nano /etc/zabbix/zabbix_server.conf
Set the following parameter:
AllowUnsupportedDBVersions=1
Save the file and restart the Zabbix server:
systemctl restart zabbix-server
Then check /var/log/zabbix/zabbix_server.log again. Allowing an unsupported version addresses this specific startup check; other database errors must be addressed according to their messages.
less /var/log/zabbix/zabbix_server.log
Zabbix Frontend Configuration
In your browser, open the target URL where Zabbix is running, for example, http://192.168.0.50/zabbix. You will be greeted by the initial installation wizard.
In your browser, open the target URL where Zabbix is running, for example, http://192.168.0.50/. You will be greeted by the initial installation wizard. Use the same IP address or DNS name as in server_name.
After selecting the default language, click Next step to proceed to the page that checks the minimum requirements.

If the check is successful, click Next step to proceed to the next page where the database connection settings are configured.

Here, fill in only the Password field for database access; no other changes are necessary.
After entering the password, click Next step again.

On the next page with basic settings, fill in the server name and time zone, then click Next step to proceed to the configuration summary.

In this summary, review all the entered values, and click Next step to complete the installation.

Now, click the Finish button to proceed to the login screen.

After successfully logging in with the previously entered credentials, you can start using the latest Zabbix version 8.0 (Admin/zabbix).

And this is what the initial dashboard of the new Zabbix 8.0 looks like:

Zabbix Reporting Configuration
To ensure fully functional reporting with all its enhancements, we first need to install Google Chrome.
Use the following command to download the installation package and install it:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
dnf localinstall google-chrome-stable_current_x86_64.rpm
In the next step, we will update the “Frontend URL” parameter in the Zabbix frontend to the current valid value. This setting can be found here:
For this installation, use http://192.168.0.50/zabbix; replace the IP address with your Zabbix address.
For this installation, use http://192.168.0.50/; replace the IP address with your Zabbix address.
Administration -> General -> Other
An example of this configuration can be seen in the image below.


Installation of Dependencies
apt install sudo gpg curl wget
PostgreSQL Installation
In the first step, we will install the PostgreSQL repositories and disable the default system PostgreSQL repositories. When prompted with the message:
‘This script will enable the PostgreSQL APT repository on apt.postgresql.org on
your system. The distribution codename used will be trixie-pgdg.’
press Enter to continue and confirm the installation from the official repository.
apt install -y postgresql-common
/usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
Next, we will install PostgreSQL, in this case, the currently supported version 18.
apt -y install postgresql-18
Starting PostgreSQL and configuring it to start automatically at system boot.
systemctl enable postgresql --now
Installation of Zabbix Server and Its Components
The database is now installed, so we can proceed with the installation of the Zabbix server and all its components.
We will add the Zabbix repositories and clear the installation cache.
wget https://repo.zabbix.com/zabbix/8.0/release/debian/pool/main/z/zabbix-release/zabbix-release_latest_8.0+debian13_all.deb
dpkg -i zabbix-release_latest_8.0+debian13_all.deb
apt update
We will install all the necessary Zabbix components.
In this case, we will use Zabbix Agent 2 as the primary monitoring agent, which we recommend because it offers significantly more functionality.
apt install zabbix-server-pgsql zabbix-frontend-php php8.4-pgsql zabbix-apache-conf zabbix-sql-scripts zabbix-agent2 zabbix-web-service
apt install zabbix-server-pgsql zabbix-frontend-php php8.4-pgsql php8.4-fpm zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2 zabbix-web-service
Database Initialization
First, we will create a database user for Zabbix. During the process, we will be prompted to enter its access password. Then, we will create an empty database and set the appropriate permissions for it.
sudo -u postgres createuser --pwprompt zabbix
sudo -u postgres createdb -O zabbix zabbix
At this point, we are ready to import the default schema and data. We will again be prompted to enter the password.
Here, we will use the password from the previous step.
zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix
TimescaleDB Installation
TimescaleDB Community Edition is a PostgreSQL extension that also includes features under the Timescale License (TSL), including the historical data compression used by Zabbix. Packages built only under the Apache 2.0 license do not include these features. We therefore use the official TimescaleDB (Tiger Data) repository, which provides Community packages for Debian 13 and PostgreSQL 18.
echo "deb https://packagecloud.io/timescale/timescaledb/debian/ $(lsb_release -c -s) main" | sudo tee /etc/apt/sources.list.d/timescaledb.list
wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/timescaledb.gpg
Install TimescaleDB for PostgreSQL 18, its loader and the timescaledb-tools package. This package contains timescaledb-tune, which we will use in the next step to prepare the PostgreSQL configuration for operation with TimescaleDB:
apt update
apt install timescaledb-2-postgresql-18 timescaledb-2-loader-postgresql-18 timescaledb-tools
In this procedure, --max-conns=125 sets the PostgreSQL limit to 125 concurrent connections. This is a starting value for a typical installation; the appropriate limit depends on connections used by Zabbix processes, the frontend and other clients. Leave capacity for database administration as well.
If the available connections are insufficient, PostgreSQL reports messages such as too many clients already or remaining connection slots are reserved; connection errors may also appear in the Zabbix server log. Adjust the limit according to the workload and available memory, then restart PostgreSQL. A higher limit is not automatically better: it increases resource requirements.
The timescaledb-tune utility recommends PostgreSQL settings based on the available memory and CPUs. It adjusts settings such as memory parameters and write behaviour, providing an initial configuration for operation with TimescaleDB.
The wizard finds the PostgreSQL configuration file, creates a backup and also offers to add the timescaledb library to shared_preload_libraries.
Review the proposed changes before accepting suitable values with y. If PostgreSQL shares the server with Zabbix or other applications, leave enough memory for them; automatic recommendations still need to be adapted to the environment.
timescaledb-tune --pg-config /usr/bin --max-conns=125

Next, we restart the PostgreSQL system service:
systemctl restart postgresql
All that remains is to create and activate TimescaleDB itself:
The TimescaleDB SQL schema is supplied by the zabbix-sql-scripts package. In Zabbix 8.0 it is located at /usr/share/zabbix/sql-scripts/postgresql/timescaledb/schema.sql.
echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix
cat /usr/share/zabbix/sql-scripts/postgresql/timescaledb/schema.sql | sudo -u zabbix psql zabbix
Zabbix Server Configuration
Open the Zabbix server configuration file located at:
nano /etc/zabbix/zabbix_server.conf
Set AllowUnsupportedDBVersions=1 before the first startup. New TimescaleDB versions are often released before Zabbix adds them to its supported range. Without this setting, Zabbix may refuse to start because the version is too new, including after a later TimescaleDB upgrade.
Adjust the following parameters in the configuration file. Set DBPassword to the database user password from the previous step:
...
DBPassword=password
AllowUnsupportedDBVersions=1
StartReportWriters=1
WebServiceURL=http://localhost:10053/report
...
In the next step, we will configure the language packages for the Zabbix frontend. You can choose only the ones you need or enable all of them.
apt install locales
sed -i '/# en_US.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# en_GB.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# cs_CZ.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# sk_SK.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# fr_FR.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# de_DE.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# es_ES.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# it_IT.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# zh_CN.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# pt_PT.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# pt_BR.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# da_DK.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# nb_NO.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# pl_PL.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# tr_TR.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# he_IL.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# ja_JP.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# ko_KR.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# ru_RU.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# uk_UA.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# ca_ES.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# ka_GE.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# uz_UZ.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sed -i '/# vi_VN UTF-8/s/^# //' /etc/locale.gen
sed -i '/# lv_LV.UTF-8 UTF-8/s/^# //' /etc/locale.gen
locale-gen
For Nginx, open the Zabbix website configuration:
nano /etc/zabbix/nginx.conf
In the server block, uncomment and edit the listen and server_name lines as shown. Replace 192.168.0.50 with the actual IP address or DNS name you will use in the browser. This selects Zabbix even when Nginx also has a default welcome page.
listen 80;
server_name 192.168.0.50;
Save the file and check the configuration:
nginx -t
The check must report syntax is ok and test is successful.
Finally, we will restart all related services and configure them to start automatically at boot:
systemctl restart zabbix-server zabbix-web-service zabbix-agent2 apache2
systemctl enable zabbix-server zabbix-web-service zabbix-agent2 apache2
systemctl restart zabbix-server zabbix-web-service zabbix-agent2 nginx php8.4-fpm
systemctl enable zabbix-server zabbix-web-service zabbix-agent2 nginx php8.4-fpm
To verify that the Zabbix server has started correctly, we can, among other things, check its log file:
less /var/log/zabbix/zabbix_server.log
Possible issues: TimescaleDB version
For example, the failure appears in the log as follows:
16402:20261004:104219.739 Unsupported DB! timescaledb version 23002 is newer than 22999
16402:20261004:104219.739 TimescaleDB version is too new. Recommended version is up to TimescaleDB Community Edition 2.29.x.
16402:20261004:104219.742 Zabbix Server stopped. Zabbix 8.0.0rc1 (revision dd0d9c26a3a).
If you skipped AllowUnsupportedDBVersions in the main configuration, or Zabbix will not start after a TimescaleDB upgrade, check the log above. If it reports TimescaleDB version is too new, adjust the settings in /etc/zabbix/zabbix_server.conf:
Open the configuration file:
nano /etc/zabbix/zabbix_server.conf
Set the following parameter:
AllowUnsupportedDBVersions=1
Save the file and restart the Zabbix server:
systemctl restart zabbix-server
Then check /var/log/zabbix/zabbix_server.log again. Allowing an unsupported version addresses this specific startup check; other database errors must be addressed according to their messages.
less /var/log/zabbix/zabbix_server.log
Zabbix Frontend Configuration
In your browser, open the target URL where Zabbix is running, for example, http://192.168.0.50/zabbix. You will be greeted by the initial installation wizard.
In your browser, open the target URL where Zabbix is running, for example, http://192.168.0.50/. You will be greeted by the initial installation wizard. Use the same IP address or DNS name as in server_name.
After selecting the default language, click Next step to proceed to the page that checks the minimum requirements.

If the check is successful, we can click Next step to proceed to the next page with the database connection settings.

Here, fill in only the Password field for database access; no other changes are necessary.
After entering the password, click Next step again.

On the next page with basic settings, fill in the server name and time zone, then click Next step to proceed to the configuration summary.

In this summary, review all the entered values, and click Next step to complete the installation.

Now, click the Finish button to proceed to the login screen.

After successfully logging in with the previously entered credentials, you can start using the latest Zabbix version 8.0 (Admin/zabbix).

And this is what the initial dashboard of the new Zabbix 8.0 looks like:

Zabbix Reporting Configuration
To ensure fully functional reporting with all its enhancements, we first need to install Google Chrome.
Use the following command to download the installation package and install it:
curl -fSsL https://dl.google.com/linux/linux_signing_key.pub | sudo gpg --dearmor | sudo tee /usr/share/keyrings/google-chrome.gpg >> /dev/null
echo deb [arch=amd64 signed-by=/usr/share/keyrings/google-chrome.gpg] http://dl.google.com/linux/chrome/deb/ stable main | sudo tee /etc/apt/sources.list.d/google-chrome.list
apt update
apt install google-chrome-stable
In the next step, we will update the “Frontend URL” parameter in the Zabbix frontend to the current valid value. This setting can be found here:
For this installation, use http://192.168.0.50/zabbix; replace the IP address with your Zabbix address.
For this installation, use http://192.168.0.50/; replace the IP address with your Zabbix address.
Administration -> General -> Other
An example of this configuration can be seen in the image below.


Finishing Touches
- Verify that the Zabbix server and database server are running correctly and have the correct version.
Support for Item Browser
All the necessary steps can be found in a separate guide on our wiki.
Custom Rebranding
All the necessary steps can be found in a dedicated guide on our wiki.
Give us a Like, share us, or follow us 😍
So you don’t miss anything: