This guide uses Docker Compose to run Cacti network monitoring with MySQL backend.
For Docker installation, see Docker.
mkdir -p /opt/cacti/{data,config}
cd /opt/cacti
Create docker-compose.yml:
services:
mariadb:
image: mariadb:11
container_name: cacti-mariadb
environment:
- MYSQL_ROOT_PASSWORD=root_password
- MYSQL_DATABASE=cacti
- MYSQL_USER=cacti
- MYSQL_PASSWORD=cacti_password
volumes:
- ./data/mysql:/var/lib/mysql
restart: unless-stopped
networks:
- cacti
cacti:
image: sm0ke/cacti:latest
container_name: cacti
depends_on:
- mariadb
ports:
- "80:80"
volumes:
- ./data/cacti:/var/www/html
- ./config/www.conf:/usr/local/etc/php-fpm.d/www.conf:ro
environment:
- DB_HOST=mariadb
- DB_NAME=cacti
- DB_USER=cacti
- DB_PASS=cacti_password
- DB_ROOT=root_password
restart: unless-stopped
networks:
- cacti
networks:
cacti:
driver: bridge
docker compose up -d
Note: Initial startup may take 3-5 minutes for database initialization.
Check container status:
docker compose ps
View logs:
docker compose logs -f cacti
Access web UI at http://SERVER_IP and complete the installation wizard.
Default credentials after installation:
adminadmin (change immediately!)docker compose exec cacti bash
docker compose restart cacti
docker compose down
docker compose pull
docker compose up -d
docker compose exec cacti php /var/www/html/poller.php
./data directoryAdd SNMP community strings in Cacti web UI under:
Deploying Cacti in containers for production? Our consulting covers:
Get expert help: office@linux-server-admin.com | Contact Page