linux  projekt  zabbix

zabbix docker

Eine Doku...
Variante 1 umgesetzt, das ist laut der Doku die sicherheitlichste Variante... Da hier auch meine Bitwarden Container laufen sicher nicht verkehrt.
Den Host selbst habe ich dann per Zabbig-Agent angebunden!

Install

sudo mkdir -p /opt/zabbix
sudo mkdir -p /opt/zabbix/zabbix
sudo mkdir -p /opt/zabbix/zabbix/postgresql
sudo mkdir -p /opt/zabbix/zabbix/server
sudo mkdir -p /opt/zabbix/zabbix/snmptraps
sudo mkdir -p /opt/zabbix/zabbix/export
sudo mkdir -p /opt/zabbix/zabbix/web

cd /opt/zabbix

sudo nano .env
POSTGRES_USER=zabbix
POSTGRES_PASSWORD=♯crypt♯
POSTGRES_DB=zabbix
PHP_TZ=Europe/Berlin
ZABBIX_FRONTEND_PORT=8080

sudo nano docker-compose.yaml
services:
  postgresql-server:
    image: postgres:17.6-alpine3.22
    container_name: postgresql-server
    restart: unless-stopped
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
    volumes:
      - postgresql-data:/var/lib/postgresql/data

  zabbix-server:
    image: zabbix/zabbix-server-pgsql:latest
    container_name: zabbix-server
    restart: unless-stopped
    depends_on:
      - postgresql-server
    environment:
      DB_SERVER_HOST: postgresql-server
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
    ports:
      - "10051:10051"
    volumes:
      - zabbix-server-data:/var/lib/zabbix
      - zabbix-snmptraps-data:/var/lib/zabbix/snmptraps
      - zabbix-export-data:/var/lib/zabbix/export

  zabbix-web-nginx-pgsql:
    image: zabbix/zabbix-web-nginx-pgsql:latest
    container_name: zabbix-web
    restart: unless-stopped
    depends_on:
      - postgresql-server
      - zabbix-server
    environment:
      DB_SERVER_HOST: postgresql-server
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
      ZBX_SERVER_HOST: zabbix-server
      PHP_TZ: ${PHP_TZ}
    ports:
      - "${ZABBIX_FRONTEND_PORT}:8080"
    volumes:
      - zabbix-web-data:/usr/share/zabbix

  zabbix-agent:
    image: zabbix/zabbix-agent:latest
    container_name: zabbix-agent
    restart: unless-stopped
    depends_on:
      - zabbix-server
    environment:
      ZBX_HOSTNAME: "zabbix-server"
      ZBX_SERVER_HOST: zabbix-server
      ZBX_SERVER_PORT: "10051"
      ZBX_SERVER_ACTIVE: zabbix-server

volumes:
  postgresql-data:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /opt/zabbix/zabbix/postgresql
  zabbix-server-data:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /opt/zabbix/zabbix/server
  zabbix-snmptraps-data:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /opt/zabbix/zabbix/snmptraps
  zabbix-export-data:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /opt/zabbix/zabbix/export
  zabbix-web-data:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /opt/zabbix/zabbix/web

Erster Login

Admin / zabbix

Reverse Proxy

zabbix.r4g9.l11
	SSLProxyEngine On
	SSLProxyVerify none
	SSLProxyCheckPeerCN off
	SSLProxyCheckPeerName off
	SSLProxyCheckPeerExpire off
	ProxyPass / http://127.0.0.1:8080/
	ProxyPassReverse / http://127.0.0.1:8080/

Zabbix-Agent on Zabbix-Server

Umstellung auf DNS:

Zabbix-Agent on Docker-Host

Installation direkt auf dem Docker-Host, aber Konfiguration auf Port 10053 und Server auf 172.16.0.0/12!
Außerdem die Firewall Freischaltung entsprechend auf:

sudo ufw allow from 172.16.0.0/12 to any port 10053

troubleshooting

reset password

Passwort kann nur über die DB resetet werden, zugriff auf die DB kann man sich mit einem pgAdmin verschaffen den man als einfach auch als Docker mit rauffährt.
Dazu in die Zabbix-Docker-Compose diesen Abschnitt einfügen:

  zabbix-pgadmin:
    image: dpage/pgadmin4:latest
    container_name: zabbix-pgadmin
    environment:
      PGADMIN_DEFAULT_EMAIL: manfred@heister.email
      PGADMIN_DEFAULT_PASSWORD: lassmichrein
    ports:
      - "8888:80"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

... danach kann man den pgAdmin auf dem Host unter dem Port 8888 erreichen, Login in den pgAdmin erfolgt mit diesen Informationen und dem vergebenen Zabbix-DB-PW

Reset per SQL:

#neues Passwort: zabbix
UPDATE users SET passwd = '$2a$10$ZXIvHAEP2ZM.dLXTm6uPHOMVlARXX7cqjbhM6Fn0cANzkCQBWpMrS' WHERE username = 'mani';
 docker   linux   projekt   self-hosted   zabbix