Files
compose-files/teslamate/compose.yaml
T
Arnout van Westen c136dafc5b feat(trn): replace TNC with shell traefik-network-watcher
Own watcher (docker:28-cli + handler.sh): attaches traefik to every docker
network labelled traefik.enable=true (daemon-side filter), 5-min periodic
resync + traefik-restart healing. dawarich/teslamate back on private
networks with the net label set.
2026-10-05 11:05:19 +02:00

170 lines
6.4 KiB
YAML

networks:
teslamate:
labels:
- traefik.enable=true
services:
teslamate:
container_name: "teslamate"
image: teslamate/teslamate:4.3.0
restart: always
networks:
- teslamate
environment:
- "DATABASE_USER=teslamate"
- "DATABASE_NAME=teslamate"
- "DATABASE_HOST=postgresql17"
- "DATABASE_PASS=${DATABASE_PASS}"
- "DATABASE_PORT=5432"
- "MQTT_HOST=192.168.10.54"
- "MQTT_PASSWORD=${MQTT_PASSWORD}"
- "MQTT_TLS_ACCEPT_INVALID_CERTS=true"
- "MQTT_USERNAME=teslamate"
- "HOST_HOSTNAME=Atlas"
- "MQTT_TLS=false"
- "MQTT_PORT=1883"
- "ENCRYPTION_KEY=${ENCRYPTION_KEY}"
ports:
- 4000:4000
volumes:
- ./import:/opt/app/import
cap_drop:
- ALL
labels:
- traefik.enable=true
- traefik.http.routers.teslamate.rule=Host(`teslamate.arnoutvw.nl`)
- traefik.http.services.teslamate.loadbalancer.server.port=4000
postgresql17:
container_name: "postgresql17"
image: postgres:17-alpine3.22
restart: always
networks:
- teslamate
environment:
- "HOST_CONTAINERNAME=postgresql17"
- "POSTGRES_USER=postgres"
- "POSTGRES_DB=postgres"
- "POSTGRES_PASSWORD=${POSTGRES_PASSWORD}"
volumes:
- "/mnt/user/appdata/postgresql17:/var/lib/postgresql/data"
grafana:
container_name: "teslamate-grafana"
image: teslamate/grafana:4.3.0
restart: always
networks:
- teslamate
environment:
- "GF_AUTH_GENERIC_OAUTH_SCOPES=openid profile email"
- "GF_AUTH_GENERIC_OAUTH_TOKEN_URL=https://pass.arnoutvw.nl/api/oidc/token"
- "HOST_OS=Unraid"
- "DATABASE_USER=teslamate"
- "DATABASE_HOST=postgresql17"
- "GF_AUTH_GENERIC_OAUTH_NAME=PocketID"
- "GF_AUTH_GENERIC_OAUTH_ALLOW_SIGN_UP=true"
- "GF_AUTH_DISABLE_LOGIN_FORM=false"
- "GF_USERS_ALLOW_SIGN_UP=false"
- "GF_SERVER_DOMAIN=tesla.arnoutvw.nl"
- "TZ=Europe/Berlin"
- "DATABASE_NAME=teslamate"
- "GF_AUTH_GENERIC_OAUTH_ENABLED=true"
- "GF_AUTH_GENERIC_OAUTH_AUTO_LOGIN=false"
- "GF_AUTH_GENERIC_OAUTH_API_URL=https://pass.arnoutvw.nl/api/oidc/userinfo"
- "GF_USERS_AUTO_ASSIGN_ORG=true"
- "HOST_HOSTNAME=Atlas"
- "DATABASE_PORT=5432"
- "GF_AUTH_GENERIC_OAUTH_AUTH_URL=https://pass.arnoutvw.nl/authorize"
- "GF_USERS_AUTO_ASSIGN_ORG_ROLE=Admin"
- "GF_SERVER_ROOT_URL=https://tesla.arnoutvw.nl/"
- "GF_ANALYTICS_REPORTING_ENABLED=false"
- "GF_AUTH_ANONYMOUS_ENABLED=false"
- "GF_AUTH_BASIC_ENABLED=false"
- "GF_SECURITY_ADMIN_PASSWORD=admin"
- "GF_SECURITY_ADMIN_USER=admin"
- "GF_UNIFIED_ALERTING_ENABLED=false"
- "DATABASE_SSL_MODE=disable"
ports:
- "3004:3000/tcp"
volumes:
- "/mnt/cache/appdata/teslamate-customdashboard/Teslamate-CustomGrafanaDashboards/customdashboards.yml:/etc/grafana/provisioning/dashboards/customdashboards.yml"
- "/mnt/cache/appdata/teslamate-customdashboard/Teslamate-CustomGrafanaDashboards/dashboards:/TeslamateCustomDashboards"
- "/mnt/user/appdata/telsamate-grafana:/var/lib/grafana"
labels:
- traefik.enable=true
- traefik.http.routers.tesla.rule=Host(`tesla.arnoutvw.nl`)
- traefik.http.services.tesla.loadbalancer.server.port=3000
TeslaMate-ABRP:
container_name: "TeslaMate-ABRP"
environment:
- "MQTT_USERNAME=teslamate"
- "CAR_NUMBER=2"
- "TZ=Europe/Berlin"
- "HOST_HOSTNAME=Atlas"
- "MQTT_SERVER=192.168.10.54"
- "USER_TOKEN=9de2d254-39c1-4842-879e-4b0d275d166b"
- "CAR_MODEL=tesla:my:23:my_lfp:rwd"
- "HOST_OS=Unraid"
- "HOST_CONTAINERNAME=TeslaMate-ABRP"
- "MQTT_PASSWORD=${MQTT_PASSWORD}"
image: "fetzu/teslamate-abrp:4.0.1"
labels:
org.opencontainers.image.created: "2025-04-29T20:05:43.419Z"
org.opencontainers.image.description: "A slightly convoluted way of getting your vehicle data from\
\ TeslaMate to A Better Route Planner."
org.opencontainers.image.licenses: "MIT"
org.opencontainers.image.revision: "fb366fd6d98beaaac949db2f951f9fcdd6331d58"
org.opencontainers.image.source: "https://github.com/fetzu/teslamate-abrp"
org.opencontainers.image.title: "teslamate-abrp"
org.opencontainers.image.url: "https://github.com/fetzu/teslamate-abrp"
org.opencontainers.image.vendor: "TeslaMate-ABRP"
org.opencontainers.image.version: "3.3.0"
network_mode: "bridge"
restart: "always"
teslamateapi:
container_name: "teslamateapi"
networks:
- teslamate
image: tobiasehlert/teslamateapi:1.25.0
restart: always
environment:
- "ENCRYPTION_KEY=${ENCRYPTION_KEY}"
- DATABASE_USER=teslamate
- "DATABASE_PASS=${DATABASE_PASS}"
- DATABASE_NAME=teslamate
- DATABASE_HOST=postgresql17
- "MQTT_HOST=192.168.10.54"
- "MQTT_PASSWORD=${MQTT_PASSWORD}"
- "MQTT_TLS_ACCEPT_INVALID_CERTS=true"
- "MQTT_USERNAME=teslamate"
- "HOST_HOSTNAME=Atlas"
- "MQTT_TLS=false"
- "MQTT_PORT=1883"
- TZ=Europe/Berlin
- TESLAMATE_HOST=teslamate
- TESLAMATE_PORT=4000
- API_TOKEN=826d3b8b-daad-48c7-ad3b-8bdaade8c706
ports:
- 4001:8080
labels:
- traefik.enable=true
- traefik.http.routers.teslamateapi.rule=Host(`teslamateapi.arnoutvw.nl`)
- traefik.http.services.teslamateapi.loadbalancer.server.port=8080
- pangolin.proxy-resources.teslamateapi.name=teslamateapi
- pangolin.proxy-resources.teslamateapi.full-domain=teslamateapi.arnoutvw.nl
- pangolin.proxy-resources.teslamateapi.protocol=http
- pangolin.proxy-resources.teslamateapi.ssl=true
- pangolin.proxy-resources.teslamateapi.targets[0].method=http
- pangolin.proxy-resources.teslamateapi.targets[0].hostname=192.168.10.144
- pangolin.proxy-resources.teslamateapi.targets[0].port=4001
- pangolin.proxy-resources.teslamateapi.targets[0].healthcheck.hostname=192.168.10.144
- pangolin.proxy-resources.teslamateapi.targets[0].healthcheck.port=4001
- pangolin.proxy-resources.teslamateapi.targets[0].healthcheck.enabled=true
- pangolin.proxy-resources.teslamateapi.auth.sso-enabled=false
- pangolin.proxy-resources.teslamateapi.rules[0].match=ip
- pangolin.proxy-resources.teslamateapi.rules[0].action=allow
- pangolin.proxy-resources.teslamateapi.rules[0].value=172.21.0.1