Categorías
Tecnología Tesla

Configurar TeslaMate autoalojado por $2 al mes en una porción de BuyVM

En este artículo voy a guiarte paso a paso sobre cómo instalar TeslaMate en su BuyVM Slice. 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 Vultr? Haga clic aquí. De lo contrario, siga leyendo para aprender a configurar TeslaMate auto-alojado para $2 por mes en un BuyVM Slice.

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.

Selección de SLICE

En este tutorial utilizaremos el SLICE 512 de BuyVM que incluye 1 núcleo a más de 3,50 GHz (se aplica el uso justo de la CPU), 512 MB de memoria, 10 GB de almacenamiento SSD y ancho de banda no medido.

buyvmsliceplans 512andup 20200529 | Graydon Schwartz
Nota: Los SLICE 4096 ($15) y superiores incluyen el uso de una CPU dedicada.

Recomiendo contratar uno de sus nuevos VPS AMD Ryzen en el Centro de Datos de Las Vegas para volver a aparecer porque son de mayor rendimiento, totalmente nuevos y sin coste adicional. También ofrecen servidores en la nube en Nueva York y Luxemburgo pero con hardware Intel más antiguo.

He utilizado más memoria antes para el alojamiento de TeslaMate, pero encontré 512 MB ha sido suficiente para ejecutar TeslaMate para un Modelo 3 y el acceso para mí solamente.

Pedir una rebanada

buyvm order512slice 20200529 | Graydon Schwartz
Fuera del calcetín.
  1. Seleccione una ubicación:
    Pedido - Las Vegas
    Pedido - Nueva York
    Pedido - Luxemburgo
  2. ¿Qué te gustaría hacer hoy? Haz clic en 'Pedir alojamiento‘.
  3. Seleccione el tamaño de su rodaja y haga clic en 'Pedir ahora‘.
  4. Introduzca su dominio o subdominio en el formulario de pedido.
    Ejemplo: teslamate.tesla.com
  5. Aceptan PayPal, Stripe, junto con un montón de otras opciones. Asegúrese de que la información de su cuenta coincide con la información de pago o su compra puede ser cancelada.

La instalación debería producirse en un plazo de 1 a 3 horas durante el horario laboral habitual, pero las nuevas cuentas pueden tardar hasta 24 horas. Los pedidos realizados durante el fin de semana se activan el lunes si no hay nadie disponible.

Requisito previo

  1. LV RYZEN KVM de 512MB o superior
  2. Dos FQDN, por ejemplo teslamate.example.com y grafana.example.com
  3. Cliente PuTTY SSH

Entrar en Stallion

buyvmstallionloginscreen20200529 | Graydon Schwartz
Configurar TeslaMate autoalojado por $2 al mes en una BuyVM Slice 7

Stallion es la interfaz web que BuyVM ha desarrollado para que usted pueda cargar su slice con un sistema operativo, ver el estado y gestionar todas las demás tareas de su servidor virtual. Encontrará un enlace a Stallion en la parte superior de la página cuando inicie sesión en el portal del cliente frantech.

Tendremos que configurar Docker manualmente porque no hay un Docker preconfigurado pero realmente no es ningún problema para configurarlo.

Seleccione la imagen y encienda la VM

buyvm reinstallos7 64bit 20200529 | Graydon Schwartz
Configurar TeslaMate autoalojado por $2 al mes en una BuyVM Slice 8

Seleccione 'Reinstalación' en el menú de pestañas. Ahora, haga clic en 'Redhat Based (7)' de la lista de la izquierda. Haz clic en "Reinstalar" junto a "CentOS 7.0 64bit" para que aparezca el aviso de instalación. Se le pedirá que introduzca una contraseña. Se trata de la contraseña de root (o de administración) de su servidor virtual. Asegúrese de escribirla en un lugar seguro.

Haga clic en la casilla de verificación por: Sí, por favor, borre todos los datos de yourhostname.com (IP ADDRESS)

Haz clic en "Reinstalar" cuando estés listo para proceder.

Instalación manual de Docker

Instale el paquete yum-utils (que proporciona la utilidad yum-config-manager)

sudo yum install -y yum-utils

y establecer el estable depósito.

sudo yum-config-manager \ ~ - add-repo \ ~ -.
    --add-repo \ ~ -
    https://download.docker.com/linux/centos/docker-ce.repo

Instale el última versión de Docker Engine y containerd:

sudo yum install docker-ce docker-ce-cli containerd.io

Inicie Docker.

sudo systemctl start docker

Verificar

sudo docker run hello-world

Configurar Docker para que se inicie en el arranque

sudo systemctl enable docker

Para desactivar este comportamiento, utilice desactivar en su lugar:

sudo systemctl disable docker

