commit 6cdd89371df5bb0e1a77d12006e8548d7f587ed2 Author: lmelo Date: Sun May 24 14:39:04 2026 +0000 Initial commit: Zabbix producao com mariadb diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f2f3241 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +# Secrets +env/ +.credentials + +# Data +data/ +backups/ + +# OS/Logs +*.log +.DS_Store diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..d7340b0 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,69 @@ +services: + mariadb: + image: mariadb:10.11 + container_name: zabbix-db + restart: unless-stopped + env_file: ./env/.env_db + volumes: + - ./data/db:/var/lib/mysql + - ./backups:/backups + command: + - --character-set-server=utf8mb4 + - --collation-server=utf8mb4_bin + - --log_bin_trust_function_creators=1 + - --innodb_buffer_pool_size=512M + healthcheck: + test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] + interval: 10s + timeout: 5s + retries: 12 + start_period: 60s + deploy: + resources: + limits: + memory: 1G + + zabbix-server: + image: zabbix/zabbix-server-mysql:alpine-7.4-latest + container_name: zabbix-server + restart: unless-stopped + depends_on: + mariadb: + condition: service_healthy + env_file: ./env/.env_server + ports: + - "10051:10051" + volumes: + - ./data/zabbix_server:/var/lib/zabbix + - /etc/localtime:/etc/localtime:ro + healthcheck: + test: ["CMD", "zabbix_server", "--runtime-control", "ping"] + interval: 30s + timeout: 10s + retries: 3 + deploy: + resources: + limits: + memory: 512M + + zabbix-web: + image: zabbix/zabbix-web-nginx-mysql:alpine-7.4-latest + container_name: zabbix-web + restart: unless-stopped + depends_on: + - mariadb + - zabbix-server + env_file: ./env/.env_web + ports: + - "0.0.0.0:8080:8080" + volumes: + - /etc/localtime:/etc/localtime:ro + deploy: + resources: + limits: + memory: 256M + +networks: + default: + name: zabbix-net + driver: bridge diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..6be979f --- /dev/null +++ b/setup.sh @@ -0,0 +1,90 @@ +#!/bin/bash +set -e + +# Detetar Docker Compose +if command -v docker &>/dev/null && docker compose version &>/dev/null 2>&1; then + COMPOSE_CMD="docker compose" +elif command -v docker-compose &>/dev/null; then + COMPOSE_CMD="docker-compose" +else + echo "❌ Docker Compose not found!" + exit 1 +fi + +ENV_DIR="./env" +CRED_FILE="./.credentials" + +# Se já existe configuração, apenas inicia +if [[ -f "$ENV_DIR/.env_db" ]]; then + echo "[ℹ️] Configuration already exists. Starting services..." + $COMPOSE_CMD up -d + echo "✅ Running. Access: http://:8080 | Admin / zabbix" + exit 0 +fi + +echo "[+] Generating secure DB passwords..." +DB_ROOT_PASS=$(openssl rand -hex 16) +DB_ZABBIX_PASS=$(openssl rand -hex 16) + +echo "[+] Creating directories..." +mkdir -p "$ENV_DIR" ./data/db ./data/zabbix_server ./backups + +echo "[+] Writing environment files..." +cat < "$ENV_DIR/.env_db" +MYSQL_ROOT_PASSWORD=${DB_ROOT_PASS} +MYSQL_DATABASE=zabbix +MYSQL_USER=zabbix +MYSQL_PASSWORD=${DB_ZABBIX_PASS} +MYSQL_CHARSET=utf8mb4 +MYSQL_COLLATION=utf8mb4_bin +EOF + +cat < "$ENV_DIR/.env_server" +DB_SERVER_HOST=mariadb +MYSQL_DATABASE=zabbix +MYSQL_USER=zabbix +MYSQL_PASSWORD=${DB_ZABBIX_PASS} +ZBX_STARTPOLLERS=10 +ZBX_STARTTRAPPERS=5 +ZBX_CACHESIZE=256M +ZBX_HISTORYCACHESIZE=4M +ZBX_VALUECACHESIZE=8M +ZBX_TIMEOUT=30 +EOF + +cat < "$ENV_DIR/.env_web" +DB_SERVER_HOST=mariadb +MYSQL_DATABASE=zabbix +MYSQL_USER=zabbix +MYSQL_PASSWORD=${DB_ZABBIX_PASS} +PHP_TZ=Europe/Lisbon +ZBX_SERVER_HOST=zabbix-server +ZBX_SERVER_PORT=10051 +PHP_MAX_EXECUTION_TIME=300 +PHP_MEMORY_LIMIT=128M +EOF + +chmod 600 "$ENV_DIR"/.env_* + +cat < "$CRED_FILE" +# Zabbix Credentials - $(date) +[Database] +DB_ROOT_PASS: ${DB_ROOT_PASS} +DB_ZABBIX_PASS: ${DB_ZABBIX_PASS} +[Web] +User: Admin +Pass: zabbix ⚠️ CHANGE ON FIRST LOGIN +EOF +chmod 600 "$CRED_FILE" + +echo "[+] Starting Zabbix stack..." +$COMPOSE_CMD up -d + +echo "" +echo "==========================================" +echo "✅ ZABBIX DEPLOYED" +echo "==========================================" +echo "🌐 Access: http://:8080" +echo "👤 Admin / 🔑 zabbix" +echo "🔐 DB credentials: $CRED_FILE" +echo ""