networks: proxy_network: external: true 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 expose: - "4000" networks: - proxy_network # Database for TeslaMate 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: - proxy_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 expose: - "3000" networks: - proxy_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: - proxy_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' - '--storage.tsdb.retention.time=5y' - '--web.console.libraries=/etc/prometheus/console_libraries' - '--web.console.templates=/etc/prometheus/consoles' - '--web.enable-lifecycle' expose: - 9090 networks: - proxy_network snmp-exporter: image: quay.io/prometheus/snmp-exporter container_name: snmp-exporter expose: - 9116 - 116/udp volumes: - /app-config/snmp-exporter:/etc/snmp-exporter/ restart: always command: --config.file=/etc/snmp-exporter/snmp.yml networks: - proxy_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 expose: - "8086" - "8086/udp" networks: - proxy_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: - proxy_network loki: image: grafana/loki:latest container_name: loki expose: - "3100" command: -config.file=/etc/loki/local-config.yaml networks: - proxy_network volumes: - /app-config/loki/loki-config.yaml:/etc/loki/local-config.yaml - /app-config/loki/data:/data restart: unless-stopped uptime-kuma: container_name: kuma image: louislam/uptime-kuma:2 volumes: - /app-config/kuma:/app/data ports: - 10.200.200.254:3001:3001 restart: unless-stopped networks: - proxy_network waha: restart: always container_name: waha image: devlikeapro/waha:latest networks: - proxy_network dns: - 1.1.1.1 - 8.8.8.8 logging: driver: 'json-file' options: max-size: '100m' max-file: '10' ports: - '10.200.200.254:3000:3000/tcp' volumes: - '/app-config/waha/sessions:/app/.sessions' - '/app-config/waha/media:/app/.media' environment: - WAHA_API_KEY=1c3fc7082a0142c78a532324ca1ab2ab - WAHA_DASHBOARD_USERNAME=sascha - WAHA_DASHBOARD_PASSWORD=GT500r8! - WHATSAPP_SWAGGER_USERNAME=sascha - WHATSAPP_SWAGGER_PASSWORD=GT500r8! - WAHA_DASHBOARD_ENABLED=True - WHATSAPP_SWAGGER_ENABLED=True - WHATSAPP_DEFAULT_ENGINE=WEBJS - WAHA_BASE_URL=http://10.200.200.254:3000 - WAHA_MEDIA_STORAGE=LOCAL - WHATSAPP_FILES_LIFETIME=0 - WHATSAPP_FILES_FOLDER=/app/.media - TZ=Europe/Berlin - WHATSAPP_WEB_AUTOMATION=true - WHATSAPP_WEB_AUTO_RECONNECT=true apprise-api: image: lscr.io/linuxserver/apprise-api:latest container_name: apprise-api networks: - proxy_network environment: - PUID=1000 - PGID=1000 - TZ=Europe/Berlin #- APPRISE_ATTACH_SIZE=0 #optional volumes: - /app-config/apprise-api/config:/config - /app-config/apprise-api/attachments:/attachments #optional expose: - 8000 restart: unless-stopped promtail: image: grafana/promtail:latest container_name: promtail volumes: - /app-config/promtail/promtail-config.yaml:/etc/promtail/config.yaml - /app-config/caddy/logs/:/var/log/caddy # Log-Verzeichnis von Caddy - /app-config/loki/promtail/promtail_positions:/promtail/positions command: -config.file=/etc/promtail/config.yaml depends_on: - loki networks: - proxy_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 pmacctd: image: pmacct/pmacct:latest container_name: pmacctd network_mode: host volumes: - /app-config/pmacct/pmacctd.conf:/etc/pmacct/pmacctd.conf:ro restart: unless-stopped