diff --git a/blueprints/zabbix/docker-compose.yml b/blueprints/zabbix/docker-compose.yml new file mode 100644 index 00000000..aea0a8df --- /dev/null +++ b/blueprints/zabbix/docker-compose.yml @@ -0,0 +1,85 @@ +version: "3.8" + +services: + postgres: + image: postgres:16-alpine + restart: unless-stopped + environment: + POSTGRES_DB: ${POSTGRES_DB} + POSTGRES_USER: ${POSTGRES_USER} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + volumes: + - zabbix-postgres-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] + interval: 10s + timeout: 5s + retries: 5 + + zabbix-java-gateway: + image: zabbix/zabbix-java-gateway:alpine-7.4-latest + restart: unless-stopped + + zabbix-snmptraps: + image: zabbix/zabbix-snmptraps:alpine-7.4-latest + restart: unless-stopped + volumes: + - zabbix-snmptraps:/var/lib/zabbix/snmptraps + - zabbix-mibs:/var/lib/zabbix/mibs + + zabbix-server-pgsql: + image: zabbix/zabbix-server-pgsql:alpine-7.4-latest + restart: unless-stopped + environment: + DB_SERVER_HOST: postgres + POSTGRES_USER: ${POSTGRES_USER} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + POSTGRES_DB: ${POSTGRES_DB} + ZBX_ENABLE_SNMP_TRAPS: "true" + ZBX_JAVAGATEWAY: zabbix-java-gateway + depends_on: + postgres: + condition: service_healthy + zabbix-java-gateway: + condition: service_started + zabbix-snmptraps: + condition: service_started + volumes: + - zabbix-server-data:/var/lib/zabbix + - zabbix-snmptraps:/var/lib/zabbix/snmptraps + - zabbix-mibs:/var/lib/zabbix/mibs + expose: + - 10051 + healthcheck: + test: ["CMD", "pgrep", "zabbix_server"] + interval: 10s + timeout: 5s + retries: 5 + + zabbix-web-nginx-pgsql: + image: zabbix/zabbix-web-nginx-pgsql:alpine-7.4-latest + restart: unless-stopped + environment: + DB_SERVER_HOST: postgres + POSTGRES_USER: ${POSTGRES_USER} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + POSTGRES_DB: ${POSTGRES_DB} + ZBX_SERVER_HOST: zabbix-server-pgsql + PHP_TZ: ${PHP_TZ} + ZBX_SERVER_NAME: ${ZBX_SERVER_NAME} + depends_on: + zabbix-server-pgsql: + condition: service_healthy + expose: + - 8080 + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/"] + interval: 30s + timeout: 10s + retries: 3 + +volumes: + zabbix-postgres-data: + zabbix-server-data: + zabbix-snmptraps: + zabbix-mibs: diff --git a/blueprints/zabbix/image.png b/blueprints/zabbix/image.png new file mode 100644 index 00000000..74847ed0 Binary files /dev/null and b/blueprints/zabbix/image.png differ diff --git a/blueprints/zabbix/template.toml b/blueprints/zabbix/template.toml new file mode 100644 index 00000000..e3b6c48c --- /dev/null +++ b/blueprints/zabbix/template.toml @@ -0,0 +1,17 @@ +[variables] +main_domain = "${domain}" +postgres_password = "${password:32}" + +[config] + +[[config.domains]] +serviceName = "zabbix-web-nginx-pgsql" +port = 8080 +host = "${main_domain}" + +[config.env] +POSTGRES_DB = "zabbix" +POSTGRES_USER = "zabbix" +POSTGRES_PASSWORD = "${postgres_password}" +PHP_TZ = "UTC" +ZBX_SERVER_NAME = "Dokploy Zabbix Monitoring" \ No newline at end of file diff --git a/meta.json b/meta.json index d0a7afec..6d479bbc 100644 --- a/meta.json +++ b/meta.json @@ -5377,6 +5377,24 @@ "webui" ] }, + { + "id": "zabbix", + "name": "Zabbix", + "version": "7.4", + "description": "Zabbix is an open-source enterprise-grade monitoring platform for networks, servers, virtual machines, and cloud services. This template includes PostgreSQL, Nginx frontend, SNMP traps, and Java gateway.", + "logo": "image.png", + "links": { + "github": "https://github.com/zabbix/zabbix-docker", + "website": "https://www.zabbix.com/", + "docs": "https://www.zabbix.com/documentation/current/en/manual/installation/containers" + }, + "tags": [ + "monitoring", + "infrastructure", + "observability", + "alerting" + ] + }, { "id": "zipline", "name": "Zipline",