Fuente: Docker

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.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.rule=Host(`${FQDN_TM}`)"
      - "traefik.http.routers.teslamate.middlewares=auth"
      - "traefik.http.routers.teslamate.entrypoints=websecure"
      - "traefik.http.routers.teslamate.tls.certresolver=tmhttpchallenge"

  base de datos:
    imagen: postgres:12
    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_BASIC_ENABLED=true
      - GF_AUTH_ANONYMOUS_ENABLED=false
      - GF_SERVER_ROOT_URL=https://${FQDN_GRAFANA}
    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_GRAFANA}`)"
      - "traefik.http.routers.grafana-insecure.middlewares=redirect"
      - "traefik.http.routers.grafana.rule=Host(`${FQDN_GRAFANA}`)"
      - "traefik.http.routers.grafana.entrypoints=websecure"
      - "traefik.http.routers.grafana.tls.certresolver=tmhttpchallenge"

  mosquitto:
    imagen: eclipse-mosquitto:1.6
    reinicio: siempre
    puertos:
      - 127.0.0.1:1883:1883
    volúmenes:
      - mosquitto-conf:/mosquitto/config
      - mosquitto-data:/mosquitto/data

  proxy:
    imagen: traefik:v2.1
    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_GRAFANA=grafana.ejemplo.com
FQDN_TM=teslamate.ejemplo.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ó BuyShared cuando creó su servidor virtual. Esto se hace poniéndose en contacto con su proveedor de alojamiento web o entrando en su panel de control para gestionar sus registros DNS y hacer que se añadan 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.

¿Actualización disponible?

Siempre compruebo el notas de publicación antes de la actualización.

docker-compose pull

[root@localhost ~]# docker-compose pull
Extrayendo la base de datos ... hecho
Extrayendo teslamate ... hecho
Extrayendo grafana ... hecho
Extrayendo mosquitto ... hecho
Extrayendo proxy ... hecho

docker-compose up

[root@localhost ~]# docker-compose up
Recreando root_grafana_1 ...
Recreando root_database_1 ...
Recreando root_grafana_1 ... hecho
Recreando base de datos raíz_1 ... hecho
Recreando root_teslamate_1 ... hecho
....mensajes de actualización
16:57:45.350 [info] Tzdata ha actualizado la versión de 2019c a 2020a

Su instalación se ha actualizado y puede cerrar el terminal. Usted puede comprobar la versión iniciando sesión en su panel de control TeslaMate.

Protección extra

Empecemos por desactivar/desinstalar FirewallD:

sudo yum remove -y firewalld

Ahora, vamos a instalar/activar IPTables.

sudo yum install -y iptables-services
sudo systemctl start iptables

Configurar IPTables para que se inicie automáticamente en el momento del arranque.

sudo systemctl enable iptables

IPTables en CentOS 7 viene con un conjunto de reglas por defecto, que puede ver con el siguiente comando.

sudo iptables -L -n

La salida se parecerá:

Cadena INPUT (política ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Cadena FORWARD (política ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Cadena OUTPUT (política ACCEPT)
target prot opt source destination

Puedes ver que una de esas reglas permite el tráfico SSH, por lo que tu sesión SSH es segura.

Dado que esas reglas son reglas en tiempo de ejecución y se perderán al reiniciar, es mejor guardarlas en un archivo utilizando:

sudo /usr/libexec/iptables/iptables.init save

Ese comando guardará las reglas en el /etc/sysconfig/iptables archivo. Puede editar las reglas en cualquier momento cambiando este archivo con su editor de texto favorito.

A continuación, permita el tráfico adicional a través del cortafuegos

Como lo más probable es que vayas a utilizar tu nuevo servidor para alojar algunos sitios web en algún momento, tendrás que añadir nuevas reglas al cortafuegos para permitir el tráfico HTTP y HTTPS. Para lograrlo, abre el archivo IPTables:

sudo nano /etc/sysconfig/iptables

Justo después o antes de la regla SSH, añada las reglas para el tráfico HTTP (puerto 80) y HTTPS (puerto 443), de modo que esa parte del archivo aparezca como se muestra en el bloque de código siguiente.

-A INPUT -p tcp -m estado --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m estado --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m estado --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited

Guarde y cierre el archivo, y vuelva a cargar IPTables.

sudo systemctl reload iptables

Una vez completado el paso anterior, su servidor CentOS 7 debería ser razonablemente seguro y estar listo para su uso en producción.

¿Otra seguridad?

Quiero adelantar esta siguiente idea diciendo que puede tener problemas porque el certificado SSL de TeslaMate requiere que los subdominios apunten a la dirección IP de su VPS, sin embargo, si lo oculta detrás de Cloudflare, este no será el caso y el SSL no se renovará en los reinicios de TeslaMate. Por lo tanto, ya no recomiendo la habilitación de CF hasta que esté totalmente soportado por el desarrollador. Lo voy a dejar aquí para que sirva de reflexión.

cloudflare | Graydon Schwartz
Configurar TeslaMate autoalojado por $2 al mes en una BuyVM Slice 9

Este es un paso extra que no es necesario para empezar, pero que puede proporcionar un poco más de seguridad a tus subdominios. Regístrese en Cloudflare¡! Es un servicio gratuito que protege y acelera su sitio web.

  1. Haga clic en "DNS".
  2. Para su grafana (A Record):
    Establecer Estado de la representación a Proxy.
  3. Además, para su teslamate (A Record):
    Establecer Estado de la representación a Proxy.

Ahora notará que si hace ping a sus subdominios ahora tienen un ping más bajo y una dirección IP diferente porque ahora está enrutando su tráfico a través de la red de Cloudflare y su dirección IP con BuyVM está ahora oculta durante las peticiones DNS.

He probado a activar el modo proxy durante un tiempo y no he encontrado ningún problema hasta ahora.

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

Repartos asequibles de BuyVM

Por Graydon Schwartz

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

Compartir a...