Categorías
Software Tecnología Tesla

Cómo configurar TeslaMate con Docker

En este artículo voy a guiarte paso a paso sobre cómo instalar y configurar TeslaMate en su Vultr Instancia en la nube. Desde la selección de la configuración de su VM hasta la instalación y configuración de la herramienta en su máquina virtual. ¿Busca una guía sobre BuyVM? Haga clic aquí.

En este tutorial, utilizo Vultr because they have an ideal way of setting up a docker server with their preset image and getting started very quickly. I also like if you aren’t happy with TeslaMate you can easily destroy the cloud instance and go on with your day. However, see how far you can take it with the $100 en créditos gratuitos (debe utilizar los créditos en un plazo de 30 días)!

| graydonschwartz.com

Características de TeslaMate:

  • Informes de conducción y cobro
  • Informe sobre la eficiencia de la conducción
  • Consumo de energía (neto / bruto)
  • Carga de energía añadida frente a la energía utilizada
  • Drenaje de Vampiros
  • Alcance proyectado del 100% (degradación de la batería)
  • Estadísticas de carga
  • Estadísticas de conducción
  • Historial de actualizaciones instaladas
  • Vea cuando su coche estaba conectado o dormido
  • Mapa de conducción de toda la vida
  • Direcciones visitadas

También puede comprobar el estado de su coche (incluido el nivel de la batería) sin despertar a tu coche.

Vamos a seguir las instrucciones avanzadas de los desarrolladores debido al hecho de que vamos a utilizar una instancia en la nube, alternativamente, usted podría instalar esto en una Rasberry Pi o un ordenador extra que tenía por ahí. Sin embargo, me gusta esta opción con Vultr debido a que es fácil de reproducir para casi todo el mundo.

Despliegue de la nueva instancia

vultrplus20200413 | graydonschwartz.com
Pase el ratón por encima del (+) más y haga clic en Despliegue del nuevo servidor

Elija el servidor: Computación en la nube

vultrchooseservercloudcompute20200413 | graydonschwartz.com
How to Setup TeslaMate with Docker 23


Ubicación del servidor: Chicago (yo he seleccionado Chicago, pero puedes seleccionar lo que más te convenga):

  • Atlanta, Estados Unidos
  • Nueva York (NJ), Estados Unidos
  • Chicago, Estados Unidos
  • Dallas, Estados Unidos
  • Los Ángeles, Estados Unidos
  • Miami, Estados Unidos
  • Seattle, EE.UU.
  • Silicon Valley, Estados Unidos
  • Toronto, CANADÁ
  • Amsterdam, Países Bajos
  • París, Francia
  • Frankfurt, Alemania
  • Londres, Reino Unido
  • Tokio, Japón
  • Singapur, Singapur
  • Sydney, Australia

Tipo de servidor: Aplicación: Docker: En CentOS 7 x64 19.03.4-ce

vultrservertypeappdocker20200413 | graydonschwartz.com
How to Setup TeslaMate with Docker 24

Tamaño del servidor: 25 GB SSD
$5,00/mes O $0,007/h
1 CPU
1024MB Memoria*
1000 GB Ancho de banda

vultrserversize20200413 | graydonschwartz.com
Cómo configurar TeslaMate con Docker 25

*Nota: Docker requiere un plan con al menos 768MB de memoria.

Haga clic en ¡Despliegue ahora!

vultrdeploynow20200413 | graydonschwartz.com
Cómo configurar TeslaMate con Docker 26

Haga clic en Productos

vultrproducts20200413 | graydonschwartz.com
Cómo configurar TeslaMate con Docker 27
vultryourproducts20200413 | graydonschwartz.com
Cómo configurar TeslaMate con Docker 28

Información del servidor

vultrserverinfodocker20200413 | graydonschwartz.com
Cómo configurar TeslaMate con Docker 29

Descargar PuTTY

Introduzca la dirección IP
y haga clic en ¡Abierto!

GUIDE: Advanced Docker install (Traefik, Let’s Encrypt, HTTPS, HTTP Basic Auth)

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Configuración - docker-compose.yml

versión: "3"

