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:4000" networks: - monitoring_network # Database for TeslaMate teslamate_database: image: postgres:13 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 for TeslaMate 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:3000" networks: - monitoring_network # Mosquitto MQTT Broker 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 Monitoring 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' - '--web.console.libraries=/etc/prometheus/console_libraries' - '--web.console.templates=/etc/prometheus/consoles' - '--web.enable-lifecycle' expose: - 9090 networks: - monitoring_network # InfluxDB 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" - "8086:8086/udp" networks: - monitoring_network # Emby Exporter 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/ expose: - 9210 restart: unless-stopped networks: - monitoring_network loki: image: grafana/loki:latest ports: - "3100:3100" command: -config.file=/etc/loki/local-config.yaml networks: - monitoring_network volumes: - /app-config//loki/loki-config.yaml:/etc/loki/local-config.yaml