networks: monitoring_network: name: monitoring_network services: teslamate: image: teslamate/teslamate:latest container_name: teslamate restart: always depends_on: - teslamate_database environment: - DATABASE_USER=${TM_DB_USER} - DATABASE_PASS=${TM_DB_PASS} - DATABASE_NAME=${TM_DB_NAME} - DATABASE_HOST=teslamate_database - MQTT_HOST=mosquitto - VIRTUAL_HOST=${FQDN_TM} - CHECK_ORIGIN=true - TZ=${TM_TZ} - ENCRYPTION_KEY=${ENCRYPTION_KEY} volumes: - /app-config/teslamate_config:/opt/app/import cap_drop: - all ports: - "4000" networks: - monitoring_network teslamate_database: image: postgres:17 container_name: teslamate_database restart: always environment: - POSTGRES_USER=${TM_DB_USER} - POSTGRES_PASSWORD=${TM_DB_PASS} - POSTGRES_DB=${TM_DB_NAME} volumes: - /app-config/teslamate_database:/var/lib/postgresql/data networks: - monitoring_network grafana: image: teslamate/grafana:latest container_name: grafana restart: always environment: - DATABASE_USER=${TM_DB_USER} - DATABASE_PASS=${TM_DB_PASS} - DATABASE_NAME=${TM_DB_NAME} - DATABASE_HOST=teslamate_database - GRAFANA_PASSWD=${GRAFANA_PW} - GF_SECURITY_ADMIN_USER=${GRAFANA_USER} - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PW} - GF_AUTH_ANONYMOUS_ENABLED=false - GF_SERVER_DOMAIN=${FQDN_TM} - GF_SERVER_ROOT_URL=%(protocol)s://grafana.sascha-lutz.de - GF_SERVER_SERVE_FROM_SUB_PATH=true volumes: - /app-config/grafana_data:/var/lib/grafana ports: - "3000" networks: - monitoring_network mosquitto: image: eclipse-mosquitto:2 container_name: mosquitto command: mosquitto -c /mosquitto-no-auth.conf restart: always volumes: - /app-config/mosquitto_config:/mosquitto/config - /app-config/mosquitto_data:/mosquitto/data networks: - monitoring_network prometheus: image: prom/prometheus container_name: prometheus restart: always volumes: - /app-config/prometheus_config:/config/ - /app-config/prometheus_data:/prometheus command: - '--config.file=/config/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--storage.tsdb.retention.time=5y' - '--web.console.libraries=/etc/prometheus/console_libraries' - '--web.console.templates=/etc/prometheus/consoles' - '--web.enable-lifecycle' ports: - 9090 networks: - monitoring_network snmp-exporter: image: quay.io/prometheus/snmp-exporter container_name: snmp-exporter ports: - 9116 - 116/udp volumes: - /app-config/snmp-exporter:/etc/snmp-exporter/ restart: always command: --config.file=/etc/snmp-exporter/snmp.yml networks: - monitoring_network influxdb: image: influxdb:latest restart: always container_name: influxdb environment: - INFLUXDB_UDP_DATABASE=udp - INFLUXDB_UDP_ENABLED=true - INFLUXDB_UDP_BIND_ADDRESS=0.0.0.0:8086 volumes: - /app-config/influxdb_data:/var/lib/influxdb2 ports: - "8086" - "8086/udp" networks: - monitoring_network embyexporter: image: bagul/goemby_exporter:latest container_name: embyexporter environment: - TZ=Europe/Berlin - CONFIG_FILE=/emby/tv.sascha-lutz.de.yml volumes: - /app-config/embyexporter_data:/emby/ ports: - 9210 restart: unless-stopped networks: - monitoring_network node_exporter: image: quay.io/prometheus/node-exporter:latest container_name: node_exporter network_mode: host pid: host volumes: - /proc:/host/proc:ro - /sys:/host/sys:ro - /:/rootfs:ro command: - '--path.procfs=/host/proc' - '--path.sysfs=/host/sys' - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($|/)' restart: unless-stopped