servicios:
  teslamate:
    imagen: teslamate/teslamate:latest
    reinicio: siempre
    depende_de:
      - base de datos
    entorno:
      - DATABASE_USER=${TM_DB_USER}
      - DATABASE_PASS=${TM_DB_PASS}
      - DATABASE_NAME=${TM_DB_NAME}
      - DATABASE_HOST=base de datos
      - MQTT_HOST=mosquitto
      - VIRTUAL_HOST=${FQDN_TM}
      - CHECK_ORIGIN=true
      - TZ=${TM_TZ}
    volúmenes:
      - ./import:/opt/app/import
    etiquetas:
      - "traefik.enable=true"
      - "traefik.port=4000"
      - "traefik.http.middlewares.redirect.redirectscheme.scheme=https"
      - "traefik.http.middlewares.teslamate-auth.basicauth.realm=teslamate"
      - "traefik.http.middlewares.teslamate-auth.basicauth.usersfile=/auth/.htpasswd"
      - "traefik.http.routers.teslamate-insecure.rule=Host(`${FQDN_TM}`)"
      - "traefik.http.routers.teslamate-insecure.middlewares=redirect"
      - "traefik.http.routers.teslamate-ws.rule=Host(`${FQDN_TM}`) && Path(`/live/websocket`)"
      - "traefik.http.routers.teslamate-ws.entrypoints=websecure"
      - "traefik.http.routers.teslamate-ws.tls"
      - "traefik.http.routers.teslamate.rule=Host(`${FQDN_TM}`)"
      - "traefik.http.routers.teslamate.middlewares=teslamate-auth"
      - "traefik.http.routers.teslamate.entrypoints=websecure"
      - "traefik.http.routers.teslamate.tls.certresolver=tmhttpchallenge"
    cap_drop:
      - todos

  base de datos:
    image: postgres:13
    reinicio: siempre
    entorno:
      - POSTGRES_USER=${TM_DB_USER}
      - POSTGRES_PASSWORD=${TM_DB_PASS}
      - POSTGRES_DB=${TM_DB_NAME}
    volúmenes:
      - teslamate-db:/var/lib/postgresql/data

  grafana:
    image: teslamate/grafana:latest
    reinicio: siempre
    entorno:
      - DATABASE_USER=${TM_DB_USER}
      - DATABASE_PASS=${TM_DB_PASS}
      - DATABASE_NAME=${TM_DB_NAME}
      - DATABASE_HOST=base de datos
      - 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=%(protocolo)s://%(dominio)s/grafana
      - GF_SERVER_SERVE_FROM_SUB_PATH=true

    volúmenes:
      - teslamate-grafana-data:/var/lib/grafana
    etiquetas:
      - "traefik.enable=true"
      - "traefik.port=3000"
      - "traefik.http.middlewares.redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.grafana-insecure.rule=Host(`${FQDN_TM}`)"
      - "traefik.http.routers.grafana-insecure.middlewares=redirect"
      - "traefik.http.routers.grafana.rule=Path(`/grafana`) || PathPrefix(`/grafana/`)"
      - "traefik.http.routers.grafana.entrypoints=websecure"
      - "traefik.http.routers.grafana.tls.certresolver=tmhttpchallenge"

  mosquitto:
    image: eclipse-mosquitto:2
    reinicio: siempre
    comando: mosquitto -c /mosquitto-no-auth.conf
    puertos:
      - 127.0.0.1:1883:1883
    volúmenes:
      - mosquitto-conf:/mosquitto/config
      - mosquitto-data:/mosquitto/data

  proxy:
    imagen: traefik:v2.4
    reinicio: siempre
    comando:
      - "--global.sendAnonymousUsage=false"
      - "--providers.docker"
      - "--providers.docker.exposedByDefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.tmhttpchallenge.acme.httpchallenge=true"
      - "--certificatesresolvers.tmhttpchallenge.acme.httpchallenge.entrypoint=web"
      - "--certificatesresolvers.tmhttpchallenge.acme.email=${LETSENCRYPT_EMAIL}"
      - "--certificatesresolvers.tmhttpchallenge.acme.storage=/etc/acme/acme.json"
    puertos:
      - 80:80
      - 443:443
    volúmenes:
      - ./.htpasswd:/auth/.htpasswd
      - ./acme/:/etc/acme/
      - /var/run/docker.sock:/var/run/docker.sock:ro

volúmenes:
  teslamate-db:
  teslamate-grafana-data:
  mosquitto-conf:
  mosquitto-data:

Configuración - .env

TM_DB_USER=teslamate
TM_DB_PASS=secreto
TM_DB_NAME=teslamate

GRAFANA_USER=admin
GRAFANA_PW=admin

FQDN_TM=teslamate.example.com

TM_TZ=Europa/Berlín

LETSENCRYPT_EMAIL=yourperson@example.com

Configuración - .htpasswd

Según la documentación de TeslaMate. Le recomiendo que utilice esta herramienta para crear su archivo .htpasswd:
http://www.htaccesstools.com/htpasswd-generator/
Ingrese su deseo nombre de usuario, contraseña y seleccione Bcrypt (Apache v2.4 en adelante)
En el siguiente ejemplo, he introducido nombre de usuario y contraseña para estos campos:

