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 instancia de Vultr Cloud. 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? Guía de BuyVM.

En este tutorial, utilizo Vultr porque tienen una forma ideal de configurar un servidor Docker con su imagen preestablecida y empezar muy rápidamente. También me gusta que si no estás contento con TeslaMate puedes destruir fácilmente la instancia en la nube y seguir con tu día. Sin embargo, ver hasta qué punto se puede tomar con el $100 en créditos gratuitos (debe utilizar los créditos en un plazo de 30 días)!

$100 en créditos gratuitos
Ganamos una comisión si usted realiza una compra, sin coste adicional para usted.

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 | Graydon Schwartz
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 | Graydon Schwartz
Cómo configurar TeslaMate con Docker 24


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 | Graydon Schwartz
Cómo configurar TeslaMate con Docker 25

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

vultrserversize20200413 | Graydon Schwartz
Cómo configurar TeslaMate con Docker 26

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

Haga clic en ¡Despliegue ahora!

vultrdeploynow20200413 | Graydon Schwartz
Cómo configurar TeslaMate con Docker 27

Haga clic en Productos

vultrproducts20200413 | Graydon Schwartz
Cómo configurar TeslaMate con Docker 28
vultryourproducts20200413 | Graydon Schwartz
Cómo configurar TeslaMate con Docker 29

Información del servidor

vultrserverinfodocker20200413 | Graydon Schwartz
Cómo configurar TeslaMate con Docker 30

Descargar PuTTY

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

GUÍA: Instalación avanzada de Docker (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 | Graydon Schwartz
Panel de control de Vultr

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

teslamatehomescreenfeb212020 | Graydon Schwartz
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 | Graydon Schwartz
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 | Graydon Schwartz
13 mi/hr | 16A | 3kW
teslamatecharginggraph3kwfeb212020 | Graydon Schwartz
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 | Graydon Schwartz
Pantalla de inicio de TeslaMate
teslamatehomescreenmarch212020 1 | Graydon Schwartz
Pulse o pase el ratón por encima de "Cuadros de mando
teslamatehomescreenmarch212020 2 | Graydon Schwartz
Pulse o haga clic en "Viaje
teslamatehomescreenmarch212020 3 | Graydon Schwartz
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 | Graydon Schwartz
TeslaMate > Ejemplo de viaje
teslamatehomescreenmarch212020 4 | Graydon Schwartz
TeslaMate > Ejemplo de viaje (primer plano)

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

| Graydon Schwartz

Por Graydon Schwartz

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Compartir a...