Cacti Docker Container on Raspberry Pi 5¶
The following is a sample docker-compose.yml file intended for creating a Stack on Portainer.
Cacti - Docker Compose¶
# Cacti Docker Compose for Raspberry Pi 5 (ARM64)
# Based on joehorn/cacti with MariaDB backend
# Optimized for Portainer Stack deployment (no external config files needed)
services:
cacti:
image: joehorn/cacti:latest
container_name: cacti
hostname: cacti
restart: unless-stopped
ports:
- "8080:80"
- "8443:443"
environment:
- DB_HOST=db
- DB_PORT=3306
- DB_NAME=cacti
- DB_USER=cacti
- DB_PASS=cactipassword
- DB_ROOT_PASS=rootpassword
- INITIALIZE_DB=1
- TZ=America/New_York
- PHP_MEMORY_LIMIT=512M
- PHP_MAX_EXECUTION_TIME=60
volumes:
- cacti_data:/cacti
- cacti_spine:/spine
- cacti_backups:/backups
- cacti_rra:/var/lib/cacti/rra
- /opt/cf-origin-cert/ocelot-coyotelabs-com-cf-origin.crt:/etc/ssl/certs/cacti.crt:ro
- /opt/cf-origin-cert/ocelot-coyotelabs-com-cf-origin.key:/etc/ssl/certs/cacti.key:ro
depends_on:
db:
condition: service_healthy
networks:
- cacti_network
db:
image: mariadb:10.11
container_name: cacti_db
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=rootpassword
- MYSQL_DATABASE=cacti
- MYSQL_USER=cacti
- MYSQL_PASSWORD=cactipassword
- TZ=America/New_York
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --max_connections=100
- --max_allowed_packet=32M
- --innodb_file_per_table=ON
- --innodb_buffer_pool_size=512M
- --innodb_doublewrite=ON
- --innodb_lock_wait_timeout=50
- --innodb_flush_log_at_timeout=3
- --innodb_read_io_threads=16
- --innodb_write_io_threads=8
- --innodb_buffer_pool_instances=4
- --innodb_io_capacity=1000
- --innodb_io_capacity_max=2000
- --max_heap_table_size=64M
- --tmp_table_size=64M
- --join_buffer_size=32M
- --slow_query_log=0
- --general_log=0
volumes:
- db_data:/var/lib/mysql
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
networks:
- cacti_network
volumes:
cacti_data:
cacti_spine:
cacti_backups:
cacti_rra:
db_data:
networks:
cacti_network:
driver: bridge
Cloudflare Origin Certificate¶
Generate a Cloudflare origin certificate and place the files under /opt/cf-origin-certs