Ejemplo:

mi:$2y$10$as5PEnYaoGEx2ebCFjdK0e9PBshAsvzIeAKijwNgeMSC9oJkDNo2.

Ahora copie y pegue esta información en su archivo .htpasswd.

vi .htpasswd (o su editor de texto favorito)

Asegúrese de configurar su contraseña antes de iniciar el Teslamate con Docker.

docker-compose up

Nota: Es posible que tenga que ejecutar este comando dos veces para que funcione.



Configuración del DNS

Tendrá que apuntar teslamate.example.com + grafana.exampe.com (su subdominio) a la dirección IP que le proporcionó Vultr cuando creó su servidor virtual. Para ello, póngase en contacto con su proveedor de servicios de Internet o acceda a su panel de control para gestionar sus registros DNS y añadir estas entradas.

Cómo iniciar sesión en TeslaMate

  1. Abrir la interfaz web https://teslamate.example.com
    Inicie sesión con los datos que introdujo en el archivo .htpasswd y, a continuación, se le pedirá que inicie sesión con su cuenta de Tesla.
  2. Inicia sesión con tu cuenta de Tesla
  3. Los cuadros de mando de Grafana están disponibles en: https://grafana.example.com.
  4. Introduzca el nombre de usuario y la contraseña:admin:admin primero y se le pedirá que cambie la contraseña en su primer acceso.

He gastado $0,01 o 1 céntimo para probar Teslamate. $0.02 para completar el tutorial 🙂 .

vultrdockercloudinstance | graydonschwartz.com
Panel de control de Vultr

Puedes cambiar de Celcius a Fahrenheit y de Kilómetros a Millas en los ajustes.

teslamatehomescreenfeb212020 | graydonschwartz.com
Pantalla de inicio de TeslaMate

Este es el aspecto de la pantalla de inicio. También verás un mapa con un pin sobre la ubicación de tu vehículo Tesla.

teslamatehomescreencharging1kwfeb212020 | graydonschwartz.com
5 mi/hr | 12A | 3kW

Fui a una sesión de carga en el enchufe normal de 12a más cercano para mostrar cómo es una sesión de carga con TeslaMate. Una interfaz limpia 🙂 .

teslamatehomescreencharging3kwfeb212020 | graydonschwartz.com
13 mi/hr | 16A | 3kW
teslamatecharginggraph3kwfeb212020 | graydonschwartz.com
13 mi/hr | 16A | 3kW

Actualización del 10 de marzo de 2020

TeslaMate lanzó una actualización a la v1.17.1 hace unos 16 días.

  • Añadir Tablero de viaje: Este panel se ha creado para visualizar los viajes más largos. Ofrece una visión general de todos los trayectos y cargas que se han registrado durante un periodo de varias horas o días.
  • Página de lanzamiento de TeslaMate

Estoy muy emocionada por probar este nuevo Tablero de viaje añadido en la nueva versión. Esto será súper útil para los viajes por carretera de Tesla, por supuesto 🙂 .

Esta es la documentación que he utilizado para construir partes de este tutorial:
https://docs.teslamate.org/docs/guides/traefik
https://docs.teslamate.org/docs/guides/portainer

Actualización del 21 de marzo de 2020

Cómo utilizar la nueva función de viaje aparte de Teslamate:

  1. Abrir la interfaz web https://teslamate.example.com
  2. Cuadros de mando => Pulse o haga clic en "Viaje
  3. Pulse o haga clic en "Hoy hasta ahora
  4. Seleccione la preselección de "Últimos 5 minutos", hasta llegar a "Últimos 5 años" o la selección de un rango de fechas personalizado.
teslamatehomescreenmarch212020 | graydonschwartz.com
Pantalla de inicio de TeslaMate
teslamatehomescreenmarch212020 1 | graydonschwartz.com
Pulse o pase el ratón por encima de "Cuadros de mando
teslamatehomescreenmarch212020 2 | graydonschwartz.com
Pulse o haga clic en "Viaje
teslamatehomescreenmarch212020 3 | graydonschwartz.com
Seleccione la preselección de "Últimos 5 minutos", hasta llegar a "Últimos 5 años" o la selección de un rango de fechas personalizado.
teslamatetriplast1yearch212020 | graydonschwartz.com
TeslaMate > Ejemplo de viaje
teslamatehomescreenmarch212020 4 | graydonschwartz.com
TeslaMate > Ejemplo de viaje (primer plano)

Espero que esta guía de configuración te haya resultado útil 🙂 .

| graydonschwartz.com

Por Graydon Schwartz

Más información sobre Graydon en el Sobre mí página.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *