From 1d6a18dc72f8d791ff657677bf280b4b8612fe2f Mon Sep 17 00:00:00 2001
From: Nigel Kukard <nkukard@lbsd.net>
Date: Sat, 8 Jun 2024 09:15:08 +0000
Subject: [PATCH 01/16] chore: use mariadb-admin not msyqladmin

---
 usr/local/share/flexible-docker-containers/init.d/48-zabbix.sh  | 2 +-
 .../flexible-docker-containers/tests.d/48-zabbix-frontend.sh    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/usr/local/share/flexible-docker-containers/init.d/48-zabbix.sh b/usr/local/share/flexible-docker-containers/init.d/48-zabbix.sh
index a6b4441..97fa5f1 100755
--- a/usr/local/share/flexible-docker-containers/init.d/48-zabbix.sh
+++ b/usr/local/share/flexible-docker-containers/init.d/48-zabbix.sh
@@ -423,7 +423,7 @@ if [ "${#database_sql[@]}" -gt 0 ]; then
 
 		while true; do
 			fdc_notice "Zabbix waiting for MySQL server '$MYSQL_HOST'..."
-			if mysqladmin ping --host "$MYSQL_HOST" --user "$MYSQL_USER" --silent --connect-timeout=2; then
+			if mariadb-admin ping --host "$MYSQL_HOST" --user "$MYSQL_USER" --silent --connect-timeout=2; then
 				fdc_notice "MySQL server is UP, continuing"
 				break
 			fi
diff --git a/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-frontend.sh b/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-frontend.sh
index 14fd6a0..900c256 100644
--- a/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-frontend.sh
+++ b/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-frontend.sh
@@ -371,7 +371,7 @@ elif [ "$database_type_zabbix" = "mysql" ]; then
 
 	while true; do
 		fdc_test_progress zabbix-frontend "Zabbix waiting for MySQL server '$MYSQL_HOST'..."
-		if mysqladmin ping --host "$MYSQL_HOST" --user "$MYSQL_USER" --silent --connect-timeout=2; then
+		if mariadb-admin ping --host "$MYSQL_HOST" --user "$MYSQL_USER" --silent --connect-timeout=2; then
 			# Wait for database initialization to complete
 			if echo "SELECT * FROM users;" | mysql -h "$MYSQL_HOST" -u "$MYSQL_USER" "$MYSQL_DATABASE" | grep testuser; then
 				fdc_test_progress zabbix-frontend "MySQL server is UP, continuing"
-- 
GitLab


From c4689e9a3b02e6c86dac9e68e51632d16a596c76 Mon Sep 17 00:00:00 2001
From: Nigel Kukard <nkukard@lbsd.net>
Date: Sat, 8 Jun 2024 22:02:06 +0000
Subject: [PATCH 02/16] chore: removed version from docker-compose files as its
 deprecated

---
 tests/docker-compose.yml.mysql.tmpl       | 2 --
 tests/docker-compose.yml.postgresql.tmpl  | 1 -
 tests/docker-compose.yml.timescaledb.tmpl | 2 +-
 3 files changed, 1 insertion(+), 4 deletions(-)

diff --git a/tests/docker-compose.yml.mysql.tmpl b/tests/docker-compose.yml.mysql.tmpl
index 15a3342..0d2fd90 100644
--- a/tests/docker-compose.yml.mysql.tmpl
+++ b/tests/docker-compose.yml.mysql.tmpl
@@ -19,8 +19,6 @@
 # IN THE SOFTWARE.
 
 
-version: '3.9'
-
 services:
 
 
diff --git a/tests/docker-compose.yml.postgresql.tmpl b/tests/docker-compose.yml.postgresql.tmpl
index 64910e1..8ceaf76 100644
--- a/tests/docker-compose.yml.postgresql.tmpl
+++ b/tests/docker-compose.yml.postgresql.tmpl
@@ -19,7 +19,6 @@
 # IN THE SOFTWARE.
 
 
-version: '3.9'
 
 services:
 
diff --git a/tests/docker-compose.yml.timescaledb.tmpl b/tests/docker-compose.yml.timescaledb.tmpl
index e48cab9..27b82bf 100644
--- a/tests/docker-compose.yml.timescaledb.tmpl
+++ b/tests/docker-compose.yml.timescaledb.tmpl
@@ -19,7 +19,7 @@
 # IN THE SOFTWARE.
 
 
-version: '3.9'
+
 
 services:
 
-- 
GitLab


From def56ddf2573a460dead9075a8136d1adbcb23f7 Mon Sep 17 00:00:00 2001
From: Nigel Kukard <nkukard@lbsd.net>
Date: Sat, 8 Jun 2024 22:02:28 +0000
Subject: [PATCH 03/16] chore: test mysqladmin

---
 .../flexible-docker-containers/tests.d/48-zabbix-frontend.sh    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-frontend.sh b/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-frontend.sh
index 900c256..5a055e2 100644
--- a/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-frontend.sh
+++ b/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-frontend.sh
@@ -371,7 +371,7 @@ elif [ "$database_type_zabbix" = "mysql" ]; then
 
 	while true; do
 		fdc_test_progress zabbix-frontend "Zabbix waiting for MySQL server '$MYSQL_HOST'..."
-		if mariadb-admin ping --host "$MYSQL_HOST" --user "$MYSQL_USER" --silent --connect-timeout=2; then
+		if mariadb-admin ping --host "$MYSQL_HOST" --user "$MYSQL_USER" --connect-timeout=2; then
 			# Wait for database initialization to complete
 			if echo "SELECT * FROM users;" | mysql -h "$MYSQL_HOST" -u "$MYSQL_USER" "$MYSQL_DATABASE" | grep testuser; then
 				fdc_test_progress zabbix-frontend "MySQL server is UP, continuing"
-- 
GitLab


From 944d242b4f4d7cc71039444e2ca0a302eecf7e75 Mon Sep 17 00:00:00 2001
From: Nigel Kukard <nkukard@lbsd.net>
Date: Thu, 13 Jun 2024 23:55:49 +0000
Subject: [PATCH 04/16] chore: move from using mysql to mariadb commands

---
 .../share/flexible-docker-containers/init.d/48-zabbix.sh    | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/usr/local/share/flexible-docker-containers/init.d/48-zabbix.sh b/usr/local/share/flexible-docker-containers/init.d/48-zabbix.sh
index 97fa5f1..a89d4a5 100755
--- a/usr/local/share/flexible-docker-containers/init.d/48-zabbix.sh
+++ b/usr/local/share/flexible-docker-containers/init.d/48-zabbix.sh
@@ -423,7 +423,7 @@ if [ "${#database_sql[@]}" -gt 0 ]; then
 
 		while true; do
 			fdc_notice "Zabbix waiting for MySQL server '$MYSQL_HOST'..."
-			if mariadb-admin ping --host "$MYSQL_HOST" --user "$MYSQL_USER" --silent --connect-timeout=2; then
+			if mariadb-admin ping --silent --skip-ssl --host "$MYSQL_HOST" --user "$MYSQL_USER" --connect-timeout=2; then
 				fdc_notice "MySQL server is UP, continuing"
 				break
 			fi
@@ -431,7 +431,7 @@ if [ "${#database_sql[@]}" -gt 0 ]; then
 		done
 
 		# Check if the domain table exists, if not, create the database
-		if echo "SHOW CREATE TABLE users;" | mysql -h "$MYSQL_HOST" -u "$MYSQL_USER" "$MYSQL_DATABASE" 2>&1 | grep -q "ERROR 1146.*Table.*doesn't exist"; then
+		if echo "SHOW CREATE TABLE users;" | mariadb --silent --skip-ssl -host "$MYSQL_HOST" --user "$MYSQL_USER" "$MYSQL_DATABASE" 2>&1 | grep -q "ERROR 1146.*Table.*doesn't exist"; then
 			fdc_notice "Initializing Zabbix MySQL database"
 			{
 				for i in "${database_sql[@]}"; do
@@ -441,7 +441,7 @@ if [ "${#database_sql[@]}" -gt 0 ]; then
 				if [ -n "$zabbix_admin_password_hashed" ]; then
 					echo "UPDATE users SET username = '$ZABBIX_ADMIN_USERNAME', passwd = '$zabbix_admin_password_hashed' WHERE username = 'Admin';"
 				fi
-			} | mysql -h "$MYSQL_HOST" -u "$MYSQL_USER" "$MYSQL_DATABASE"
+			} | mariadb --silent --skip-ssl --host "$MYSQL_HOST" --user "$MYSQL_USER" "$MYSQL_DATABASE"
 		fi
 
 		unset MYSQL_PWD
-- 
GitLab


From fa1e086cb7152fd5744400f7e0e2c8be2595a50f Mon Sep 17 00:00:00 2001
From: Nigel Kukard <nkukard@lbsd.net>
Date: Thu, 13 Jun 2024 23:56:05 +0000
Subject: [PATCH 05/16] chore: updated to version 7.0.0

---
 Dockerfile                                                    | 3 ++-
 .../flexible-docker-containers/pre-exec-tests.d/48-zabbix.sh  | 2 +-
 .../flexible-docker-containers/tests.d/48-zabbix-frontend.sh  | 4 ++--
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index 8acfc40..d300c4b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -25,7 +25,7 @@ FROM registry.conarx.tech/containers/nginx-php/edge as builder
 # UPDATE timescaledb version in tests/docker-compose.yml.timescaledb.tmpl to the max supported version
 # ref https://hub.docker.com/repository/docker/allworldit/postgresql-timescaledb/tags?page=1&ordering=last_updated
 # ref https://github.com/zabbix/zabbix/blob/6e6aa6c5a866e56648410275a936959a5100712c/include/zbx_dbversion_constants.h#L62
-ENV ZABBIX_VER=6.4.14
+ENV ZABBIX_VER=7.0.0
 
 
 COPY patches /build/patches
@@ -42,6 +42,7 @@ RUN set -eux; \
 		curl-dev \
 		go \
 		libevent-dev \
+		linux-headers \
 		libpq-dev \
 		libssh2-dev \
 		libxml2-dev \
diff --git a/usr/local/share/flexible-docker-containers/pre-exec-tests.d/48-zabbix.sh b/usr/local/share/flexible-docker-containers/pre-exec-tests.d/48-zabbix.sh
index 5fd8384..c7290c0 100644
--- a/usr/local/share/flexible-docker-containers/pre-exec-tests.d/48-zabbix.sh
+++ b/usr/local/share/flexible-docker-containers/pre-exec-tests.d/48-zabbix.sh
@@ -71,7 +71,7 @@ if [ "$ZABBIX_MODE" = "server" ]; then
 			echo "DELETE FROM ids WHERE table_name='interface' AND field_name='interfaceid';"
 			echo "INSERT INTO ids (table_name,field_name,nextid) VALUES ('hosts','hostid',(SELECT MAX(hostid) AS id FROM hosts)+1);"
 			echo "INSERT INTO ids (table_name,field_name,nextid) VALUES ('interface','interfaceid',(SELECT MAX(interfaceid) AS id FROM interface)+1);"
-		) | mysql -h "$MYSQL_HOST" -u "$MYSQL_USER" "$MYSQL_DATABASE"
+		) | mariadb --skip-ssl --host "$MYSQL_HOST" --user "$MYSQL_USER" "$MYSQL_DATABASE"
 
 		unset MYSQL_PWD
 	fi
diff --git a/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-frontend.sh b/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-frontend.sh
index 5a055e2..fa66359 100644
--- a/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-frontend.sh
+++ b/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-frontend.sh
@@ -371,9 +371,9 @@ elif [ "$database_type_zabbix" = "mysql" ]; then
 
 	while true; do
 		fdc_test_progress zabbix-frontend "Zabbix waiting for MySQL server '$MYSQL_HOST'..."
-		if mariadb-admin ping --host "$MYSQL_HOST" --user "$MYSQL_USER" --connect-timeout=2; then
+		if mariadb-admin ping --skip-ssl --host "$MYSQL_HOST" --user "$MYSQL_USER" --connect-timeout=2; then
 			# Wait for database initialization to complete
-			if echo "SELECT * FROM users;" | mysql -h "$MYSQL_HOST" -u "$MYSQL_USER" "$MYSQL_DATABASE" | grep testuser; then
+			if echo "SELECT * FROM users;" | mariadb --skip-ssl --host "$MYSQL_HOST" --user "$MYSQL_USER" "$MYSQL_DATABASE" | grep testuser; then
 				fdc_test_progress zabbix-frontend "MySQL server is UP, continuing"
 				break
 			fi
-- 
GitLab


From 2b155ac232c45e719527c236d8c5f4c51a8ffb2c Mon Sep 17 00:00:00 2001
From: Nigel Kukard <nkukard@lbsd.net>
Date: Tue, 18 Jun 2024 03:31:49 +0000
Subject: [PATCH 06/16] chore: updated to 7.0.0 and improved image

- Moved Zabbix install to /opt/zabbix
- Test all agent active/passive, encrypted/non-encrypted, agent/agent2 combinations
---
 Dockerfile                                    |  33 +-
 .../conf.d/zabbix-agent.conf.disabled         |   4 +-
 .../conf.d/zabbix-agent2.conf.disabled        |   4 +-
 etc/supervisor/conf.d/zabbix-proxy.conf.tmpl  |   4 +-
 etc/supervisor/conf.d/zabbix-server.conf.tmpl |   4 +-
 .../conf.d/zabbix-web-service.conf.disabled   |   4 +-
 tests/docker-compose.yml.mysql.tmpl           | 510 ++++++++++++++++-
 tests/docker-compose.yml.postgresql.tmpl      | 511 +++++++++++++++--
 tests/docker-compose.yml.timescaledb.tmpl     | 514 ++++++++++++++++--
 tests/run-cluster-test                        | 137 ++++-
 .../init.d/48-zabbix.sh                       |   8 +-
 .../pre-exec-tests.d/48-zabbix.sh             |  59 +-
 .../pre-init-tests.d/48-zabbix.sh             |  14 +-
 .../tests.d/48-zabbix-frontend.sh             | 389 ++++++++++---
 14 files changed, 1938 insertions(+), 257 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index d300c4b..e12dc8b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -36,6 +36,7 @@ RUN set -eux; \
 # from https://git.alpinelinux.org/aports/tree/community/zabbix/APKBUILD
 	apk add --no-cache \
 		build-base \
+		wget \
 		autoconf \
 		automake \
 		ccache \
@@ -84,11 +85,11 @@ RUN set -eux; \
 	export AGENT_LDFLAGS="${LDFLAGS}"; \
 	\
 	_configure_flags="--disable-static"; \
-	_configure_flags="$_configure_flags --prefix=/usr/local"; \
+	_configure_flags="$_configure_flags --prefix=/opt/zabbix"; \
 	_configure_flags="$_configure_flags --sysconfdir=/etc/zabbix"; \
 	_configure_flags="$_configure_flags --datadir=/var/lib/zabbix"; \
-	_configure_flags="$_configure_flags --mandir=/usr/local/share/man"; \
-	_configure_flags="$_configure_flags --infodir=/usr/local/share/info"; \
+	_configure_flags="$_configure_flags --mandir=/opt/zabbix/share/man"; \
+	_configure_flags="$_configure_flags --infodir=/opt/zabbix/share/info"; \
 	_configure_flags="$_configure_flags --enable-agent"; \
 	_configure_flags="$_configure_flags --enable-agent2"; \
 	_configure_flags="$_configure_flags --enable-ipv6"; \
@@ -107,7 +108,7 @@ RUN set -eux; \
 	for db in postgresql mysql; do \
 		./configure $_configure_flags --enable-server "--with-$db"; \
 		make clean; \
-		make -j$(nprocs); \
+		make $MAKEFLAGS; \
 		make dbschema; \
 		mv src/zabbix_server/zabbix_server "src/zabbix_server/zabbix_server_$db"; \
 		mkdir -p "../schema/zabbix-server"; \
@@ -118,7 +119,7 @@ RUN set -eux; \
 	for db in postgresql mysql sqlite3; do \
 		./configure $_configure_flags --enable-proxy "--with-$db"; \
 		make clean; \
-		make -j$(nprocs); \
+		make $MAKEFLAGS; \
 		make dbschema; \
 		mv src/zabbix_proxy/zabbix_proxy "src/zabbix_proxy/zabbix_proxy_$db"; \
 		mkdir -p "../schema/zabbix-proxy"; \
@@ -136,11 +137,11 @@ RUN set -eux; \
 	\
 	true "Install Zabbix server"; \
 	for db in postgresql mysql; do \
-		install -Dm755 "src/zabbix_server/zabbix_server_$db" "$pkgdir/usr/local/bin/zabbix_server_$db"; \
-		mkdir -p "$pkgdir/usr/local/share/zabbix-server"; \
-		cp -vr "../schema/zabbix-server/$db" "$pkgdir/usr/local/share/zabbix-server/$db"; \
+		install -Dm755 "src/zabbix_server/zabbix_server_$db" "$pkgdir/opt/zabbix/bin/zabbix_server_$db"; \
+		mkdir -p "$pkgdir/opt/zabbix/share/zabbix-server"; \
+		cp -vr "../schema/zabbix-server/$db" "$pkgdir/opt/zabbix/share/zabbix-server/$db"; \
 	done; \
-	install -Dm755 src/zabbix_get/zabbix_get "$pkgdir/usr/local/bin/zabbix_get"; \
+	install -Dm755 src/zabbix_get/zabbix_get "$pkgdir/opt/zabbix/bin/zabbix_get"; \
 	install -Dm644 conf/zabbix_server.conf "$pkgdir/etc/zabbix/zabbix_server.conf"; \
 	install -dm755 "$pkgdir/etc/zabbix/zabbix_server.conf.d"; \
 	install -dm755 "$pkgdir/var/tmp/zabbix-server"; \
@@ -151,29 +152,29 @@ RUN set -eux; \
 	\
 	true "Install Zabbix proxy"; \
 	for db in postgresql mysql sqlite3; do \
-		install -Dm755 "src/zabbix_proxy/zabbix_proxy_$db" "$pkgdir/usr/local/bin/zabbix_proxy_$db"; \
-		mkdir -p "$pkgdir/usr/local/share/zabbix-proxy"; \
-		cp -vr "../schema/zabbix-proxy/$db" "$pkgdir/usr/local/share/zabbix-proxy/$db"; \
+		install -Dm755 "src/zabbix_proxy/zabbix_proxy_$db" "$pkgdir/opt/zabbix/bin/zabbix_proxy_$db"; \
+		mkdir -p "$pkgdir/opt/zabbix/share/zabbix-proxy"; \
+		cp -vr "../schema/zabbix-proxy/$db" "$pkgdir/opt/zabbix/share/zabbix-proxy/$db"; \
 	done; \
 	install -Dm644 conf/zabbix_proxy.conf "$pkgdir/etc/zabbix/zabbix_proxy.conf"; \
 	install -dm755 "$pkgdir/etc/zabbix/zabbix_proxy.conf.d"; \
 	\
 	\
 	true "Install Zabbix agent"; \
-	install -Dm755 src/zabbix_agent/zabbix_agentd "$pkgdir/usr/local/bin/zabbix_agentd"; \
-	install -Dm755 src/zabbix_sender/zabbix_sender "$pkgdir/usr/local/bin/zabbix_sender"; \
+	install -Dm755 src/zabbix_agent/zabbix_agentd "$pkgdir/opt/zabbix/bin/zabbix_agentd"; \
+	install -Dm755 src/zabbix_sender/zabbix_sender "$pkgdir/opt/zabbix/bin/zabbix_sender"; \
 	install -Dm644 conf/zabbix_agentd.conf "$pkgdir/etc/zabbix/zabbix_agentd.conf"; \
 	install -dm755 "$pkgdir/etc/zabbix/zabbix_agentd.conf.d"; \
 	\
 	\
 	true "Install Zabbix agent2"; \
-	install -Dm755 src/go/bin/zabbix_agent2 "$pkgdir/usr/local/bin/zabbix_agent2"; \
+	install -Dm755 src/go/bin/zabbix_agent2 "$pkgdir/opt/zabbix/bin/zabbix_agent2"; \
 	install -Dm644 src/go/conf/zabbix_agent2.conf "$pkgdir/etc/zabbix/zabbix_agent2.conf"; \
 	install -dm755 "$pkgdir/etc/zabbix/zabbix_agent2.conf.d/plugins.d"; \
 	\
 	\
 	true "Install Zabbix web service"; \
-	install -Dm755 src/go/bin/zabbix_web_service "$pkgdir/usr/local/bin/zabbix_web_service"; \
+	install -Dm755 src/go/bin/zabbix_web_service "$pkgdir/opt/zabbix/bin/zabbix_web_service"; \
 	install -Dm644 src/go/conf/zabbix_web_service.conf "$pkgdir/etc/zabbix/zabbix_web_service.conf"; \
 	\
 	\
diff --git a/etc/supervisor/conf.d/zabbix-agent.conf.disabled b/etc/supervisor/conf.d/zabbix-agent.conf.disabled
index db38b8a..06a67ce 100644
--- a/etc/supervisor/conf.d/zabbix-agent.conf.disabled
+++ b/etc/supervisor/conf.d/zabbix-agent.conf.disabled
@@ -1,5 +1,5 @@
 [program:zabbix-agent]
-command=/usr/local/bin/zabbix_agentd -f
+command=/opt/zabbix/bin/zabbix_agentd -f
 
 user=zabbix-agent
 
@@ -8,7 +8,7 @@ environment=
     LANG=C.UTF-8,
     LANGUAGE=C.UTF-8,
     LC_ALL=C.UTF-8,
-    PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
+    PATH=/usr/local/bin:/usr/local/sbin:/opt/zabbix/bin:/usr/bin:/usr/sbin:/bin:/sbin
 
 stderr_logfile=/dev/stderr
 stderr_logfile_maxbytes=0
diff --git a/etc/supervisor/conf.d/zabbix-agent2.conf.disabled b/etc/supervisor/conf.d/zabbix-agent2.conf.disabled
index 0c66ac6..271dd2e 100644
--- a/etc/supervisor/conf.d/zabbix-agent2.conf.disabled
+++ b/etc/supervisor/conf.d/zabbix-agent2.conf.disabled
@@ -1,5 +1,5 @@
 [program:zabbix-agent2]
-command=/usr/local/bin/zabbix_agent2 -f
+command=/opt/zabbix/bin/zabbix_agent2 -f
 
 user=zabbix-agent2
 
@@ -8,7 +8,7 @@ environment=
     LANG=C.UTF-8,
     LANGUAGE=C.UTF-8,
     LC_ALL=C.UTF-8,
-    PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
+    PATH=/usr/local/bin:/usr/local/sbin:/opt/zabbix/bin:/usr/bin:/usr/sbin:/bin:/sbin
 
 stderr_logfile=/dev/stderr
 stderr_logfile_maxbytes=0
diff --git a/etc/supervisor/conf.d/zabbix-proxy.conf.tmpl b/etc/supervisor/conf.d/zabbix-proxy.conf.tmpl
index 3a7e0e8..5ae3844 100644
--- a/etc/supervisor/conf.d/zabbix-proxy.conf.tmpl
+++ b/etc/supervisor/conf.d/zabbix-proxy.conf.tmpl
@@ -1,5 +1,5 @@
 [program:zabbix-proxy]
-command=/usr/local/bin/zabbix_proxy_@ZABBIX_DB@ -f
+command=/opt/zabbix/bin/zabbix_proxy_@ZABBIX_DB@ -f
 
 user=zabbix-proxy
 
@@ -8,7 +8,7 @@ environment=
     LANG=C.UTF-8,
     LANGUAGE=C.UTF-8,
     LC_ALL=C.UTF-8,
-    PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
+    PATH=/usr/local/bin:/usr/local/sbin:/opt/zabbix/bin:/usr/bin:/usr/sbin:/bin:/sbin
 
 stderr_logfile=/dev/stderr
 stderr_logfile_maxbytes=0
diff --git a/etc/supervisor/conf.d/zabbix-server.conf.tmpl b/etc/supervisor/conf.d/zabbix-server.conf.tmpl
index 4b66bd6..0bd1f22 100644
--- a/etc/supervisor/conf.d/zabbix-server.conf.tmpl
+++ b/etc/supervisor/conf.d/zabbix-server.conf.tmpl
@@ -1,5 +1,5 @@
 [program:zabbix-server]
-command=/usr/local/bin/zabbix_server_@ZABBIX_DB@ -f
+command=/opt/zabbix/bin/zabbix_server_@ZABBIX_DB@ -f
 
 user=zabbix-server
 
@@ -8,7 +8,7 @@ environment=
     LANG=C.UTF-8,
     LANGUAGE=C.UTF-8,
     LC_ALL=C.UTF-8,
-    PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
+    PATH=/usr/local/bin:/usr/local/sbin:/opt/zabbix/bin:/usr/bin:/usr/sbin:/bin:/sbin
 
 stderr_logfile=/dev/stderr
 stderr_logfile_maxbytes=0
diff --git a/etc/supervisor/conf.d/zabbix-web-service.conf.disabled b/etc/supervisor/conf.d/zabbix-web-service.conf.disabled
index 3b81814..0fe4752 100644
--- a/etc/supervisor/conf.d/zabbix-web-service.conf.disabled
+++ b/etc/supervisor/conf.d/zabbix-web-service.conf.disabled
@@ -1,5 +1,5 @@
 [program:zabbix-web-service]
-command=/usr/local/bin/zabbix_web_service -c /etc/zabbix/zabbix_web_service.conf
+command=/opt/zabbix/bin/zabbix_web_service -c /etc/zabbix/zabbix_web_service.conf
 
 user=zabbix-web-service
 
@@ -8,7 +8,7 @@ environment=
     LANG=C.UTF-8,
     LANGUAGE=C.UTF-8,
     LC_ALL=C.UTF-8,
-    PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
+    PATH=/usr/local/bin:/usr/local/sbin:/opt/zabbix/bin:/usr/bin:/usr/sbin:/bin:/sbin
 
 stderr_logfile=/dev/stderr
 stderr_logfile_maxbytes=0
diff --git a/tests/docker-compose.yml.mysql.tmpl b/tests/docker-compose.yml.mysql.tmpl
index 0d2fd90..e5bf7a2 100644
--- a/tests/docker-compose.yml.mysql.tmpl
+++ b/tests/docker-compose.yml.mysql.tmpl
@@ -56,7 +56,6 @@ services:
       - external
 
 
-
   zabbix-webservice:
     image: @@PIPELINE_IMAGE@@
     environment:
@@ -67,75 +66,506 @@ services:
       - external
 
 
+#
+# PROXIES
+#
 
-  zabbix-proxy:
+# ACTIVE PROXIES
+
+  # Zabbix Proxy 1 - Active - Not Encrypted
+  zabbix-proxy1a:
     image: @@PIPELINE_IMAGE@@
     environment:
       - FDC_CI=mysql
       - ZABBIX_MODE=proxy
       - ZABBIX_DATABASE_TYPE=mysql
-      - ZABBIX_HOSTNAME=Zabbix proxy
+      - ZABBIX_HOSTNAME=Zabbix proxy1a
       - ZABBIX_PROXY_MODE=active
       - ZABBIX_SERVER=zabbix-server
-      - MYSQL_HOST=mariadb-proxy
-      - MYSQL_DATABASE=zabbix
-      - MYSQL_USER=zabbix
-      - MYSQL_PASSWORD=zabbix
+      - MYSQL_HOST=mariadb-proxy1a
+      - MYSQL_DATABASE=zabbixproxy1a
+      - MYSQL_USER=zabbixproxy1a
+      - MYSQL_PASSWORD=zabbixproxy1a
     networks:
       - external
 
+# Zabbix Proxy 2 - Active - Encrypted
+  zabbix-proxy2ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=proxy
+      - ZABBIX_DATABASE_TYPE=mysql
+      - ZABBIX_HOSTNAME=Zabbix proxy2ae
+      - ZABBIX_PROXY_MODE=active
+      - ZABBIX_SERVER=zabbix-server
+      - ZABBIX_TLS_PSKIDENTITY=zabbixproxy2ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+      - MYSQL_HOST=mariadb-proxy2ae
+      - MYSQL_DATABASE=zabbixproxy2ae
+      - MYSQL_USER=zabbixproxy2ae
+      - MYSQL_PASSWORD=zabbixproxy2ae
+    networks:
+      - external
+
+
+  # Zabbix Proxy 3 - Passive - Not Encrypted
+  zabbix-proxy3p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=proxy
+      - ZABBIX_DATABASE_TYPE=mysql
+      - ZABBIX_HOSTNAME=Zabbix proxy3p
+      - ZABBIX_PROXY_MODE=passive
+      - ZABBIX_SERVER=zabbix-server
+      - MYSQL_HOST=mariadb-proxy3p
+      - MYSQL_DATABASE=zabbixproxy3p
+      - MYSQL_USER=zabbixproxy3p
+      - MYSQL_PASSWORD=zabbixproxy3p
+    networks:
+      - external
 
 
-  zabbix-proxy2:
+  # Zabbix Proxy 4 - Passive - Encrypted
+  zabbix-proxy4pe:
     image: @@PIPELINE_IMAGE@@
     environment:
       - FDC_CI=mysql
       - ZABBIX_MODE=proxy
       - ZABBIX_DATABASE_TYPE=mysql
-      - ZABBIX_HOSTNAME=Zabbix proxy2
+      - ZABBIX_HOSTNAME=Zabbix proxy4pe
       - ZABBIX_PROXY_MODE=passive
       - ZABBIX_SERVER=zabbix-server
-      - ZABBIX_TLS_PSKIDENTITY=proxytest
+      - ZABBIX_TLS_PSKIDENTITY=zabbixproxy4pe
       - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
-      - MYSQL_HOST=mariadb-proxy2
-      - MYSQL_DATABASE=zabbix2
-      - MYSQL_USER=zabbix2
-      - MYSQL_PASSWORD=zabbix2
+      - MYSQL_HOST=mariadb-proxy4pe
+      - MYSQL_DATABASE=zabbixproxy4pe
+      - MYSQL_USER=zabbixproxy4pe
+      - MYSQL_PASSWORD=zabbixproxy4pe
+    networks:
+      - external
+
+
+#
+# AGENTS
+#
+
+
+  # Active Proxy - Not Encrypted
+
+
+  zabbix-test-agent-via-proxy1a-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy1a-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy1a
     networks:
       - external
 
+  zabbix-test-agent2-via-proxy1a-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy1a-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy1a
+    networks:
+      - external
 
 
-  zabbix-test-agent-via-proxy:
+  zabbix-test-agent-via-proxy1a-ae:
     image: @@PIPELINE_IMAGE@@
     environment:
       - FDC_CI=mysql
       - ZABBIX_MODE=agent
-      - ZABBIX_HOSTNAME=Zabbix test agent via proxy
+      - ZABBIX_HOSTNAME=Test agent proxy1a-ae
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy1a
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy1a-ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy1a-ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy1a-ae
       - ZABBIX_AGENT_MODE=active
-      - ZABBIX_SERVER=zabbix-proxy2
-      - ZABBIX_TLS_PSKIDENTITY=agenttest
+      - ZABBIX_SERVER=zabbix-proxy1a
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy1a-ae
       - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
     networks:
       - external
 
 
+  zabbix-test-agent-via-proxy1a-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy1a-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy1a
+    networks:
+      - external
 
-  zabbix-test-agent2-via-proxy:
+  zabbix-test-agent2-via-proxy1a-p:
     image: @@PIPELINE_IMAGE@@
     environment:
       - FDC_CI=mysql
       - ZABBIX_MODE=agent2
-      - ZABBIX_HOSTNAME=Zabbix test agent2 via proxy
+      - ZABBIX_HOSTNAME=Test agent2 proxy1a-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy1a
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy1a-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy1a-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy1a
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy1a-pe
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy1a-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy1a-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy1a
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy1a-pe
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+
+  # Active Proxy - Encrypted
+
+
+  zabbix-test-agent-via-proxy2ae-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy2ae-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy2ae
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy2ae-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy2ae-a
       - ZABBIX_AGENT_MODE=active
-      - ZABBIX_SERVER=zabbix-proxy2
-      - ZABBIX_TLS_PSKIDENTITY=agent2test
+      - ZABBIX_SERVER=zabbix-proxy2ae
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy2ae-ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy2ae-ae
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy2ae
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy2ae-ae
       - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
     networks:
       - external
 
+  zabbix-test-agent2-via-proxy2ae-ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy2ae-ae
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy2ae
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy2ae-ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy2ae-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy2ae-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy2ae
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy2ae-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy2ae-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy2ae
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy2ae-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy2ae-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy2ae
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy2ae-pe
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy2ae-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy2ae-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy2ae
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy2ae-pe
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+
+  # Passive Proxy - Not Encrypted
 
 
+  zabbix-test-agent-via-proxy3p-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy3p-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy3p
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy3p-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy3p-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy3p
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy3p-ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy3p-ae
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy3p
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy3p-ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy3p-ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy3p-ae
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy3p
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy3p-ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy3p-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy3p-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy3p
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy3p-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy3p-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy3p
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy3p-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy3p-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy3p
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy3p-pe
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy3p-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy3p-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy3p
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy3p-pe
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+
+  # Passive Proxy - Encrypted
+
+
+  zabbix-test-agent-via-proxy4pe-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy4pe-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy4pe
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy4pe-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy4pe-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy4pe
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy4pe-ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy4pe-ae
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy4pe
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy4pe-ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy4pe-ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy4pe-ae
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy4pe
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy4pe-ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy4pe-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy4pe-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy4pe
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy4pe-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy4pe-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy4pe
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy4pe-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy4pe-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy4pe
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy4pe-pe
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy4pe-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=mysql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy4pe-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy4pe
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy4pe-pe
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+
+  # MAIN ZABBIX DATABASE SERVER
+
   mariadb-server:
     image: registry.conarx.tech/containers/mariadb
     environment:
@@ -145,29 +575,49 @@ services:
     networks:
       - external
 
+  # PROXY DATABASE SERVERS
 
-  mariadb-proxy:
+  mariadb-proxy1a:
     image: registry.conarx.tech/containers/mariadb
     environment:
-      - MYSQL_USER=zabbix
-      - MYSQL_PASSWORD=zabbix
-      - MYSQL_DATABASE=zabbix
+      - MYSQL_USER=zabbixproxy1a
+      - MYSQL_PASSWORD=zabbixproxy1a
+      - MYSQL_DATABASE=zabbixproxy1a
     networks:
       - external
 
+  mariadb-proxy2ae:
+    image: registry.conarx.tech/containers/mariadb
+    environment:
+      - MYSQL_USER=zabbixproxy2ae
+      - MYSQL_PASSWORD=zabbixproxy2ae
+      - MYSQL_DATABASE=zabbixproxy2ae
+    networks:
+      - external
 
-  mariadb-proxy2:
+  mariadb-proxy3p:
     image: registry.conarx.tech/containers/mariadb
     environment:
-      - MYSQL_USER=zabbix2
-      - MYSQL_PASSWORD=zabbix2
-      - MYSQL_DATABASE=zabbix2
+      - MYSQL_USER=zabbixproxy3p
+      - MYSQL_PASSWORD=zabbixproxy3p
+      - MYSQL_DATABASE=zabbixproxy3p
     networks:
       - external
 
+  mariadb-proxy4pe:
+    image: registry.conarx.tech/containers/mariadb
+    environment:
+      - MYSQL_USER=zabbixproxy4pe
+      - MYSQL_PASSWORD=zabbixproxy4pe
+      - MYSQL_DATABASE=zabbixproxy4pe
+    networks:
+      - external
 
 
 networks:
   external:
     driver: bridge
     enable_ipv6: true
+    ipam:
+      config:
+        - subnet: 172.16.1.0/26
\ No newline at end of file
diff --git a/tests/docker-compose.yml.postgresql.tmpl b/tests/docker-compose.yml.postgresql.tmpl
index 8ceaf76..b1d7d33 100644
--- a/tests/docker-compose.yml.postgresql.tmpl
+++ b/tests/docker-compose.yml.postgresql.tmpl
@@ -19,7 +19,6 @@
 # IN THE SOFTWARE.
 
 
-
 services:
 
 
@@ -57,7 +56,6 @@ services:
       - external
 
 
-
   zabbix-webservice:
     image: @@PIPELINE_IMAGE@@
     environment:
@@ -68,74 +66,505 @@ services:
       - external
 
 
+#
+# PROXIES
+#
+
+# ACTIVE PROXIES
 
-  zabbix-proxy:
+  # Zabbix Proxy 1 - Active - Not Encrypted
+  zabbix-proxy1a:
     image: @@PIPELINE_IMAGE@@
     environment:
       - FDC_CI=postgresql
       - ZABBIX_MODE=proxy
       - ZABBIX_DATABASE_TYPE=postgresql
-      - ZABBIX_HOSTNAME=Zabbix proxy
+      - ZABBIX_HOSTNAME=Zabbix proxy1a
       - ZABBIX_PROXY_MODE=active
       - ZABBIX_SERVER=zabbix-server
-      - POSTGRES_HOST=postgresql-proxy
-      - POSTGRES_DATABASE=zabbix
-      - POSTGRES_USER=zabbix
-      - POSTGRES_PASSWORD=zabbix
+      - POSTGRES_HOST=postgresql-proxy1a
+      - POSTGRES_DATABASE=zabbixproxy1a
+      - POSTGRES_USER=zabbixproxy1a
+      - POSTGRES_PASSWORD=zabbixproxy1a
+    networks:
+      - external
+
+# Zabbix Proxy 2 - Active - Encrypted
+  zabbix-proxy2ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=proxy
+      - ZABBIX_DATABASE_TYPE=postgresql
+      - ZABBIX_HOSTNAME=Zabbix proxy2ae
+      - ZABBIX_PROXY_MODE=active
+      - ZABBIX_SERVER=zabbix-server
+      - ZABBIX_TLS_PSKIDENTITY=zabbixproxy2ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+      - POSTGRES_HOST=postgresql-proxy2ae
+      - POSTGRES_DATABASE=zabbixproxy2ae
+      - POSTGRES_USER=zabbixproxy2ae
+      - POSTGRES_PASSWORD=zabbixproxy2ae
     networks:
       - external
 
 
+  # Zabbix Proxy 3 - Passive - Not Encrypted
+  zabbix-proxy3p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=proxy
+      - ZABBIX_DATABASE_TYPE=postgresql
+      - ZABBIX_HOSTNAME=Zabbix proxy3p
+      - ZABBIX_PROXY_MODE=passive
+      - ZABBIX_SERVER=zabbix-server
+      - POSTGRES_HOST=postgresql-proxy3p
+      - POSTGRES_DATABASE=zabbixproxy3p
+      - POSTGRES_USER=zabbixproxy3p
+      - POSTGRES_PASSWORD=zabbixproxy3p
+    networks:
+      - external
+
 
-  zabbix-proxy2:
+  # Zabbix Proxy 4 - Passive - Encrypted
+  zabbix-proxy4pe:
     image: @@PIPELINE_IMAGE@@
     environment:
       - FDC_CI=postgresql
       - ZABBIX_MODE=proxy
       - ZABBIX_DATABASE_TYPE=postgresql
-      - ZABBIX_HOSTNAME=Zabbix proxy2
+      - ZABBIX_HOSTNAME=Zabbix proxy4pe
       - ZABBIX_PROXY_MODE=passive
       - ZABBIX_SERVER=zabbix-server
-      - ZABBIX_TLS_PSKIDENTITY=proxytest
+      - ZABBIX_TLS_PSKIDENTITY=zabbixproxy4pe
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+      - POSTGRES_HOST=postgresql-proxy4pe
+      - POSTGRES_DATABASE=zabbixproxy4pe
+      - POSTGRES_USER=zabbixproxy4pe
+      - POSTGRES_PASSWORD=zabbixproxy4pe
+    networks:
+      - external
+
+
+#
+# AGENTS
+#
+
+
+  # Active Proxy - Not Encrypted
+
+
+  zabbix-test-agent-via-proxy1a-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy1a-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy1a
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy1a-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy1a-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy1a
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy1a-ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy1a-ae
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy1a
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy1a-ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy1a-ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy1a-ae
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy1a
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy1a-ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy1a-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy1a-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy1a
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy1a-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy1a-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy1a
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy1a-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy1a-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy1a
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy1a-pe
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy1a-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy1a-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy1a
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy1a-pe
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+
+  # Active Proxy - Encrypted
+
+
+  zabbix-test-agent-via-proxy2ae-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy2ae-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy2ae
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy2ae-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy2ae-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy2ae
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy2ae-ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy2ae-ae
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy2ae
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy2ae-ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy2ae-ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy2ae-ae
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy2ae
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy2ae-ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy2ae-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy2ae-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy2ae
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy2ae-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy2ae-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy2ae
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy2ae-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy2ae-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy2ae
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy2ae-pe
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy2ae-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy2ae-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy2ae
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy2ae-pe
       - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
-      - POSTGRES_HOST=postgresql-proxy2
-      - POSTGRES_DATABASE=zabbix2
-      - POSTGRES_USER=zabbix2
-      - POSTGRES_PASSWORD=zabbix2
     networks:
       - external
 
 
+  # Passive Proxy - Not Encrypted
+
+
+  zabbix-test-agent-via-proxy3p-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy3p-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy3p
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy3p-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy3p-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy3p
+    networks:
+      - external
+
 
-  zabbix-test-agent-via-proxy:
+  zabbix-test-agent-via-proxy3p-ae:
     image: @@PIPELINE_IMAGE@@
     environment:
       - FDC_CI=postgresql
       - ZABBIX_MODE=agent
-      - ZABBIX_HOSTNAME=Zabbix test agent via proxy
+      - ZABBIX_HOSTNAME=Test agent proxy3p-ae
       - ZABBIX_AGENT_MODE=active
-      - ZABBIX_SERVER=zabbix-proxy2
-      - ZABBIX_TLS_PSKIDENTITY=agenttest
+      - ZABBIX_SERVER=zabbix-proxy3p
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy3p-ae
       - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
     networks:
       - external
 
+  zabbix-test-agent2-via-proxy3p-ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy3p-ae
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy3p
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy3p-ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy3p-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy3p-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy3p
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy3p-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy3p-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy3p
+    networks:
+      - external
 
 
-  zabbix-test-agent2-via-proxy:
+  zabbix-test-agent-via-proxy3p-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy3p-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy3p
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy3p-pe
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy3p-pe:
     image: @@PIPELINE_IMAGE@@
     environment:
       - FDC_CI=postgresql
       - ZABBIX_MODE=agent2
-      - ZABBIX_HOSTNAME=Zabbix test agent2 via proxy
+      - ZABBIX_HOSTNAME=Test agent2 proxy3p-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy3p
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy3p-pe
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+
+  # Passive Proxy - Encrypted
+
+
+  zabbix-test-agent-via-proxy4pe-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy4pe-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy4pe
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy4pe-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy4pe-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy4pe
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy4pe-ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy4pe-ae
       - ZABBIX_AGENT_MODE=active
-      - ZABBIX_SERVER=zabbix-proxy2
-      - ZABBIX_TLS_PSKIDENTITY=agent2test
+      - ZABBIX_SERVER=zabbix-proxy4pe
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy4pe-ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy4pe-ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy4pe-ae
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy4pe
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy4pe-ae
       - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
     networks:
       - external
 
 
+  zabbix-test-agent-via-proxy4pe-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy4pe-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy4pe
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy4pe-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy4pe-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy4pe
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy4pe-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy4pe-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy4pe
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy4pe-pe
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy4pe-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy4pe-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy4pe
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy4pe-pe
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+
+  # MAIN ZABBIX DATABASE SERVER
 
   postgresql-server:
     image: registry.conarx.tech/containers/postgresql
@@ -146,29 +575,49 @@ services:
     networks:
       - external
 
+  # PROXY DATABASE SERVERS
 
-  postgresql-proxy:
+  postgresql-proxy1a:
     image: registry.conarx.tech/containers/postgresql
     environment:
-      - POSTGRES_USER=zabbix
-      - POSTGRES_PASSWORD=zabbix
-      - POSTGRES_DATABASE=zabbix
+      - POSTGRES_USER=zabbixproxy1a
+      - POSTGRES_PASSWORD=zabbixproxy1a
+      - POSTGRES_DATABASE=zabbixproxy1a
     networks:
       - external
 
+  postgresql-proxy2ae:
+    image: registry.conarx.tech/containers/postgresql
+    environment:
+      - POSTGRES_USER=zabbixproxy2ae
+      - POSTGRES_PASSWORD=zabbixproxy2ae
+      - POSTGRES_DATABASE=zabbixproxy2ae
+    networks:
+      - external
 
-  postgresql-proxy2:
+  postgresql-proxy3p:
     image: registry.conarx.tech/containers/postgresql
     environment:
-      - POSTGRES_USER=zabbix2
-      - POSTGRES_PASSWORD=zabbix2
-      - POSTGRES_DATABASE=zabbix2
+      - POSTGRES_USER=zabbixproxy3p
+      - POSTGRES_PASSWORD=zabbixproxy3p
+      - POSTGRES_DATABASE=zabbixproxy3p
     networks:
       - external
 
+  postgresql-proxy4pe:
+    image: registry.conarx.tech/containers/postgresql
+    environment:
+      - POSTGRES_USER=zabbixproxy4pe
+      - POSTGRES_PASSWORD=zabbixproxy4pe
+      - POSTGRES_DATABASE=zabbixproxy4pe
+    networks:
+      - external
 
 
 networks:
   external:
     driver: bridge
     enable_ipv6: true
+    ipam:
+      config:
+        - subnet: 172.16.2.0/26
\ No newline at end of file
diff --git a/tests/docker-compose.yml.timescaledb.tmpl b/tests/docker-compose.yml.timescaledb.tmpl
index 27b82bf..7eecc90 100644
--- a/tests/docker-compose.yml.timescaledb.tmpl
+++ b/tests/docker-compose.yml.timescaledb.tmpl
@@ -19,8 +19,6 @@
 # IN THE SOFTWARE.
 
 
-
-
 services:
 
 
@@ -58,7 +56,6 @@ services:
       - external
 
 
-
   zabbix-webservice:
     image: @@PIPELINE_IMAGE@@
     environment:
@@ -69,77 +66,508 @@ services:
       - external
 
 
+#
+# PROXIES
+#
+
+# ACTIVE PROXIES
 
-  zabbix-proxy:
+  # Zabbix Proxy 1 - Active - Not Encrypted
+  zabbix-proxy1a:
     image: @@PIPELINE_IMAGE@@
     environment:
       - FDC_CI=postgresql
       - ZABBIX_MODE=proxy
       - ZABBIX_DATABASE_TYPE=postgresql
-      - ZABBIX_HOSTNAME=Zabbix proxy
+      - ZABBIX_HOSTNAME=Zabbix proxy1a
       - ZABBIX_PROXY_MODE=active
       - ZABBIX_SERVER=zabbix-server
-      - POSTGRES_HOST=postgresql-proxy
-      - POSTGRES_DATABASE=zabbix
-      - POSTGRES_USER=zabbix
-      - POSTGRES_PASSWORD=zabbix
+      - POSTGRES_HOST=postgresql-proxy1a
+      - POSTGRES_DATABASE=zabbixproxy1a
+      - POSTGRES_USER=zabbixproxy1a
+      - POSTGRES_PASSWORD=zabbixproxy1a
+    networks:
+      - external
+
+# Zabbix Proxy 2 - Active - Encrypted
+  zabbix-proxy2ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=proxy
+      - ZABBIX_DATABASE_TYPE=postgresql
+      - ZABBIX_HOSTNAME=Zabbix proxy2ae
+      - ZABBIX_PROXY_MODE=active
+      - ZABBIX_SERVER=zabbix-server
+      - ZABBIX_TLS_PSKIDENTITY=zabbixproxy2ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+      - POSTGRES_HOST=postgresql-proxy2ae
+      - POSTGRES_DATABASE=zabbixproxy2ae
+      - POSTGRES_USER=zabbixproxy2ae
+      - POSTGRES_PASSWORD=zabbixproxy2ae
     networks:
       - external
 
 
+  # Zabbix Proxy 3 - Passive - Not Encrypted
+  zabbix-proxy3p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=proxy
+      - ZABBIX_DATABASE_TYPE=postgresql
+      - ZABBIX_HOSTNAME=Zabbix proxy3p
+      - ZABBIX_PROXY_MODE=passive
+      - ZABBIX_SERVER=zabbix-server
+      - POSTGRES_HOST=postgresql-proxy3p
+      - POSTGRES_DATABASE=zabbixproxy3p
+      - POSTGRES_USER=zabbixproxy3p
+      - POSTGRES_PASSWORD=zabbixproxy3p
+    networks:
+      - external
 
-  zabbix-proxy2:
+
+  # Zabbix Proxy 4 - Passive - Encrypted
+  zabbix-proxy4pe:
     image: @@PIPELINE_IMAGE@@
     environment:
       - FDC_CI=postgresql
       - ZABBIX_MODE=proxy
       - ZABBIX_DATABASE_TYPE=postgresql
-      - ZABBIX_HOSTNAME=Zabbix proxy2
+      - ZABBIX_HOSTNAME=Zabbix proxy4pe
       - ZABBIX_PROXY_MODE=passive
       - ZABBIX_SERVER=zabbix-server
-      - ZABBIX_TLS_PSKIDENTITY=proxytest
+      - ZABBIX_TLS_PSKIDENTITY=zabbixproxy4pe
       - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
-      - POSTGRES_HOST=postgresql-proxy2
-      - POSTGRES_DATABASE=zabbix2
-      - POSTGRES_USER=zabbix2
-      - POSTGRES_PASSWORD=zabbix2
+      - POSTGRES_HOST=postgresql-proxy4pe
+      - POSTGRES_DATABASE=zabbixproxy4pe
+      - POSTGRES_USER=zabbixproxy4pe
+      - POSTGRES_PASSWORD=zabbixproxy4pe
+    networks:
+      - external
+
+
+#
+# AGENTS
+#
+
+
+  # Active Proxy - Not Encrypted
+
+
+  zabbix-test-agent-via-proxy1a-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy1a-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy1a
     networks:
       - external
 
+  zabbix-test-agent2-via-proxy1a-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy1a-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy1a
+    networks:
+      - external
 
 
-  zabbix-test-agent-via-proxy:
+  zabbix-test-agent-via-proxy1a-ae:
     image: @@PIPELINE_IMAGE@@
     environment:
       - FDC_CI=postgresql
       - ZABBIX_MODE=agent
-      - ZABBIX_HOSTNAME=Zabbix test agent via proxy
+      - ZABBIX_HOSTNAME=Test agent proxy1a-ae
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy1a
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy1a-ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy1a-ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy1a-ae
       - ZABBIX_AGENT_MODE=active
-      - ZABBIX_SERVER=zabbix-proxy2
-      - ZABBIX_TLS_PSKIDENTITY=agenttest
+      - ZABBIX_SERVER=zabbix-proxy1a
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy1a-ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy1a-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy1a-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy1a
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy1a-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy1a-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy1a
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy1a-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy1a-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy1a
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy1a-pe
       - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
     networks:
       - external
 
+  zabbix-test-agent2-via-proxy1a-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy1a-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy1a
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy1a-pe
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+
+  # Active Proxy - Encrypted
+
+
+  zabbix-test-agent-via-proxy2ae-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy2ae-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy2ae
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy2ae-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy2ae-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy2ae
+    networks:
+      - external
+
 
+  zabbix-test-agent-via-proxy2ae-ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy2ae-ae
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy2ae
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy2ae-ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
 
-  zabbix-test-agent2-via-proxy:
+  zabbix-test-agent2-via-proxy2ae-ae:
     image: @@PIPELINE_IMAGE@@
     environment:
       - FDC_CI=postgresql
       - ZABBIX_MODE=agent2
-      - ZABBIX_HOSTNAME=Zabbix test agent2 via proxy
+      - ZABBIX_HOSTNAME=Test agent2 proxy2ae-ae
       - ZABBIX_AGENT_MODE=active
-      - ZABBIX_SERVER=zabbix-proxy2
-      - ZABBIX_TLS_PSKIDENTITY=agent2test
+      - ZABBIX_SERVER=zabbix-proxy2ae
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy2ae-ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy2ae-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy2ae-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy2ae
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy2ae-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy2ae-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy2ae
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy2ae-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy2ae-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy2ae
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy2ae-pe
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy2ae-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy2ae-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy2ae
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy2ae-pe
       - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
     networks:
       - external
 
 
+  # Passive Proxy - Not Encrypted
+
+
+  zabbix-test-agent-via-proxy3p-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy3p-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy3p
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy3p-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy3p-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy3p
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy3p-ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy3p-ae
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy3p
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy3p-ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy3p-ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy3p-ae
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy3p
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy3p-ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy3p-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy3p-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy3p
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy3p-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy3p-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy3p
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy3p-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy3p-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy3p
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy3p-pe
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy3p-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy3p-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy3p
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy3p-pe
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+
+  # Passive Proxy - Encrypted
+
+
+  zabbix-test-agent-via-proxy4pe-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy4pe-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy4pe
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy4pe-a:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy4pe-a
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy4pe
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy4pe-ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy4pe-ae
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy4pe
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy4pe-ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy4pe-ae:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy4pe-ae
+      - ZABBIX_AGENT_MODE=active
+      - ZABBIX_SERVER=zabbix-proxy4pe
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy4pe-ae
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy4pe-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy4pe-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy4pe
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy4pe-p:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy4pe-p
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy4pe
+    networks:
+      - external
+
+
+  zabbix-test-agent-via-proxy4pe-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent
+      - ZABBIX_HOSTNAME=Test agent proxy4pe-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy4pe
+      - ZABBIX_TLS_PSKIDENTITY=agentproxy4pe-pe
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+  zabbix-test-agent2-via-proxy4pe-pe:
+    image: @@PIPELINE_IMAGE@@
+    environment:
+      - FDC_CI=postgresql
+      - ZABBIX_MODE=agent2
+      - ZABBIX_HOSTNAME=Test agent2 proxy4pe-pe
+      - ZABBIX_AGENT_MODE=passive
+      - ZABBIX_SERVER=zabbix-proxy4pe
+      - ZABBIX_TLS_PSKIDENTITY=agent2proxy4pe-pe
+      - ZABBIX_TLS_PSKKEY=01234567890abcdef01234567890abcdef
+    networks:
+      - external
+
+
+  # MAIN ZABBIX DATABASE SERVER
 
   postgresql-server:
-    image: registry.conarx.tech/containers/postgresql-timescaledb/2.11.2
+    image: registry.conarx.tech/containers/postgresql-timescaledb/3.19:pg16-2.14.2
     environment:
       - POSTGRES_USER=zabbix
       - POSTGRES_PASSWORD=zabbix
@@ -147,29 +575,49 @@ services:
     networks:
       - external
 
+  # PROXY DATABASE SERVERS
 
-  postgresql-proxy:
+  postgresql-proxy1a:
     image: registry.conarx.tech/containers/postgresql
     environment:
-      - POSTGRES_USER=zabbix
-      - POSTGRES_PASSWORD=zabbix
-      - POSTGRES_DATABASE=zabbix
+      - POSTGRES_USER=zabbixproxy1a
+      - POSTGRES_PASSWORD=zabbixproxy1a
+      - POSTGRES_DATABASE=zabbixproxy1a
     networks:
       - external
 
+  postgresql-proxy2ae:
+    image: registry.conarx.tech/containers/postgresql
+    environment:
+      - POSTGRES_USER=zabbixproxy2ae
+      - POSTGRES_PASSWORD=zabbixproxy2ae
+      - POSTGRES_DATABASE=zabbixproxy2ae
+    networks:
+      - external
 
-  postgresql-proxy2:
+  postgresql-proxy3p:
     image: registry.conarx.tech/containers/postgresql
     environment:
-      - POSTGRES_USER=zabbix2
-      - POSTGRES_PASSWORD=zabbix2
-      - POSTGRES_DATABASE=zabbix2
+      - POSTGRES_USER=zabbixproxy3p
+      - POSTGRES_PASSWORD=zabbixproxy3p
+      - POSTGRES_DATABASE=zabbixproxy3p
     networks:
       - external
 
+  postgresql-proxy4pe:
+    image: registry.conarx.tech/containers/postgresql
+    environment:
+      - POSTGRES_USER=zabbixproxy4pe
+      - POSTGRES_PASSWORD=zabbixproxy4pe
+      - POSTGRES_DATABASE=zabbixproxy4pe
+    networks:
+      - external
 
 
 networks:
   external:
     driver: bridge
     enable_ipv6: true
+    ipam:
+      config:
+        - subnet: 172.16.3.0/26
\ No newline at end of file
diff --git a/tests/run-cluster-test b/tests/run-cluster-test
index d5d0a19..47ce5f6 100755
--- a/tests/run-cluster-test
+++ b/tests/run-cluster-test
@@ -27,7 +27,7 @@ check_tests() {
 	while [ "$i" -gt 0 ]; do
 		i=$((i-1))
 
-		echo "INFO: Waiting for Zabbix tests to pass... ${i}s"
+		echo "INFO: Waiting for Zabbix tests to pass [$service]... ${i}s"
 
 		if docker-compose exec "$service" test -e /PASSED_ZABBIX; then
 			echo "PASSED:   - Tests passed for $service"
@@ -37,6 +37,7 @@ check_tests() {
 	done
 
 	if [ "$i" = 0 ]; then
+		echo "FAILED:   - Tests failed for $service"
 		return 1
 	fi
 
@@ -48,7 +49,7 @@ check_tests() {
 echo "NOTICE: Starting Zabbix tests"
 
 # Run in background so we can see the output
-docker-compose up --remove-orphans &
+docker-compose up --remove-orphans --renew-anon-volumes --force-recreate &
 
 # This is run within a very minimal environment, we don't have access to using for i in {180..0} or for ((xxxxxx))
 TESTS_PASSED=yes
@@ -58,18 +59,142 @@ fi
 if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-webservice; then
 	TESTS_PASSED=
 fi
-if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-proxy; then
+
+
+# Encrypted agent via active non-encrypted proxy1a
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-proxy1a; then
+	TESTS_PASSED=
+fi
+
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent-via-proxy1a-a; then
+	TESTS_PASSED=
+fi
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent2-via-proxy1a-a; then
+	TESTS_PASSED=
+fi
+
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent-via-proxy1a-ae; then
+	TESTS_PASSED=
+fi
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent2-via-proxy1a-ae; then
+	TESTS_PASSED=
+fi
+
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent-via-proxy1a-p; then
+	TESTS_PASSED=
+fi
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent2-via-proxy1a-p; then
+	TESTS_PASSED=
+fi
+
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent-via-proxy1a-pe; then
+	TESTS_PASSED=
+fi
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent2-via-proxy1a-pe; then
+	TESTS_PASSED=
+fi
+
+# Encrypted agent via active non-encrypted proxy2ae
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-proxy2ae; then
+	TESTS_PASSED=
+fi
+
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent-via-proxy2ae-a; then
+	TESTS_PASSED=
+fi
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent2-via-proxy2ae-a; then
+	TESTS_PASSED=
+fi
+
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent-via-proxy2ae-ae; then
+	TESTS_PASSED=
+fi
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent2-via-proxy2ae-ae; then
+	TESTS_PASSED=
+fi
+
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent-via-proxy2ae-p; then
+	TESTS_PASSED=
+fi
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent2-via-proxy2ae-p; then
+	TESTS_PASSED=
+fi
+
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent-via-proxy2ae-pe; then
+	TESTS_PASSED=
+fi
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent2-via-proxy2ae-pe; then
+	TESTS_PASSED=
+fi
+
+
+# Encrypted agent via active non-encrypted proxy3p
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-proxy3p; then
+	TESTS_PASSED=
+fi
+
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent-via-proxy3p-a; then
+	TESTS_PASSED=
+fi
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent2-via-proxy3p-a; then
+	TESTS_PASSED=
+fi
+
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent-via-proxy3p-ae; then
+	TESTS_PASSED=
+fi
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent2-via-proxy3p-ae; then
+	TESTS_PASSED=
+fi
+
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent-via-proxy3p-p; then
+	TESTS_PASSED=
+fi
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent2-via-proxy3p-p; then
+	TESTS_PASSED=
+fi
+
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent-via-proxy3p-pe; then
+	TESTS_PASSED=
+fi
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent2-via-proxy3p-pe; then
+	TESTS_PASSED=
+fi
+
+# Encrypted agent via active non-encrypted proxy4pe
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-proxy4pe; then
+	TESTS_PASSED=
+fi
+
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent-via-proxy4pe-a; then
+	TESTS_PASSED=
+fi
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent2-via-proxy4pe-a; then
 	TESTS_PASSED=
 fi
-if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-proxy2; then
+
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent-via-proxy4pe-ae; then
+	TESTS_PASSED=
+fi
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent2-via-proxy4pe-ae; then
 	TESTS_PASSED=
 fi
-if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent-via-proxy; then
+
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent-via-proxy4pe-p; then
 	TESTS_PASSED=
 fi
-if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent2-via-proxy; then
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent2-via-proxy4pe-p; then
 	TESTS_PASSED=
 fi
+
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent-via-proxy4pe-pe; then
+	TESTS_PASSED=
+fi
+if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-test-agent2-via-proxy4pe-pe; then
+	TESTS_PASSED=
+fi
+
+
 if [ -n "$TESTS_PASSED" ] && ! check_tests zabbix-frontend; then
 	TESTS_PASSED=
 fi
diff --git a/usr/local/share/flexible-docker-containers/init.d/48-zabbix.sh b/usr/local/share/flexible-docker-containers/init.d/48-zabbix.sh
index a89d4a5..b3b4c57 100755
--- a/usr/local/share/flexible-docker-containers/init.d/48-zabbix.sh
+++ b/usr/local/share/flexible-docker-containers/init.d/48-zabbix.sh
@@ -404,7 +404,7 @@ if [ "${#database_sql[@]}" -gt 0 ]; then
 			# Normal PostgreSQL
 			for i in "${database_sql[@]}"; do
 				fdc_notice "Loading SQL '$i' into Zabbix PostgreSQL database"
-				psql -h "$POSTGRES_HOST" -U "$POSTGRES_USER" -w "$POSTGRES_DATABASE" -v ON_ERROR_STOP=ON 2>&1 < "/usr/local/share/$daemon/$database_type_zabbix/$i.sql"
+				psql -h "$POSTGRES_HOST" -U "$POSTGRES_USER" -w "$POSTGRES_DATABASE" -v ON_ERROR_STOP=ON 2>&1 < "/opt/zabbix/share/$daemon/$database_type_zabbix/$i.sql"
 			done
 			# Check if we're updating the admin user details
 			if [ -n "$zabbix_admin_password_hashed" ]; then
@@ -431,17 +431,17 @@ if [ "${#database_sql[@]}" -gt 0 ]; then
 		done
 
 		# Check if the domain table exists, if not, create the database
-		if echo "SHOW CREATE TABLE users;" | mariadb --silent --skip-ssl -host "$MYSQL_HOST" --user "$MYSQL_USER" "$MYSQL_DATABASE" 2>&1 | grep -q "ERROR 1146.*Table.*doesn't exist"; then
+		if echo "SHOW CREATE TABLE users;" | mariadb --skip-ssl --host "$MYSQL_HOST" --user "$MYSQL_USER" "$MYSQL_DATABASE" 2>&1 | grep -q "ERROR 1146.*Table.*doesn't exist"; then
 			fdc_notice "Initializing Zabbix MySQL database"
 			{
 				for i in "${database_sql[@]}"; do
-					cat "/usr/local/share/$daemon/$database_type_zabbix/$i.sql"
+					cat "/opt/zabbix/share/$daemon/$database_type_zabbix/$i.sql"
 				done
 				# Check if we're updating the admin user details
 				if [ -n "$zabbix_admin_password_hashed" ]; then
 					echo "UPDATE users SET username = '$ZABBIX_ADMIN_USERNAME', passwd = '$zabbix_admin_password_hashed' WHERE username = 'Admin';"
 				fi
-			} | mariadb --silent --skip-ssl --host "$MYSQL_HOST" --user "$MYSQL_USER" "$MYSQL_DATABASE"
+			} | mariadb --skip-ssl --host "$MYSQL_HOST" --user "$MYSQL_USER" "$MYSQL_DATABASE"
 		fi
 
 		unset MYSQL_PWD
diff --git a/usr/local/share/flexible-docker-containers/pre-exec-tests.d/48-zabbix.sh b/usr/local/share/flexible-docker-containers/pre-exec-tests.d/48-zabbix.sh
index c7290c0..cffe781 100644
--- a/usr/local/share/flexible-docker-containers/pre-exec-tests.d/48-zabbix.sh
+++ b/usr/local/share/flexible-docker-containers/pre-exec-tests.d/48-zabbix.sh
@@ -19,61 +19,4 @@
 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 # IN THE SOFTWARE.
 
-
-if [ "$ZABBIX_MODE" = "server" ]; then
-
-	# shellcheck disable=SC2154
-	if [ "$database_type_zabbix" = "postgresql" ]; then
-		export PGPASSWORD="$POSTGRES_PASSWORD"
-
-		fdc_notice "Adding Zabbix proxy configuration"
-		(
-			echo "DELETE FROM ids WHERE table_name='hosts' AND field_name='hostid';"
-			echo "DELETE FROM ids WHERE table_name='interface' AND field_name='interfaceid';"
-			echo "INSERT INTO ids (table_name,field_name,nextid) VALUES ('hosts','hostid',(SELECT MAX(hostid) AS id FROM hosts)+1);"
-			echo "INSERT INTO ids (table_name,field_name,nextid) VALUES ('interface','interfaceid',(SELECT MAX(interfaceid) AS id FROM interface)+1);"
-
-			echo "INSERT INTO hosts (hostid,host,description,proxy_address,status,tls_accept,tls_connect) VALUES ((SELECT nextid FROM ids WHERE table_name = 'hosts' AND field_name = 'hostid')+1,'Zabbix proxy','Zabbix proxy','zabbix-proxy',5,1,1);"
-
-			echo "INSERT INTO hosts (hostid,host,description,status,tls_accept,tls_connect,tls_psk_identity,tls_psk) VALUES ((SELECT nextid FROM ids WHERE table_name = 'hosts' AND field_name = 'hostid')+2,'Zabbix proxy2','Zabbix proxy2',6,1,2,'proxytest','01234567890abcdef01234567890abcdef');"
-			echo "INSERT INTO interface (interfaceid,hostid,main,type,useip,dns,port) VALUES ((SELECT nextid FROM ids WHERE table_name = 'interface' AND field_name = 'interfaceid')+1,(SELECT nextid FROM ids WHERE table_name = 'hosts' AND field_name = 'hostid')+2,1,0,0,'zabbix-proxy2',10051);"
-
-			echo "INSERT INTO host_rtdata (hostid) VALUES ((SELECT hostid FROM hosts WHERE host = 'Zabbix proxy'));"
-			echo "INSERT INTO host_rtdata (hostid) VALUES ((SELECT hostid FROM hosts WHERE host = 'Zabbix proxy2'));"
-
-			echo "DELETE FROM ids WHERE table_name='hosts' AND field_name='hostid';"
-			echo "DELETE FROM ids WHERE table_name='interface' AND field_name='interfaceid';"
-			echo "INSERT INTO ids (table_name,field_name,nextid) VALUES ('hosts','hostid',(SELECT MAX(hostid) AS id FROM hosts)+1);"
-			echo "INSERT INTO ids (table_name,field_name,nextid) VALUES ('interface','interfaceid',(SELECT MAX(interfaceid) AS id FROM interface)+1);"
-		) | psql -h "$POSTGRES_HOST" -U "$POSTGRES_USER" -w "$POSTGRES_DATABASE" -q -v ON_ERROR_STOP=ON
-
-		unset PGPASSWORD
-
-	elif [ "$database_type_zabbix" = "mysql" ]; then
-		export MYSQL_PWD="$MYSQL_PASSWORD"
-
-		fdc_notice "Adding Zabbix proxy configuration"
-		(
-			echo "DELETE FROM ids WHERE table_name='hosts' AND field_name='hostid';"
-			echo "DELETE FROM ids WHERE table_name='interface' AND field_name='interfaceid';"
-			echo "INSERT INTO ids (table_name,field_name,nextid) VALUES ('hosts','hostid',(SELECT MAX(hostid) AS id FROM hosts)+1);"
-			echo "INSERT INTO ids (table_name,field_name,nextid) VALUES ('interface','interfaceid',(SELECT MAX(interfaceid) AS id FROM interface)+1);"
-
-			echo "INSERT INTO hosts (hostid,host,description,proxy_address,status,tls_accept,tls_connect) VALUES ((SELECT nextid FROM ids WHERE table_name = 'hosts' AND field_name = 'hostid')+1,'Zabbix proxy','Zabbix proxy','zabbix-proxy',5,1,1);"
-
-			echo "INSERT INTO hosts (hostid,host,description,status,tls_accept,tls_connect,tls_psk_identity,tls_psk) VALUES ((SELECT nextid FROM ids WHERE table_name = 'hosts' AND field_name = 'hostid')+2,'Zabbix proxy2','Zabbix proxy2',6,1,2,'proxytest','01234567890abcdef01234567890abcdef');"
-			echo "INSERT INTO interface (interfaceid,hostid,main,type,useip,dns,port) VALUES ((SELECT nextid FROM ids WHERE table_name = 'interface' AND field_name = 'interfaceid')+1,(SELECT nextid FROM ids WHERE table_name = 'hosts' AND field_name = 'hostid')+2,1,0,0,'zabbix-proxy2',10051);"
-
-			echo "INSERT INTO host_rtdata (hostid) VALUES ((SELECT hostid FROM hosts WHERE host = 'Zabbix proxy'));"
-			echo "INSERT INTO host_rtdata (hostid) VALUES ((SELECT hostid FROM hosts WHERE host = 'Zabbix proxy2'));"
-
-			echo "DELETE FROM ids WHERE table_name='hosts' AND field_name='hostid';"
-			echo "DELETE FROM ids WHERE table_name='interface' AND field_name='interfaceid';"
-			echo "INSERT INTO ids (table_name,field_name,nextid) VALUES ('hosts','hostid',(SELECT MAX(hostid) AS id FROM hosts)+1);"
-			echo "INSERT INTO ids (table_name,field_name,nextid) VALUES ('interface','interfaceid',(SELECT MAX(interfaceid) AS id FROM interface)+1);"
-		) | mariadb --skip-ssl --host "$MYSQL_HOST" --user "$MYSQL_USER" "$MYSQL_DATABASE"
-
-		unset MYSQL_PWD
-	fi
-
-fi
+# NK: Proxy setup moved to frontend test of API
diff --git a/usr/local/share/flexible-docker-containers/pre-init-tests.d/48-zabbix.sh b/usr/local/share/flexible-docker-containers/pre-init-tests.d/48-zabbix.sh
index 63df866..5ce6f92 100644
--- a/usr/local/share/flexible-docker-containers/pre-init-tests.d/48-zabbix.sh
+++ b/usr/local/share/flexible-docker-containers/pre-init-tests.d/48-zabbix.sh
@@ -24,7 +24,19 @@ export ZABBIX_ADMIN_USERNAME=testuser
 export ZABBIX_ADMIN_PASSWORD=testpassword
 
 
-if [ "$ZABBIX_MODE" = "frontend" ]; then
+if [ "$ZABBIX_MODE" = "server" ]; then
+#    echo "DebugLevel=3" >> /etc/zabbix/zabbix_server.conf.d/99-tests.conf
+    echo "CacheUpdateFrequency=1" >> /etc/zabbix/zabbix_server.conf.d/99-tests.conf
+
+elif [ "$ZABBIX_MODE" = "proxy" ]; then
+#    echo "DebugLevel=3" >> /etc/zabbix/zabbix_proxy.conf.d/99-tests.conf
+    true
+
+elif [ "$ZABBIX_MODE" = "agent" ]; then
+#    echo "DebugLevel=5" >> /etc/zabbix/zabbix_agentd.conf.d/99-tests.conf
+    true
+
+elif [ "$ZABBIX_MODE" = "frontend" ]; then
     cat << EOF > /etc/nginx/http.d/99-fdc-ci.conf
 # The CI/CD runner is sometimes slow, so we allow some more time for requests
 proxy_read_timeout 900s;
diff --git a/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-frontend.sh b/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-frontend.sh
index fa66359..d4d3e4c 100644
--- a/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-frontend.sh
+++ b/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-frontend.sh
@@ -61,8 +61,8 @@ function zabbix_api_call() {
 function test_zabbix_frontend() {
 	ipv=$1
 
-	fdc_test_start zabbix-frontend "Testing frontend API using IPv$ipv"
-	fdc_test_progress zabbix-frontend "Getting API bearer token using IPv$ipv"
+	fdc_test_start zabbix-frontend:frontend "Testing frontend API using IPv$ipv"
+	fdc_test_progress zabbix-frontend:frontend "Getting API bearer token using IPv$ipv"
 	for i in {5..0}; do
 		# Grab API bearer token
 		api_result=$(
@@ -83,26 +83,26 @@ function test_zabbix_frontend() {
 		fi
 		bearer_token=$(echo "$api_result" | jq .result | sed -e 's/"//g')
 		if [ -z "$bearer_token" ]; then
-			fdc_test_fail zabbix-frontend "Failed to get API bearer token using IPv$ipv"
+			fdc_test_fail zabbix-frontend:frontend "Failed to get API bearer token using IPv$ipv"
 			cat output.log
 			false
 		fi
 		if [ "$bearer_token" != "null" ]; then
-			fdc_test_progress zabbix-frontend "Got API bearer token using IPv$ipv"
+			fdc_test_progress zabbix-frontend:frontend "Got API bearer token using IPv$ipv"
 			break
 		fi
-		fdc_test_progress zabbix-frontend "Waiting for bearer token from API using IPv$ipv ($i)..."
+		fdc_test_progress zabbix-frontend:frontend "Waiting for bearer token from API using IPv$ipv ($i)..."
 		sleep 1
 	done
 	# NK: a value of 0 means timeout
 	if [ "$i" = "0" ]; then
-		fdc_test_fail zabbix-frontend "Timeout while getting API bearer token"
+		fdc_test_fail zabbix-frontend:frontend "Timeout while getting API bearer token"
 		cat output.log
 		false
 	fi
 	echo "API RESULT GET TOKEN: $api_result => $bearer_token"
 
-	fdc_test_progress zabbix-frontend "Getting hostid via API using IPv$ipv"
+	fdc_test_progress zabbix-frontend:frontend "Getting hostid via API using IPv$ipv"
 	api_result=$(
 		zabbix_api_call "$bearer_token" \
 			'{"jsonrpc":"2.0","method":"host.get","params":{"filter":{"host":["'"$ZABBIX_SERVER_AGENT_NAME"'"]}},"id":1}' \
@@ -110,13 +110,13 @@ function test_zabbix_frontend() {
 	)
 	hostid=$(echo "$api_result" | jq ".result[0].hostid" | sed -e 's/"//g')
 	if [ -z "$hostid" ]; then
-		fdc_test_fail zabbix-frontend "Failed to get hostid via API using IPv$ipv"
+		fdc_test_fail zabbix-frontend:frontend "Failed to get hostid via API using IPv$ipv"
 		cat output.log
 		false
 	fi
 
-	fdc_test_progress zabbix-frontend "Waiting for agent item 'system.uptime' to update via API using IPv$ipv"
-	last_value=""
+	fdc_test_progress zabbix-frontend:frontend "Waiting for agent item 'system.uptime' to update via API using IPv$ipv"
+	last_value="0"
 	for i in {240..0}; do
 		api_result=$(
 			zabbix_api_call "$bearer_token" \
@@ -128,55 +128,173 @@ function test_zabbix_frontend() {
 
 		# If last value is set and we have a new value, then break
 		if [ -n "$last_value" ] && [ "$last_value" != "$value" ]; then
-			fdc_test_progress zabbix-frontend "Got last agent item 'system.uptime' value $last_value via IPv$ipv with current value $value ... OK"
+			fdc_test_progress zabbix-frontend:frontend "Got last agent item 'system.uptime' value $last_value via IPv$ipv with current value $value ... OK"
 			break
 		fi
 		if [ -n "$value" ]; then
 			last_value=$value
 		fi
-		fdc_test_progress zabbix-frontend "Waiting for agent item 'system.uptime' value to change using IPv$ipv ($i)..."
+		fdc_test_progress zabbix-frontend:frontend "Waiting for agent item 'system.uptime' value to change using IPv$ipv ($i)..."
 		sleep 1
 	done
 	# NK: a value of 0 means timeout
 	if [ "$i" = "0" ]; then
-		fdc_test_fail zabbix-frontend "Timeout while waiting for agent item 'system.uptime'"
+		fdc_test_fail zabbix-frontend:frontend "Timeout while waiting for agent item 'system.uptime'"
 		cat output.log
 		false
 	fi
-	fdc_test_pass zabbix-frontend "API test of data from agent passed using IPv$ipv"
+	fdc_test_pass zabbix-frontend:frontend "API test of data from agent passed using IPv$ipv"
+
+}
 
 
 
-	fdc_test_progress zabbix-frontend "Waiting for proxy server 'lastacess' via API using IPv$ipv"
-	last_value=""
+function test_zabbix_proxy() {
+	proxy_hostname=$1
+	proxy_name=$2
+	proxy_mode=$3
+	proxy_psk_identity=$4
+	proxy_psk_key=$5
+
+
+	fdc_test_start zabbix-frontend:proxy "Creating $proxy_hostname using frontend API"
+	fdc_test_progress zabbix-frontend:proxy "Getting API bearer token for $proxy_hostname"
+	for i in {3..0}; do
+		# Grab API bearer token
+		api_result=$(
+			curl --max-time 300 --fail \
+				--trace-ascii output.log \
+				--header "Content-Type: application/json-rpc" \
+				--data '{"jsonrpc":"2.0","method":"user.login","params":{"username":"'"$ZABBIX_ADMIN_USERNAME"'","password":"'"$ZABBIX_ADMIN_PASSWORD"'"},"id":1}' \
+				"http://localhost/api_jsonrpc.php" \
+				|| :
+		)
+
+		{
+			echo "TEST_ZABBIX_FRONTEND STATUS ($i):"
+			cat output.log
+		} >&2
+
+		if [ -z "$api_result" ]; then
+			sleep 1
+			continue
+		fi
+
+		bearer_token=$(echo "$api_result" | jq .result | sed -e 's/"//g')
+		if [ -z "$bearer_token" ]; then
+			fdc_test_fail zabbix-frontend:proxy "Failed to get API bearer token for $proxy_hostname"
+			cat output.log
+			false
+		fi
+		if [ "$bearer_token" != "null" ]; then
+			fdc_test_progress zabbix-frontend:proxy "Got API bearer token for $proxy_hostname"
+			break
+		fi
+		fdc_test_progress zabbix-frontend:proxy "Waiting for bearer token from API for $proxy_hostname ($i)..."
+		sleep 1
+	done
+	# NK: a value of 0 means timeout
+	if [ "$i" = "0" ]; then
+		fdc_test_fail zabbix-frontend:proxy "Timeout while getting API bearer token for $proxy_hostname"
+		cat output.log
+		false
+	fi
+	echo "API RESULT GET TOKEN FOR AGENT VIA PROXY: $api_result => $bearer_token"
+
+	# Handle active configuration
+	if [ "$proxy_mode" = "active" ]; then
+		fdc_test_progress zabbix-frontend:agent "Proxy $proxy_hostname is ACTIVE"
+		if [ -n "$proxy_psk_key" ] && [ -n "$proxy_psk_identity" ]; then
+			fdc_test_progress zabbix-frontend:agent "Proxy $proxy_hostname is ENCRYPTED"
+			address="127.0.0.1"
+			allowed_access="$proxy_hostname"
+			tls_connect=1
+			tls_accept=2
+			operating_mode=0
+		else
+			fdc_test_progress zabbix-frontend:agent "Proxy $proxy_hostname is NOT ENCRYPTED"
+			address="127.0.0.1"
+			allowed_access="$proxy_hostname"
+			tls_connect=1
+			tls_accept=1
+			operating_mode=0
+		fi
+	# Handle passive configuration
+	elif [ "$proxy_mode" = "passive" ]; then
+		fdc_test_progress zabbix-frontend:agent "Proxy $proxy_hostname is PASSIVE"
+		if [ -n "$proxy_psk_key" ] && [ -n "$proxy_psk_identity" ]; then
+			fdc_test_progress zabbix-frontend:agent "Proxy $proxy_hostname is ENCRYPTED"
+			address="$proxy_hostname"
+			allowed_access=""
+			tls_connect=2
+			tls_accept=1
+			operating_mode=1
+		else
+			fdc_test_progress zabbix-frontend:agent "Proxy $proxy_hostname is NOT ENCRYPTED"
+			address="$proxy_hostname"
+			allowed_access=""
+			tls_accept=1
+			tls_connect=1
+			operating_mode=1
+		fi
+	else
+		fdc_test_fail zabbix-frontend:proxy "Invalid proxy mode $proxy_mode for $proxy_hostname"
+		false
+	fi
+
+	fdc_test_progress zabbix-frontend:proxy "Setting up proxy $proxy_hostname"
+	api_result=$(
+		zabbix_api_call "$bearer_token" \
+			'{"jsonrpc":"2.0","method":"proxy.create","params":{"name":"'"$proxy_name"'","address":"'"$address"'","proxy_groupid":0,"allowed_addresses":"'"$allowed_access"'","operating_mode":'"$operating_mode"',"tls_accept":'"$tls_accept"',"tls_connect":'"$tls_connect"',"tls_psk_identity":"'"$proxy_psk_identity"'","tls_psk":"'"$proxy_psk_key"'"},"id":1}'
+	)
+	proxyid1=$(echo "$api_result" | jq ".result.proxyids[0]" | sed -e 's/"//g')
+	if [ -z "$proxyid1" ]; then
+		fdc_test_fail zabbix-frontend:proxy "Failed to create new proxy $proxy_hostname"
+		cat output.log
+		false
+	fi
+
+
+	fdc_test_progress zabbix-frontend:proxy "Getting proxyid via API for $proxy_hostname"
+	api_result=$(
+		zabbix_api_call "$bearer_token" \
+			'{"jsonrpc":"2.0","method":"proxy.get","params":{"filter":{"name":"'"$proxy_name"'"}},"id":1}'
+	)
+	proxyid2=$(echo "$api_result" | jq ".result[0].proxyid" | sed -e 's/"//g')
+	if [ -z "$proxyid2" ]; then
+		fdc_test_fail zabbix-frontend:proxy "Failed to get proxyid via API for $proxy_hostname"
+		cat output.log
+		false
+	fi
+
+
+	fdc_test_progress zabbix-frontend:proxy "Waiting for proxy item 'last_access' to update via API for $proxy_hostname"
+	last_value="0"
 	for i in {240..0}; do
 		api_result=$(
 			zabbix_api_call "$bearer_token" \
-				'{"jsonrpc":"2.0","method":"proxy.get","params":{"output":"extend","filter":{"host":"Zabbix proxy"}},"id":1}' \
-				"--ipv$ipv"
+				'{"jsonrpc":"2.0","method":"proxy.get","params":{"output":"extend","proxyids":'"$proxyid1"'},"id":1}'
 		)
-
 		value=$(echo "$api_result" | jq ".result[0].lastaccess" | sed -e 's/"//g')
 
 		# If last value is set and we have a new value, then break
 		if [ -n "$last_value" ] && [ "$last_value" != "$value" ]; then
-			fdc_test_progress zabbix-frontend "Got last proxy access value $last_value via IPv$ipv with current value $value ... OK"
+			fdc_test_progress zabbix-frontend:proxy "Got last proxy item 'last_access' value $last_value with current value $value for $proxy_hostname ... OK"
 			break
 		fi
 		if [ -n "$value" ]; then
 			last_value=$value
 		fi
-		fdc_test_progress zabbix-frontend "Waiting for last proxy access value to change ($i) using IPv$ipv..."
+		fdc_test_progress zabbix-frontend:proxy "Waiting for proxy item 'last_access' value to change for $proxy_hostname ($i)..."
 		sleep 1
 	done
 	# NK: a value of 0 means timeout
 	if [ "$i" = "0" ]; then
-		fdc_test_fail zabbix-frontend "Timeout while waiting for proxy last access using IPv$ipv"
+		fdc_test_fail zabbix-frontend:proxy "Timeout while waiting for proxy item 'last_access' for $proxy_hostname"
 		cat output.log
 		false
 	fi
-	fdc_test_pass zabbix-frontend "API test of proxy data from agent passed using IPv$ipv"
-
+	fdc_test_pass zabbix-frontend:proxy "API test of data from agent passed for $proxy_hostname"
 }
 
 
@@ -184,11 +302,51 @@ function test_zabbix_frontend() {
 function test_zabbix_agent() {
 	agent_hostname=$1
 	agent_name=$2
-	agent_psk_identity=$3
-	agent_psk_key=$4
+	agent_mode=$3
+	agent_psk_identity=$4
+	agent_psk_key=$5
+	agent_proxy=$6
+
+
+	# Handle active configuration
+	if [ "$agent_mode" = "active" ]; then
+		fdc_test_progress zabbix-frontend:agent "Agent $agent_hostname is ACTIVE"
+		if [ -n "$agent_psk_key" ] && [ -n "$agent_psk_identity" ]; then
+			fdc_test_progress zabbix-frontend:agent "Agent $agent_hostname is ENCRYPTED"
+			tls_connect=1
+			tls_accept=2
+			operating_mode=0
+		else
+			fdc_test_progress zabbix-frontend:agent "Agent $agent_hostname is NOT ENCRYPTED"
+			tls_connect=1
+			tls_accept=1
+			operating_mode=0
+		fi
+		agent_template="Linux by Zabbix agent active"
+	# Handle passive configuration
+	elif [ "$agent_mode" = "passive" ]; then
+		fdc_test_progress zabbix-frontend:agent "Agent $agent_hostname is PASSIVE"
+		if [ -n "$agent_psk_key" ] && [ -n "$agent_psk_identity" ]; then
+			fdc_test_progress zabbix-frontend:agent "Agent $agent_hostname is ENCRYPTED"
+			tls_connect=2
+			tls_accept=1
+			operating_mode=1
+		else
+			fdc_test_progress zabbix-frontend:agent "Agent $agent_hostname is NOT ENCRYPTED"
+			tls_accept=1
+			tls_connect=1
+			operating_mode=1
+		fi
+		agent_template="Linux by Zabbix agent"
+	else
+		fdc_test_fail zabbix-frontend:proxy "Invalid proxy mode $agent_mode for $agent_hostname"
+		false
+	fi
 
-	fdc_test_start zabbix-frontend "Creating $agent_hostname using frontend API"
-	fdc_test_progress zabbix-frontend "Getting API bearer token for $agent_hostname"
+
+
+	fdc_test_start zabbix-frontend:agent "Creating $agent_hostname using frontend API"
+	fdc_test_progress zabbix-frontend:agent "Getting API bearer token for $agent_hostname"
 	for i in {3..0}; do
 		# Grab API bearer token
 		api_result=$(
@@ -212,20 +370,20 @@ function test_zabbix_agent() {
 
 		bearer_token=$(echo "$api_result" | jq .result | sed -e 's/"//g')
 		if [ -z "$bearer_token" ]; then
-			fdc_test_fail zabbix-frontend "Failed to get API bearer token for $agent_hostname"
+			fdc_test_fail zabbix-frontend:agent "Failed to get API bearer token for $agent_hostname"
 			cat output.log
 			false
 		fi
 		if [ "$bearer_token" != "null" ]; then
-			fdc_test_progress zabbix-frontend "Got API bearer token for $agent_hostname"
+			fdc_test_progress zabbix-frontend:agent "Got API bearer token for $agent_hostname"
 			break
 		fi
-		fdc_test_progress zabbix-frontend "Waiting for bearer token from API for $agent_hostname ($i)..."
+		fdc_test_progress zabbix-frontend:agent "Waiting for bearer token from API for $agent_hostname ($i)..."
 		sleep 1
 	done
 	# NK: a value of 0 means timeout
 	if [ "$i" = "0" ]; then
-		fdc_test_fail zabbix-frontend "Timeout while getting API bearer token for $agent_hostname"
+		fdc_test_fail zabbix-frontend:agent "Timeout while getting API bearer token for $agent_hostname"
 		cat output.log
 		false
 	fi
@@ -233,7 +391,7 @@ function test_zabbix_agent() {
 
 
 
-	fdc_test_progress zabbix-frontend "Getting hostgroup via API for $agent_hostname"
+	fdc_test_progress zabbix-frontend:agent "Getting hostgroup via API for $agent_hostname"
 	api_result=$(
 		zabbix_api_call "$bearer_token" \
 			'{"jsonrpc":"2.0","method":"hostgroup.get","params":{"output":"extend","filter":{"name":["Virtual machines"]}},"id":1}'
@@ -241,75 +399,78 @@ function test_zabbix_agent() {
 	hostgroupid=$(echo "$api_result" | jq ".result[0].groupid" | sed -e 's/"//g')
 
 	if [ -z "$hostgroupid" ] || [ "$hostgroupid" = "null" ]; then
-		fdc_test_fail zabbix-frontend "Failed to get hostgroup via API for $agent_hostname"
+		fdc_test_fail zabbix-frontend:agent "Failed to get hostgroup via API for $agent_hostname"
 		cat output.log
 		false
 	fi
 
-	fdc_test_pass zabbix-frontend "Got hostgroup from API for $agent_hostname"
+	fdc_test_pass zabbix-frontend:agent "Got hostgroup from API for $agent_hostname"
 
 
 
-	fdc_test_progress zabbix-frontend "Getting template via API for $agent_hostname"
+	fdc_test_progress zabbix-frontend:agent "Getting template via API for $agent_hostname"
 	api_result=$(
 		zabbix_api_call "$bearer_token" \
-			'{"jsonrpc":"2.0","method":"template.get","params":{"output":"extend","filter":{"name":["Linux by Zabbix agent active"]}},"id":1}'
+			'{"jsonrpc":"2.0","method":"template.get","params":{"output":"extend","filter":{"name":["'"$agent_template"'"]}},"id":1}'
 	)
 	templateid=$(echo "$api_result" | jq ".result[0].templateid" | sed -e 's/"//g')
 
 	if [ -z "$templateid" ] || [ "$templateid" = "null" ]; then
-		fdc_test_fail zabbix-frontend "Failed to get template via API for $agent_hostname"
+		fdc_test_fail zabbix-frontend:agent "Failed to get template via API for $agent_hostname"
 		cat output.log
 		false
 	fi
 
-	fdc_test_pass zabbix-frontend "Got template from API for $agent_hostname"
-
+	fdc_test_pass zabbix-frontend:agent "Got template from API for $agent_hostname"
 
-	# shellcheck disable=SC2154
-	fdc_test_progress zabbix-frontend "Getting proxy via API for $agent_hostnamey"
-	api_result=$(
-		zabbix_api_call "$bearer_token" \
-			'{"jsonrpc":"2.0","method":"proxy.get","params":{"output":"extend","filter":{"host":"Zabbix proxy2"}},"id":1}'
-	)
-	proxyid=$(echo "$api_result" | jq ".result[0].proxyid" | sed -e 's/"//g')
+	proxy_monitoring=""
+	if [ -n "$agent_proxy" ]; then
+		# shellcheck disable=SC2154
+		fdc_test_progress zabbix-frontend:agent "Getting proxy via API for $agent_hostnamey"
+		api_result=$(
+			zabbix_api_call "$bearer_token" \
+				'{"jsonrpc":"2.0","method":"proxy.get","params":{"output":"extend","filter":{"name":"'"$agent_proxy"'"}},"id":1}'
+		)
+		proxyid=$(echo "$api_result" | jq ".result[0].proxyid" | sed -e 's/"//g')
 
-	if [ -z "$proxyid" ] || [ "$proxyid" = "null" ]; then
-		fdc_test_fail zabbix-frontend "Failed to get proxy via API for $agent_hostname"
-		cat output.log
-		false
+		if [ -z "$proxyid" ] || [ "$proxyid" = "null" ]; then
+			fdc_test_fail zabbix-frontend:agent "Failed to get proxy via API for $agent_hostname"
+			cat output.log
+			false
+		fi
+		# 0 - server, 1 - proxy, 2 - proxy group
+		proxy_monitoring=',"monitored_by":1,"proxyid":'"$proxyid"
+		fdc_test_pass zabbix-frontend:agent "Got proxy from API for $agent_hostname"
 	fi
 
-	fdc_test_pass zabbix-frontend "Got proxy from API for $agent_hostname"
-
 
-	fdc_test_progress zabbix-frontend "Setting up $agent_hostname"
+	fdc_test_progress zabbix-frontend:agent "Setting up $agent_hostname"
 	api_result=$(
 		zabbix_api_call "$bearer_token" \
-			'{"jsonrpc":"2.0","method":"host.create","params":{"host":"'"$agent_name"'","interfaces":[{"main":1,"type":1,"useip":0,"dns":"'"$agent_hostname"'","ip":"127.0.0.1","port":"10051"}],"proxy_hostid":"'"$proxyid"'","groups":[{"groupid":"'"$hostgroupid"'"}],"tls_accept":2,"tls_connect":2,"tls_psk_identity":"'"$agent_psk_identity"'","tls_psk":"'"$agent_psk_key"'","templates":{"templateid":"'"$templateid"'"}},"id":1}'
+			'{"jsonrpc":"2.0","method":"host.create","params":{"host":"'"$agent_name"'","interfaces":[{"main":1,"type":1,"useip":0,"dns":"'"$agent_hostname"'","ip":"127.0.0.1","port":"10050"}]'"$proxy_monitoring"',"groups":[{"groupid":"'"$hostgroupid"'"}],"tls_accept":'"$tls_accept"',"tls_connect":'"$tls_connect"',"tls_psk_identity":"'"$agent_psk_identity"'","tls_psk":"'"$agent_psk_key"'","templates":{"templateid":"'"$templateid"'"}},"id":1}'
 	)
 	hostid=$(echo "$api_result" | jq ".result.hostids[0]" | sed -e 's/"//g')
 	if [ -z "$hostid" ]; then
-		fdc_test_fail zabbix-frontend "Failed to create new agent $agent_hostname"
+		fdc_test_fail zabbix-frontend:agent "Failed to create new agent $agent_hostname"
 		cat output.log
 		false
 	fi
 
 
 
-	fdc_test_progress zabbix-frontend "Getting hostid via API for $agent_hostname"
+	fdc_test_progress zabbix-frontend:agent "Getting hostid via API for $agent_hostname"
 	api_result=$(
 		zabbix_api_call "$bearer_token" \
 			'{"jsonrpc":"2.0","method":"host.get","params":{"filter":{"host":["'"$agent_name"'"]}},"id":1}'
 	)
 	hostid=$(echo "$api_result" | jq ".result[0].hostid" | sed -e 's/"//g')
 	if [ -z "$hostid" ]; then
-		fdc_test_fail zabbix-frontend "Failed to get hostid via API for $agent_hostname"
+		fdc_test_fail zabbix-frontend:agent "Failed to get hostid via API for $agent_hostname"
 		cat output.log
 		false
 	fi
 
-	fdc_test_progress zabbix-frontend "Waiting for agent item 'system.uptime' to update via API for $agent_hostname"
+	fdc_test_progress zabbix-frontend:agent "Waiting for agent item 'system.uptime' to update via API for $agent_hostname"
 	last_value=""
 	for i in {240..0}; do
 		api_result=$(
@@ -320,22 +481,22 @@ function test_zabbix_agent() {
 
 		# If last value is set and we have a new value, then break
 		if [ -n "$last_value" ] && [ "$last_value" != "$value" ]; then
-			fdc_test_progress zabbix-frontend "Got last agent item 'system.uptime' value $last_value with current value $value for $agent_hostname ... OK"
+			fdc_test_progress zabbix-frontend:agent "Got last agent item 'system.uptime' value $last_value with current value $value for $agent_hostname ... OK"
 			break
 		fi
 		if [ -n "$value" ]; then
 			last_value=$value
 		fi
-		fdc_test_progress zabbix-frontend "Waiting for agent item 'system.uptime' value to change for $agent_hostname ($i)..."
+		fdc_test_progress zabbix-frontend:agent "Waiting for agent item 'system.uptime' value to change for $agent_hostname ($i)..."
 		sleep 1
 	done
 	# NK: a value of 0 means timeout
 	if [ "$i" = "0" ]; then
-		fdc_test_fail zabbix-frontend "Timeout while waiting for agent item 'system.uptime' for $agent_hostname"
+		fdc_test_fail zabbix-frontend:agent "Timeout while waiting for agent item 'system.uptime' for $agent_hostname"
 		cat output.log
 		false
 	fi
-	fdc_test_pass zabbix-frontend "API test of data from agent passed for $agent_hostname"
+	fdc_test_pass zabbix-frontend:agent "API test of data from agent passed for $agent_hostname"
 }
 
 
@@ -356,7 +517,7 @@ if [ "$database_type_zabbix" = "postgresql" ]; then
 			userlist=$(echo "SELECT * FROM users;" | psql -h "$POSTGRES_HOST" -U "$POSTGRES_USER" -w "$POSTGRES_DATABASE" -v ON_ERROR_STOP=ON 2>&1)
 			echo "$userlist" 2>&1
 			# Wait for database initialization to complete
-			if echo "SELECT * FROM users;" | psql -h "$POSTGRES_HOST" -U "$POSTGRES_USER" -w "$POSTGRES_DATABASE" -v ON_ERROR_STOP=ON | grep testuser; then
+			if echo "SELECT * FROM users;" | psql -h "$POSTGRES_HOST" -U "$POSTGRES_USER" -w "$POSTGRES_DATABASE" -v ON_ERROR_STOP=ON | grep -q testuser; then
 				fdc_test_progress zabbix-frontend "PostgreSQL server is UP, continuing"
 				break
 			fi
@@ -393,9 +554,101 @@ if [ -n "$(ip -6 route show default)" ]; then
 	test_zabbix_frontend 6
 fi
 
-# Add additional agent via proxy and test result
-test_zabbix_agent zabbix-test-agent-via-proxy "Zabbix test agent via proxy" "agenttest" "01234567890abcdef01234567890abcdef"
-test_zabbix_agent zabbix-test-agent2-via-proxy "Zabbix test agent2 via proxy" "agent2test" "01234567890abcdef01234567890abcdef"
 
-fdc_test_pass zabbix-frontend "Zabbix frontend tests passed"
+#
+# PROXIES
+#
+
+# a - represents active
+# p - represents passive
+# e - represents encrypted
+#  <proxy hostname> <proxy name> <proxy mode> <proxy PSK identity> <proxy PSK key>
 
+# ACTIVE PROXY
+
+# - Not Encrypted
+test_zabbix_proxy zabbix-proxy1a "Zabbix proxy1a" active "" ""
+# - Encrypted
+test_zabbix_proxy zabbix-proxy2ae "Zabbix proxy2ae" active "zabbixproxy2ae" "01234567890abcdef01234567890abcdef"
+
+# PASSIVE PROXY
+
+# - Not Encrypted
+test_zabbix_proxy zabbix-proxy3p "Zabbix proxy3p" passive "" ""
+# - Encrypted
+test_zabbix_proxy zabbix-proxy4pe "Zabbix proxy4pe" passive "zabbixproxy4pe" "01234567890abcdef01234567890abcdef"
+
+
+#
+# AGENTS
+#
+
+# a - represents active
+# p - represents passive
+# e - represents encrypted
+#  <agent hostname> <agent name> <agent mode> <agent PSK identity> <agent PSK key> <proxy name>
+
+
+# ACTIVE PROXY
+
+# Active Proxy - Not Encrypted
+# - Active Agent - Not Encrypted
+test_zabbix_agent zabbix-test-agent-via-proxy1a-a "Test agent proxy1a-a" active "" "" "Zabbix proxy1a"
+test_zabbix_agent zabbix-test-agent2-via-proxy1a-a "Test agent2 proxy1a-a" active "" "" "Zabbix proxy1a"
+# - Active Agent - Encrypted
+test_zabbix_agent zabbix-test-agent-via-proxy1a-ae "Test agent proxy1a-ae" active "agentproxy1a-ae" "01234567890abcdef01234567890abcdef" "Zabbix proxy1a"
+test_zabbix_agent zabbix-test-agent2-via-proxy1a-ae "Test agent2 proxy1a-ae" active "agent2proxy1a-ae" "01234567890abcdef01234567890abcdef" "Zabbix proxy1a"
+# - Passive Agent - Not Encrypted
+test_zabbix_agent zabbix-test-agent-via-proxy1a-p "Test agent proxy1a-p" passive "" "" "Zabbix proxy1a"
+test_zabbix_agent zabbix-test-agent2-via-proxy1a-p "Test agent2 proxy1a-p" passive "" "" "Zabbix proxy1a"
+# - Passive Agent - Encrypted
+test_zabbix_agent zabbix-test-agent-via-proxy1a-pe "Test agent proxy1a-pe" passive "agentproxy1a-pe" "01234567890abcdef01234567890abcdef" "Zabbix proxy1a"
+test_zabbix_agent zabbix-test-agent2-via-proxy1a-pe "Test agent2 proxy1a-pe" passive "agent2proxy1a-pe" "01234567890abcdef01234567890abcdef" "Zabbix proxy1a"
+
+# Active Proxy - Encrypted
+# - Active Agent - Not Encrypted
+test_zabbix_agent zabbix-test-agent-via-proxy2ae-a "Test agent proxy2ae-a" active "" "" "Zabbix proxy2ae"
+test_zabbix_agent zabbix-test-agent2-via-proxy2ae-a "Test agent2 proxy2ae-a" active "" "" "Zabbix proxy2ae"
+# - Active Agent - Encrypted
+test_zabbix_agent zabbix-test-agent-via-proxy2ae-ae "Test agent proxy2ae-ae" active "agentproxy2ae-ae" "01234567890abcdef01234567890abcdef" "Zabbix proxy2ae"
+test_zabbix_agent zabbix-test-agent2-via-proxy2ae-ae "Test agent2 proxy2ae-ae" active "agent2proxy2ae-ae" "01234567890abcdef01234567890abcdef" "Zabbix proxy2ae"
+# - Passive Agent - Not Encrypted
+test_zabbix_agent zabbix-test-agent-via-proxy2ae-p "Test agent proxy2ae-p" passive "" "" "Zabbix proxy2ae"
+test_zabbix_agent zabbix-test-agent2-via-proxy2ae-p "Test agent2 proxy2ae-p" passive "" "" "Zabbix proxy2ae"
+# - Passive Agent - Encrypted
+test_zabbix_agent zabbix-test-agent-via-proxy2ae-pe "Test agent proxy2ae-pe" passive "agentproxy2ae-pe" "01234567890abcdef01234567890abcdef" "Zabbix proxy2ae"
+test_zabbix_agent zabbix-test-agent2-via-proxy2ae-pe "Test agent2 proxy2ae-pe" passive "agent2proxy2ae-pe" "01234567890abcdef01234567890abcdef" "Zabbix proxy2ae"
+
+# # PASSIVE PROXY
+
+# Passive Proxy - Not Encrypted
+# - Active Agent - Not Encrypted
+test_zabbix_agent zabbix-test-agent-via-proxy3p-a "Test agent proxy3p-a" active "" "" "Zabbix proxy3p"
+test_zabbix_agent zabbix-test-agent2-via-proxy3p-a "Test agent2 proxy3p-a" active "" "" "Zabbix proxy3p"
+# - Active Agent - Encrypted
+test_zabbix_agent zabbix-test-agent-via-proxy3p-ae "Test agent proxy3p-ae" active "agentproxy3p-ae" "01234567890abcdef01234567890abcdef" "Zabbix proxy3p"
+test_zabbix_agent zabbix-test-agent2-via-proxy3p-ae "Test agent2 proxy3p-ae" active "agent2proxy3p-ae" "01234567890abcdef01234567890abcdef" "Zabbix proxy3p"
+# - Passive Agent - Not Encrypted
+test_zabbix_agent zabbix-test-agent-via-proxy3p-p "Test agent proxy3p-p" passive "" "" "Zabbix proxy3p"
+test_zabbix_agent zabbix-test-agent2-via-proxy3p-p "Test agent2 proxy3p-p" passive "" "" "Zabbix proxy3p"
+# - Passive Agent - Encrypted
+test_zabbix_agent zabbix-test-agent-via-proxy3p-pe "Test agent proxy3p-pe" passive "agentproxy3p-pe" "01234567890abcdef01234567890abcdef" "Zabbix proxy3p"
+test_zabbix_agent zabbix-test-agent2-via-proxy3p-pe "Test agent2 proxy3p-pe" passive "agent2proxy3p-pe" "01234567890abcdef01234567890abcdef" "Zabbix proxy3p"
+
+# Passive Proxy - Encrypted
+# - Active Agent - Not Encrypted
+test_zabbix_agent zabbix-test-agent-via-proxy4pe-a "Test agent proxy4pe-a" active "" "" "Zabbix proxy4pe"
+test_zabbix_agent zabbix-test-agent2-via-proxy4pe-a "Test agent2 proxy4pe-a" active "" "" "Zabbix proxy4pe"
+# - Active Agent - Encrypted
+test_zabbix_agent zabbix-test-agent-via-proxy4pe-ae "Test agent proxy4pe-ae" active "agentproxy4pe-ae" "01234567890abcdef01234567890abcdef" "Zabbix proxy4pe"
+test_zabbix_agent zabbix-test-agent2-via-proxy4pe-ae "Test agent2 proxy4pe-ae" active "agent2proxy4pe-ae" "01234567890abcdef01234567890abcdef" "Zabbix proxy4pe"
+# - Passive Agent - Not Encrypted
+test_zabbix_agent zabbix-test-agent-via-proxy4pe-p "Test agent proxy4pe-p" passive "" "" "Zabbix proxy4pe"
+test_zabbix_agent zabbix-test-agent2-via-proxy4pe-p "Test agent2 proxy4pe-p" passive "" "" "Zabbix proxy4pe"
+# - Passive Agent - Encrypted
+test_zabbix_agent zabbix-test-agent-via-proxy4pe-pe "Test agent proxy4pe-pe" passive "agentproxy4pe-pe" "01234567890abcdef01234567890abcdef" "Zabbix proxy4pe"
+test_zabbix_agent zabbix-test-agent2-via-proxy4pe-pe "Test agent2 proxy4pe-pe" passive "agent2proxy4pe-pe" "01234567890abcdef01234567890abcdef" "Zabbix proxy4pe"
+
+
+
+fdc_test_pass zabbix-frontend "Zabbix frontend tests passed"
-- 
GitLab


From 233927dade301b8da3875c501ebb4104c83c1815 Mon Sep 17 00:00:00 2001
From: Nigel Kukard <nkukard@lbsd.net>
Date: Sun, 28 Jul 2024 13:25:18 +0000
Subject: [PATCH 07/16] chore: updated to version 7.0.1

---
 Dockerfile               |  3 +--
 patches/fix-msghdr.patch | 40 ----------------------------------------
 2 files changed, 1 insertion(+), 42 deletions(-)
 delete mode 100644 patches/fix-msghdr.patch

diff --git a/Dockerfile b/Dockerfile
index e12dc8b..0d2a82c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -25,7 +25,7 @@ FROM registry.conarx.tech/containers/nginx-php/edge as builder
 # UPDATE timescaledb version in tests/docker-compose.yml.timescaledb.tmpl to the max supported version
 # ref https://hub.docker.com/repository/docker/allworldit/postgresql-timescaledb/tags?page=1&ordering=last_updated
 # ref https://github.com/zabbix/zabbix/blob/6e6aa6c5a866e56648410275a936959a5100712c/include/zbx_dbversion_constants.h#L62
-ENV ZABBIX_VER=7.0.0
+ENV ZABBIX_VER=7.0.1
 
 
 COPY patches /build/patches
@@ -71,7 +71,6 @@ RUN set -eux; \
 	patch -p1 < ../patches/zabbix-disable-chrome-sandboxing.patch; \
 	patch -p1 < ../patches/zabbix-6.4.4_cgoflags-append-fix.patch; \
 	# Alpine patches
-	patch -p1 < ../patches/fix-msghdr.patch; \
 	patch -p1 < ../patches/ui-services-fix-php-80.patch; \
 	true "Configuring"; \
 	autoreconf -fvi; \
diff --git a/patches/fix-msghdr.patch b/patches/fix-msghdr.patch
deleted file mode 100644
index 699d745..0000000
--- a/patches/fix-msghdr.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-musl has padding on struct msghdr fields so the designated initialiser fails with int-conversion:
-
-src/libs/zbxsysinfo/linux/net.c:115:95: error: initialization of 'int' from 'void *' makes integer from pointer without a cast [-Werror=int-conversion]
-  115 |         struct msghdr           s_msg = { (void *)&s_sa, sizeof(struct sockaddr_nl), s_io, 1, NULL, 0, 0};
-
-this is because the assignment becomes to padding, and the resulting struct is broken
-diff --git a/src/libs/zbxsysinfo/linux/net.c b/src/libs/zbxsysinfo/linux/net.c
-index 4b0a634..1ccc2c4 100644
---- a/src/libs/zbxsysinfo/linux/net.c
-+++ b/src/libs/zbxsysinfo/linux/net.c
-@@ -112,13 +112,27 @@ static int	find_tcp_port_by_state_nl(unsigned short port, int state, int *found)
- 
- 	struct sockaddr_nl	s_sa = { AF_NETLINK, 0, 0, 0 };
- 	struct iovec		s_io[1] = { { &request, sizeof(request) } };
--	struct msghdr		s_msg = { (void *)&s_sa, sizeof(struct sockaddr_nl), s_io, 1, NULL, 0, 0};
-+	struct msghdr		s_msg;
-+	s_msg.msg_name = (void *)&s_sa;
-+	s_msg.msg_namelen = sizeof(struct sockaddr_nl);
-+	s_msg.msg_iov = s_io;
-+	s_msg.msg_iovlen = 1;
-+	s_msg.msg_control = NULL;
-+	s_msg.msg_controllen = 0;
-+	s_msg.msg_flags = 0;
- 
- 	char			buffer[BUFSIZ] = { 0 };
- 
- 	struct sockaddr_nl	r_sa = { AF_NETLINK, 0, 0, 0 };
- 	struct iovec		r_io[1] = { { buffer, BUFSIZ } };
--	struct msghdr		r_msg = { (void *)&r_sa, sizeof(struct sockaddr_nl), r_io, 1, NULL, 0, 0};
-+	struct msghdr		r_msg;
-+	r_msg.msg_name = (void *)&r_sa;
-+	r_msg.msg_namelen = sizeof(struct sockaddr_nl);
-+	r_msg.msg_iov = r_io;
-+	r_msg.msg_iovlen = 1;
-+	r_msg.msg_control = NULL;
-+	r_msg.msg_controllen = 0;
-+	r_msg.msg_flags = 0;
- 
- 	struct nlmsghdr		*r_hdr;
- 
-- 
GitLab


From 6ea45c29cf893da4b41be3566b145a5948aa479c Mon Sep 17 00:00:00 2001
From: Nigel Kukard <nkukard@lbsd.net>
Date: Sat, 3 Aug 2024 21:41:07 +0000
Subject: [PATCH 08/16] chore: updated to version 7.0.2

---
 Dockerfile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Dockerfile b/Dockerfile
index 0d2a82c..79b9b61 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -25,7 +25,7 @@ FROM registry.conarx.tech/containers/nginx-php/edge as builder
 # UPDATE timescaledb version in tests/docker-compose.yml.timescaledb.tmpl to the max supported version
 # ref https://hub.docker.com/repository/docker/allworldit/postgresql-timescaledb/tags?page=1&ordering=last_updated
 # ref https://github.com/zabbix/zabbix/blob/6e6aa6c5a866e56648410275a936959a5100712c/include/zbx_dbversion_constants.h#L62
-ENV ZABBIX_VER=7.0.1
+ENV ZABBIX_VER=7.0.2
 
 
 COPY patches /build/patches
-- 
GitLab


From 387787fec5549cadeac9578b57128e866eb59830 Mon Sep 17 00:00:00 2001
From: Nigel Kukard <nkukard@lbsd.net>
Date: Mon, 26 Aug 2024 10:57:52 +0000
Subject: [PATCH 09/16] chore: updated to version 7.0.3

---
 Dockerfile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Dockerfile b/Dockerfile
index 79b9b61..1324ab0 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -25,7 +25,7 @@ FROM registry.conarx.tech/containers/nginx-php/edge as builder
 # UPDATE timescaledb version in tests/docker-compose.yml.timescaledb.tmpl to the max supported version
 # ref https://hub.docker.com/repository/docker/allworldit/postgresql-timescaledb/tags?page=1&ordering=last_updated
 # ref https://github.com/zabbix/zabbix/blob/6e6aa6c5a866e56648410275a936959a5100712c/include/zbx_dbversion_constants.h#L62
-ENV ZABBIX_VER=7.0.2
+ENV ZABBIX_VER=7.0.3
 
 
 COPY patches /build/patches
-- 
GitLab


From 0470b31d4620ca6324f6dfbe2a9b2f46b98375cf Mon Sep 17 00:00:00 2001
From: Nigel Kukard <nkukard@lbsd.net>
Date: Thu, 26 Sep 2024 17:40:15 +0000
Subject: [PATCH 10/16] chore: updated to version 7.0.4

---
 Dockerfile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Dockerfile b/Dockerfile
index 1324ab0..377aaeb 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -25,7 +25,7 @@ FROM registry.conarx.tech/containers/nginx-php/edge as builder
 # UPDATE timescaledb version in tests/docker-compose.yml.timescaledb.tmpl to the max supported version
 # ref https://hub.docker.com/repository/docker/allworldit/postgresql-timescaledb/tags?page=1&ordering=last_updated
 # ref https://github.com/zabbix/zabbix/blob/6e6aa6c5a866e56648410275a936959a5100712c/include/zbx_dbversion_constants.h#L62
-ENV ZABBIX_VER=7.0.3
+ENV ZABBIX_VER=7.0.4
 
 
 COPY patches /build/patches
-- 
GitLab


From 44cd2b58f6abc526a9c358f03f2b2a6c75956b0c Mon Sep 17 00:00:00 2001
From: Nigel Kukard <nkukard@lbsd.net>
Date: Thu, 24 Oct 2024 22:00:58 +0000
Subject: [PATCH 11/16] chore: updated to version 7.0.5

---
 Dockerfile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Dockerfile b/Dockerfile
index 377aaeb..a28c67c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -25,7 +25,7 @@ FROM registry.conarx.tech/containers/nginx-php/edge as builder
 # UPDATE timescaledb version in tests/docker-compose.yml.timescaledb.tmpl to the max supported version
 # ref https://hub.docker.com/repository/docker/allworldit/postgresql-timescaledb/tags?page=1&ordering=last_updated
 # ref https://github.com/zabbix/zabbix/blob/6e6aa6c5a866e56648410275a936959a5100712c/include/zbx_dbversion_constants.h#L62
-ENV ZABBIX_VER=7.0.4
+ENV ZABBIX_VER=7.0.5
 
 
 COPY patches /build/patches
-- 
GitLab


From f4cb1fc31e48b96213d4b5bed8780b74afcbcc9c Mon Sep 17 00:00:00 2001
From: Nigel Kukard <nkukard@lbsd.net>
Date: Sun, 1 Dec 2024 16:30:56 +0000
Subject: [PATCH 12/16] chore: updated to version 7.0.6

---
 Dockerfile | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index a28c67c..e08de3c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -25,7 +25,7 @@ FROM registry.conarx.tech/containers/nginx-php/edge as builder
 # UPDATE timescaledb version in tests/docker-compose.yml.timescaledb.tmpl to the max supported version
 # ref https://hub.docker.com/repository/docker/allworldit/postgresql-timescaledb/tags?page=1&ordering=last_updated
 # ref https://github.com/zabbix/zabbix/blob/6e6aa6c5a866e56648410275a936959a5100712c/include/zbx_dbversion_constants.h#L62
-ENV ZABBIX_VER=7.0.5
+ENV ZABBIX_VER=7.0.6
 
 
 COPY patches /build/patches
@@ -60,7 +60,7 @@ RUN set -eux; \
 RUN set -eux; \
 	mkdir -p build; \
 	cd build; \
-	wget "https://github.com/zabbix/zabbix/archive/${ZABBIX_VER}.tar.gz" -O "zabbix-server-${ZABBIX_VER}.tar.gz"; \
+	wget "https://cdn.zabbix.com/zabbix/sources/stable/${ZABBIX_VER%.*}/zabbix-${ZABBIX_VER}.tar.gz" -O "zabbix-server-${ZABBIX_VER}.tar.gz"; \
 	tar -zxvf "zabbix-server-${ZABBIX_VER}.tar.gz"
 
 # Download and build
@@ -108,7 +108,6 @@ RUN set -eux; \
 		./configure $_configure_flags --enable-server "--with-$db"; \
 		make clean; \
 		make $MAKEFLAGS; \
-		make dbschema; \
 		mv src/zabbix_server/zabbix_server "src/zabbix_server/zabbix_server_$db"; \
 		mkdir -p "../schema/zabbix-server"; \
 		cp -r "database/$db" "../schema/zabbix-server/$db"; \
@@ -119,7 +118,6 @@ RUN set -eux; \
 		./configure $_configure_flags --enable-proxy "--with-$db"; \
 		make clean; \
 		make $MAKEFLAGS; \
-		make dbschema; \
 		mv src/zabbix_proxy/zabbix_proxy "src/zabbix_proxy/zabbix_proxy_$db"; \
 		mkdir -p "../schema/zabbix-proxy"; \
 		cp -r "database/$db" "../schema/zabbix-proxy/$db"; \
-- 
GitLab


From 23cec8baa5d1be26f26a08c36d52a4c1172dd5da Mon Sep 17 00:00:00 2001
From: Nigel Kukard <nkukard@lbsd.net>
Date: Sun, 22 Dec 2024 05:08:00 +0000
Subject: [PATCH 13/16] chore: updated to version 7.2.1

---
 Dockerfile                                | 4 ++--
 tests/docker-compose.yml.timescaledb.tmpl | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index e08de3c..23e61f3 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -24,8 +24,8 @@ FROM registry.conarx.tech/containers/nginx-php/edge as builder
 
 # UPDATE timescaledb version in tests/docker-compose.yml.timescaledb.tmpl to the max supported version
 # ref https://hub.docker.com/repository/docker/allworldit/postgresql-timescaledb/tags?page=1&ordering=last_updated
-# ref https://github.com/zabbix/zabbix/blob/6e6aa6c5a866e56648410275a936959a5100712c/include/zbx_dbversion_constants.h#L62
-ENV ZABBIX_VER=7.0.6
+# ref https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/include/zbx_dbversion_constants.h?at=refs%2Ftags%2F7.2.1
+ENV ZABBIX_VER=7.2.1
 
 
 COPY patches /build/patches
diff --git a/tests/docker-compose.yml.timescaledb.tmpl b/tests/docker-compose.yml.timescaledb.tmpl
index 7eecc90..aca3ae8 100644
--- a/tests/docker-compose.yml.timescaledb.tmpl
+++ b/tests/docker-compose.yml.timescaledb.tmpl
@@ -567,7 +567,7 @@ services:
   # MAIN ZABBIX DATABASE SERVER
 
   postgresql-server:
-    image: registry.conarx.tech/containers/postgresql-timescaledb/3.19:pg16-2.14.2
+    image: registry.conarx.tech/containers/postgresql-timescaledb/3.20:pg17-2.17.2
     environment:
       - POSTGRES_USER=zabbix
       - POSTGRES_PASSWORD=zabbix
-- 
GitLab


From 52362e2174593232b1e309abc00307759ad9a8fc Mon Sep 17 00:00:00 2001
From: Nigel Kukard <nkukard@lbsd.net>
Date: Tue, 7 Jan 2025 21:57:55 +0000
Subject: [PATCH 14/16] chore: updated copyright to 2025

---
 Dockerfile                                                      | 2 +-
 contrib/docker-compose.yml                                      | 2 +-
 docker_release_version.sh                                       | 2 +-
 etc/nginx/http.d/50_vhost_default.conf.template                 | 2 +-
 etc/nginx/http.d/55_vhost_default-ssl-certbot.conf.template     | 2 +-
 tests/docker-compose.yml.mysql.tmpl                             | 2 +-
 tests/docker-compose.yml.postgresql.tmpl                        | 2 +-
 tests/docker-compose.yml.timescaledb.tmpl                       | 2 +-
 tests/run-cluster-test                                          | 2 +-
 .../flexible-docker-containers/healthcheck.d/48-zabbix-agent.sh | 2 +-
 .../healthcheck.d/48-zabbix-agent2.sh                           | 2 +-
 .../flexible-docker-containers/healthcheck.d/48-zabbix-proxy.sh | 2 +-
 .../healthcheck.d/48-zabbix-server.sh                           | 2 +-
 .../healthcheck.d/48-zabbix-webservice.sh                       | 2 +-
 usr/local/share/flexible-docker-containers/init.d/48-zabbix.sh  | 2 +-
 .../flexible-docker-containers/pre-exec-tests.d/48-zabbix.sh    | 2 +-
 .../flexible-docker-containers/pre-init-tests.d/48-zabbix.sh    | 2 +-
 .../share/flexible-docker-containers/pre-init.d/48-zabbix.sh    | 2 +-
 .../share/flexible-docker-containers/tests.d/48-zabbix-agent.sh | 2 +-
 .../flexible-docker-containers/tests.d/48-zabbix-agent2.sh      | 2 +-
 .../flexible-docker-containers/tests.d/48-zabbix-frontend.sh    | 2 +-
 .../share/flexible-docker-containers/tests.d/48-zabbix-proxy.sh | 2 +-
 .../flexible-docker-containers/tests.d/48-zabbix-server.sh      | 2 +-
 .../flexible-docker-containers/tests.d/48-zabbix-webservice.sh  | 2 +-
 usr/local/share/flexible-docker-containers/tests.d/99-zabbix.sh | 2 +-
 25 files changed, 25 insertions(+), 25 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index 23e61f3..eadd633 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/contrib/docker-compose.yml b/contrib/docker-compose.yml
index d69bccd..7226970 100644
--- a/contrib/docker-compose.yml
+++ b/contrib/docker-compose.yml
@@ -1,4 +1,4 @@
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/docker_release_version.sh b/docker_release_version.sh
index 7bbeed4..464b1a7 100644
--- a/docker_release_version.sh
+++ b/docker_release_version.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/etc/nginx/http.d/50_vhost_default.conf.template b/etc/nginx/http.d/50_vhost_default.conf.template
index d9725a7..368e092 100644
--- a/etc/nginx/http.d/50_vhost_default.conf.template
+++ b/etc/nginx/http.d/50_vhost_default.conf.template
@@ -1,4 +1,4 @@
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/etc/nginx/http.d/55_vhost_default-ssl-certbot.conf.template b/etc/nginx/http.d/55_vhost_default-ssl-certbot.conf.template
index 7427f3a..292c556 100644
--- a/etc/nginx/http.d/55_vhost_default-ssl-certbot.conf.template
+++ b/etc/nginx/http.d/55_vhost_default-ssl-certbot.conf.template
@@ -1,4 +1,4 @@
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/tests/docker-compose.yml.mysql.tmpl b/tests/docker-compose.yml.mysql.tmpl
index e5bf7a2..0187fc6 100644
--- a/tests/docker-compose.yml.mysql.tmpl
+++ b/tests/docker-compose.yml.mysql.tmpl
@@ -1,4 +1,4 @@
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/tests/docker-compose.yml.postgresql.tmpl b/tests/docker-compose.yml.postgresql.tmpl
index b1d7d33..e2a24e1 100644
--- a/tests/docker-compose.yml.postgresql.tmpl
+++ b/tests/docker-compose.yml.postgresql.tmpl
@@ -1,4 +1,4 @@
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/tests/docker-compose.yml.timescaledb.tmpl b/tests/docker-compose.yml.timescaledb.tmpl
index aca3ae8..7f91cfb 100644
--- a/tests/docker-compose.yml.timescaledb.tmpl
+++ b/tests/docker-compose.yml.timescaledb.tmpl
@@ -1,4 +1,4 @@
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/tests/run-cluster-test b/tests/run-cluster-test
index 47ce5f6..267c9a4 100755
--- a/tests/run-cluster-test
+++ b/tests/run-cluster-test
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/usr/local/share/flexible-docker-containers/healthcheck.d/48-zabbix-agent.sh b/usr/local/share/flexible-docker-containers/healthcheck.d/48-zabbix-agent.sh
index 4e15950..114ab8a 100644
--- a/usr/local/share/flexible-docker-containers/healthcheck.d/48-zabbix-agent.sh
+++ b/usr/local/share/flexible-docker-containers/healthcheck.d/48-zabbix-agent.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/usr/local/share/flexible-docker-containers/healthcheck.d/48-zabbix-agent2.sh b/usr/local/share/flexible-docker-containers/healthcheck.d/48-zabbix-agent2.sh
index 2137209..a2be4b6 100644
--- a/usr/local/share/flexible-docker-containers/healthcheck.d/48-zabbix-agent2.sh
+++ b/usr/local/share/flexible-docker-containers/healthcheck.d/48-zabbix-agent2.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/usr/local/share/flexible-docker-containers/healthcheck.d/48-zabbix-proxy.sh b/usr/local/share/flexible-docker-containers/healthcheck.d/48-zabbix-proxy.sh
index d5bfd87..4239b7f 100644
--- a/usr/local/share/flexible-docker-containers/healthcheck.d/48-zabbix-proxy.sh
+++ b/usr/local/share/flexible-docker-containers/healthcheck.d/48-zabbix-proxy.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/usr/local/share/flexible-docker-containers/healthcheck.d/48-zabbix-server.sh b/usr/local/share/flexible-docker-containers/healthcheck.d/48-zabbix-server.sh
index 1e5dcb5..318730a 100644
--- a/usr/local/share/flexible-docker-containers/healthcheck.d/48-zabbix-server.sh
+++ b/usr/local/share/flexible-docker-containers/healthcheck.d/48-zabbix-server.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/usr/local/share/flexible-docker-containers/healthcheck.d/48-zabbix-webservice.sh b/usr/local/share/flexible-docker-containers/healthcheck.d/48-zabbix-webservice.sh
index b6763c7..30ea59f 100644
--- a/usr/local/share/flexible-docker-containers/healthcheck.d/48-zabbix-webservice.sh
+++ b/usr/local/share/flexible-docker-containers/healthcheck.d/48-zabbix-webservice.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/usr/local/share/flexible-docker-containers/init.d/48-zabbix.sh b/usr/local/share/flexible-docker-containers/init.d/48-zabbix.sh
index b3b4c57..8550794 100755
--- a/usr/local/share/flexible-docker-containers/init.d/48-zabbix.sh
+++ b/usr/local/share/flexible-docker-containers/init.d/48-zabbix.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/usr/local/share/flexible-docker-containers/pre-exec-tests.d/48-zabbix.sh b/usr/local/share/flexible-docker-containers/pre-exec-tests.d/48-zabbix.sh
index cffe781..55eb4d9 100644
--- a/usr/local/share/flexible-docker-containers/pre-exec-tests.d/48-zabbix.sh
+++ b/usr/local/share/flexible-docker-containers/pre-exec-tests.d/48-zabbix.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/usr/local/share/flexible-docker-containers/pre-init-tests.d/48-zabbix.sh b/usr/local/share/flexible-docker-containers/pre-init-tests.d/48-zabbix.sh
index 5ce6f92..4175607 100644
--- a/usr/local/share/flexible-docker-containers/pre-init-tests.d/48-zabbix.sh
+++ b/usr/local/share/flexible-docker-containers/pre-init-tests.d/48-zabbix.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/usr/local/share/flexible-docker-containers/pre-init.d/48-zabbix.sh b/usr/local/share/flexible-docker-containers/pre-init.d/48-zabbix.sh
index 95b96da..b2c7c1a 100755
--- a/usr/local/share/flexible-docker-containers/pre-init.d/48-zabbix.sh
+++ b/usr/local/share/flexible-docker-containers/pre-init.d/48-zabbix.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-agent.sh b/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-agent.sh
index 7939aff..f62da7f 100644
--- a/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-agent.sh
+++ b/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-agent.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-agent2.sh b/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-agent2.sh
index 0aae3ac..b06acfe 100644
--- a/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-agent2.sh
+++ b/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-agent2.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-frontend.sh b/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-frontend.sh
index d4d3e4c..8f8f357 100644
--- a/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-frontend.sh
+++ b/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-frontend.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-proxy.sh b/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-proxy.sh
index 38a1695..00dd822 100644
--- a/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-proxy.sh
+++ b/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-proxy.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-server.sh b/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-server.sh
index 6a80a64..0690ea6 100644
--- a/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-server.sh
+++ b/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-server.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-webservice.sh b/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-webservice.sh
index c8fed98..8f74f51 100644
--- a/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-webservice.sh
+++ b/usr/local/share/flexible-docker-containers/tests.d/48-zabbix-webservice.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
diff --git a/usr/local/share/flexible-docker-containers/tests.d/99-zabbix.sh b/usr/local/share/flexible-docker-containers/tests.d/99-zabbix.sh
index 696c6fb..79ca447 100644
--- a/usr/local/share/flexible-docker-containers/tests.d/99-zabbix.sh
+++ b/usr/local/share/flexible-docker-containers/tests.d/99-zabbix.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Copyright (c) 2022-2023, AllWorldIT.
+# Copyright (c) 2022-2025, AllWorldIT.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to
-- 
GitLab


From e3c234187a83670e91141429c4ed557e0187e41a Mon Sep 17 00:00:00 2001
From: Nigel Kukard <nkukard@lbsd.net>
Date: Tue, 7 Jan 2025 21:58:21 +0000
Subject: [PATCH 15/16] fix: fixed LABEL syntax

---
 Dockerfile | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index eadd633..50cf01d 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -318,9 +318,9 @@ FROM registry.conarx.tech/containers/nginx-php/edge
 
 
 ARG VERSION_INFO=
-LABEL org.opencontainers.image.authors   "Nigel Kukard <nkukard@conarx.tech>"
-LABEL org.opencontainers.image.version   "edge"
-LABEL org.opencontainers.image.base.name "registry.conarx.tech/containers/nginx-php/edge"
+LABEL org.opencontainers.image.authors   = "Nigel Kukard <nkukard@conarx.tech>"
+LABEL org.opencontainers.image.version   = "edge"
+LABEL org.opencontainers.image.base.name = "registry.conarx.tech/containers/nginx-php/edge"
 
 
 # Copy in built binaries
-- 
GitLab


From dfbe6feeeb6fdf34fe48d5db38b3a840f03925b0 Mon Sep 17 00:00:00 2001
From: Nigel Kukard <nkukard@lbsd.net>
Date: Wed, 8 Jan 2025 00:37:05 +0000
Subject: [PATCH 16/16] chore: updated to Alpine 3.21

---
 Dockerfile | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index d6198c2..dcbbc61 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -19,7 +19,7 @@
 # IN THE SOFTWARE.
 
 
-FROM registry.conarx.tech/containers/nginx-php/3.20 as builder
+FROM registry.conarx.tech/containers/nginx-php/3.21 as builder
 
 
 # UPDATE timescaledb version in tests/docker-compose.yml.timescaledb.tmpl to the max supported version
@@ -314,13 +314,13 @@ RUN set -eux; \
 
 
 
-FROM registry.conarx.tech/containers/nginx-php/3.20
+FROM registry.conarx.tech/containers/nginx-php/3.21
 
 
 ARG VERSION_INFO=
 LABEL org.opencontainers.image.authors   = "Nigel Kukard <nkukard@conarx.tech>"
-LABEL org.opencontainers.image.version   = "3.20"
-LABEL org.opencontainers.image.base.name = "registry.conarx.tech/containers/nginx-php/3.20"
+LABEL org.opencontainers.image.version   = "3.21"
+LABEL org.opencontainers.image.base.name = "registry.conarx.tech/containers/nginx-php/3.21"
 
 
 # Copy in built binaries
-- 
GitLab