teslamate Docker & Self-Hosted Deployment

GitHub

A self-hosted data logger for your Tesla ๐Ÿš˜ [main maintainer=@JakobLichterfeld]

1. Pull Image (DOCKERHUB) docker pull teslamate-org/teslamate:latest
2. Docker Run (1-Click Launch) docker run -d --name teslamate -p 3000:3000 --restart always teslamate-org/teslamate:latest
3. Podman Run podman run -d --name teslamate -p 3000:3000 --restart always teslamate-org/teslamate:latest
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/teslamate-org/teslamate:latest
5. ORAS Pull (OCI Artifact) oras pull teslamate-org/teslamate:latest
grafana/Dockerfile
# NOTICE and LICENSE, made read-only here: --chmod on the final COPY would also
# apply to the directory it creates and lock out the runtime user.
FROM scratch AS legal
COPY --chmod=444 NOTICE LICENSE /legal/

# Ensure selecting a tag that is available for arm64 and amd64
# https://hub.docker.com/r/grafana/grafana/tags
FROM grafana/grafana:13.2.3

ENV GF_ANALYTICS_REPORTING_ENABLED=false \
    GF_ANALYTICS_CHECK_FOR_UPDATES=false \
    GF_ANALYTICS_CHECK_FOR_PLUGIN_UPDATES=false \
    GF_ANALYTICS_FEEDBACK_LINKS_ENABLED=false \
    GF_AUTH_ANONYMOUS_ENABLED=false \
    GF_AUTH_BASIC_ENABLED=false \
    GF_SECURITY_ADMIN_PASSWORD=admin \
    GF_SECURITY_ADMIN_USER=admin \
    GF_SECURITY_ALLOW_EMBEDDING=true \
    GF_SECURITY_DISABLE_GRAVATAR=true \
    GF_DATABASE_HIGH_AVAILABILITY=false \
    GF_USERS_ALLOW_SIGN_UP=false \
    GF_USERS_DEFAULT_LANGUAGE=detect \
    GF_DASHBOARDS_DEFAULT_HOME_DASHBOARD_PATH=/dashboards_internal/home.json \
    GF_DATE_FORMATS_USE_BROWSER_LOCALE=true \
    GF_PLUGINS_PREINSTALL_DISABLED=true \
    GF_UNIFIED_ALERTING_ENABLED=false \
    GF_METRICS_ENABLED=false \
    GF_RECORDING_RULES_ENABLED=false \
    GF_CLOUD_MIGRATION_ENABLED=false \
    GF_FEATURE_TOGGLES_provisioning=false \
    GF_FEATURE_TOGGLES_splashScreen=false \
    GF_FEATURE_TOGGLES_dashboardNewLayouts=false \
    DATABASE_PORT=5432 \
    DATABASE_SSL_MODE=disable

COPY --from=legal /legal/ /usr/share/doc/teslamate/

USER grafana

COPY grafana/logo.svg /usr/share/grafana/public/build/img/grafana_icon.svg

RUN LOGO_PATH=$(find /usr/share/grafana/public/build/static/img/ -type f -name 'grafana_icon.*.svg') && \
    cp /usr/share/grafana/public/build/img/grafana_icon.svg "$LOGO_PATH" || true

COPY grafana/favicon.png /usr/share/grafana/public/build/img/fav32.png
COPY grafana/apple-touch-icon.png /usr/share/grafana/public/build/img/apple-touch-icon.png

COPY grafana/datasource.yml /etc/grafana/provisioning/datasources/
COPY grafana/dashboards.yml /etc/grafana/provisioning/dashboards/
COPY grafana/dashboards/internal/*.json /dashboards_internal/
COPY grafana/dashboards/reports/*.json /dashboards_reports/
COPY grafana/dashboards/*.json /dashboards/

EXPOSE 3000