Zabbix proxy as Docker container

Goal is to have a zabbix proxy in docker container running under Ubuntu.

Solution: adjust following script to your needs. run it and get zabbix proxy in container. simple!

Script:

#!/bin/sh

# Update OS and install necessary packages
apt-get update
apt-get install -y ca-certificates curl wget

# Install Docker GPG key
wget -O /etc/apt/keyrings/docker.asc https://download.docker.com/linux/ubuntu/gpg
chmod a+r /etc/apt/keyrings/docker.asc

# Install Docker repo
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null

# Set up Zabbix repository
wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu24.04_all.deb
dpkg -i zabbix-release_6.4-1+ubuntu24.04_all.deb
apt update

# Install Zabbix agent and Docker engine
apt install -y zabbix-agent2 zabbix-agent2-plugin-* docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Configure Zabbix agent
cat << EOF > /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=your_zabbix_server.ca
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agent2.d/*.conf
PluginSocket=/run/zabbix/agent.plugin.sock
ControlSocket=/run/zabbix/agent.sock
Include=/etc/zabbix/zabbix_agent2.d/plugins.d/*.conf
EOF

# Add user zabbix to Docker group
usermod -aG docker zabbix

# Restart Zabbix agent
systemctl restart zabbix-agent2


# Create shell script for start/stop container
cat << EOF > /opt/zabbix-proxy/restart_proxy.sh
#!/bin/sh
docker compose -f /opt/zabbix-proxy/docker-compose.yml down
docker compose -f /opt/zabbix-proxy/docker-compose.yml up -d
EOF
chmod +x /opt/zabbix-proxy/restart_proxy.sh

# Set up Docker for zabbix-proxy
cat << EOF > /opt/zabbix-proxy/docker-compose.yml
services:
  zabbix_proxy:
    image: zabbix/zabbix-proxy-sqlite3:ubuntu-6.0.12
    restart: always
    environment:
      - ZBX_SERVER_HOST=your_zabbix_server.ca
      - ZBX_HOSTNAME=zabbix_proxy_host.ca
      - ZBX_CONFIGFREQUENCY=60
    network_mode: host
EOF

# Start zabbix-proxy
docker compose -f /opt/zabbix-proxy/docker-compose.yml up -d

# Clean up
rm zabbix-release_6.4-1+ubuntu24.04_all.deb
rm install.sh
echo
echo ATTN!!! In zabbix-proxy2 config add primary/main interface of VM to "server" section and restart zabbix-agent2 service!