Kategorien
Technologie Tesla

Einrichtung eines selbst gehosteten TeslaMate für $2 pro Monat in einem BuyVM-Slice

In diesem Artikel werde ich Ihnen Schritt für Schritt zeigen, wie Sie die TeslaMate auf Ihr BuyVM Slice. Von der Auswahl Ihrer VM-Konfiguration bis zur Installation und Konfiguration des Tools auf Ihrer virtuellen Maschine. Suchen Sie eine Anleitung zu Vultr? Klicken Sie hier. Andernfalls lesen Sie weiter, um zu erfahren, wie Sie TeslaMate für $2 pro Monat in einem BuyVM-Slice selbst hosten können.

TeslaMate Merkmale:

  • Fahr- und Ladeberichte
  • Bericht über die Effizienz des Fahrens
  • Energieverbrauch (netto / brutto)
  • Aufladung Hinzugefügte Energie vs. verbrauchte Energie
  • Vampir-Drainage
  • Voraussichtliche Reichweite des 100% (Batterieverschleiß)
  • Auflade-Statistiken
  • Antriebsstatistiken
  • Historie der installierten Updates
  • Sehen Sie, wann Ihr Auto online war oder schlief
  • Lifetime Driving Map
  • Besuchte Adressen

ALSO überprüfen Sie den Status Ihres Fahrzeugs (inkl. Batteriestand), ohne Ihr Auto aufzuwecken!

SLICE Auswahl

In diesem Lernprogramm verwenden wir das SLICE 512 von BuyVM mit 1 Kern mit 3,50+ GHz (es gilt der faire Anteil der CPU-Nutzung), 512 MB Arbeitsspeicher, 10 GB SSD-Speicher und ungemessene Bandbreite.

kaufenvmsliceplans 512undup 20200529 | graydonschwartz.com
Hinweis: SLICE 4096 ($15) und höher beinhalten dedizierte CPU-Nutzung.

Ich empfehle, sich für einen ihrer neuen AMD Ryzen VPS im Rechenzentrum in Las Vegas anzumelden, da sie leistungsstärker, brandneu und ohne zusätzliche Kosten sind. Sie bieten auch Cloud-Server in New York und Luxemburg an, allerdings mit älterer Intel-Hardware.

Ich habe schon früher mehr Speicher für das Hosting von TeslaMate verwendet, aber ich habe festgestellt, dass 512 MB für den Betrieb von TeslaMate für ein Model 3 und den Zugriff nur für mich selbst völlig ausreichend sind.

Slice bestellen

buyvm order512slice 20200529 | graydonschwartz.com
Aus der Socke.
  1. Wählen Sie einen Ort:
    Bestellung - Las Vegas
    Bestellung - New York
    Bestellung - Luxemburg
  2. Was würden Sie heute gerne tun? Klicken Sie auf 'Hosting bestellen‘.
  3. Wählen Sie die Größe Ihrer Scheibe und klicken Sie auf 'Jetzt bestellen‘.
  4. Geben Sie Ihr Domain oder Subdomain in das Bestellformular ein.
    Beispiel: teslamate.tesla.com
  5. Sie akzeptieren PayPal, Stripe und eine Reihe anderer Optionen. Vergewissern Sie sich, dass Ihre Kontoinformationen mit Ihren Zahlungsinformationen übereinstimmen, sonst kann Ihr Kauf storniert werden.

Während der regulären Geschäftszeiten sollte die Einrichtung innerhalb von 1-3 Stunden erfolgen, bei neuen Konten kann es jedoch bis zu 24 Stunden dauern. Bestellungen, die über das Wochenende aufgegeben werden, werden am Montag aktiviert, wenn kein Mitarbeiter verfügbar ist.

Voraussetzung

  1. LV RYZEN KVM-Scheibe mit 512 MB oder mehr
  2. Zwei FQDN, zum Beispiel teslamate.example.com und grafana.beispiel.de
  3. PuTTY SSH-Klient

Bei Stallion anmelden

buyvmstallionloginscreen20200529 | graydonschwartz.com
Einrichtung eines selbst gehosteten TeslaMate für $2 pro Monat in einem BuyVM Slice 9

Stallion ist die von BuyVM entwickelte Weboberfläche, über die Sie Ihr Slice mit einem Betriebssystem laden, den Status einsehen und alle anderen Aufgaben auf Ihrem virtuellen Server verwalten können. Sie finden einen Link zu Stallion oben auf der Seite, wenn Sie sich im frantech Kundenportal anmelden.

Wir müssen Docker manuell einrichten, da es kein vorinstalliertes Docker gibt, aber es ist wirklich kein Problem, es einzurichten.

Image auswählen und VM einschalten

buyvm reinstallcentos7 64bit 20200529 | graydonschwartz.com
Einrichtung eines selbst gehosteten TeslaMate für $2 pro Monat in einem BuyVM Slice 10

Wählen Sie "Neu installieren" aus den Registerkartenmenüs. Klicken Sie nun auf "Redhat Based (7)" in der Liste auf der linken Seite. Klicken Sie auf "Neu installieren" neben "CentOS 7.0 64bit", um die Installationsaufforderung aufzurufen. Sie werden aufgefordert, ein Passwort einzugeben. Dabei handelt es sich um Ihr Root- (oder Administrations-) Passwort für Ihren virtuellen Server. Notieren Sie sich dieses an einem sicheren Ort.

Klicken Sie auf das Kontrollkästchen bei: Ja, bitte löschen Sie alle Daten von yourhostname.com (IP ADDRESS)

Klicken Sie auf "Neu installieren", wenn Sie bereit sind, fortzufahren.

Manuelle Installation von Docker

Installieren Sie das Paket yum-utils (das das Dienstprogramm yum-config-manager enthält)

sudo yum install -y yum-utils

und richten Sie die stabil Repository.

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

Installieren Sie die neueste Version von Docker Engine und containerd:

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

Starten Sie Docker.

sudo systemctl start docker

Überprüfen Sie

sudo docker run hello-world

Konfigurieren Sie Docker so, dass es beim Booten startet

sudo systemctl enable docker

Um dieses Verhalten zu deaktivieren, verwenden Sie deaktivieren stattdessen:

sudo systemctl disable docker

Quelle: Docker

Einrichtung - docker-compose.yml

Version: '3'

Dienstleistungen:
  teslamate:
    Bild: teslamate/teslamate:latest
    Neustart: immer
    hängt_an:
      - Datenbank
    Umgebung:
      - DATABASE_USER=${TM_DB_USER}
      - DATENBANK_PASS=${TM_DB_PASS}
      - DATENBANK_NAME=${TM_DB_NAME}
      - DATABASE_HOST=Datenbank
      - MQTT_HOST=mosquitto
      - VIRTUAL_HOST=${FQDN_TM}
      - CHECK_ORIGIN=true
      - TZ={$TM_TZ}
    Volumes:
      - ./import:/opt/app/import
    labels:
      - '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"

  Datenbank:
    image: postgres:12
    Neustart: immer
    Umgebung:
      - POSTGRES_USER=${TM_DB_USER}
      - POSTGRES_PASSWORD=${TM_DB_PASS}
      - POSTGRES_DB=${TM_DB_NAME}
    Volumes:
      - teslamate-db:/var/lib/postgresql/data

  grafana:
    image: teslamate/grafana:latest
    Neustart: immer
    Umgebung:
      - DATABASE_USER=${TM_DB_USER}
      - DATENBANK_PASS=${TM_DB_PASS}
      - DATENBANK_NAME=${TM_DB_NAME}
      - DATABASE_HOST=Datenbank
      - 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}
    Volumes:
      - teslamate-grafana-data:/var/lib/grafana
    labels:
      - '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:
    image: eclipse-mosquitto:1.6
    neustart: immer
    Ports:
      - 127.0.0.1:1883:1883
    Volumes:
      - mosquitto-conf:/mosquitto/config
      - mosquitto-data:/mosquitto/data

  Proxy:
    image: traefik:v2.1
    neustart: immer
    Befehl:
      - "--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"
    Ports:
      - 80:80
      - 443:443
    Volumes:
      - ./.htpasswd:/auth/.htpasswd
      - ./acme/:/etc/acme/
      - /var/run/docker.sock:/var/run/docker.sock:ro

Volumes:
    teslamate-db:
    teslamate-grafana-data:
    mosquitto-conf:
    mosquitto-data:

Einrichtung - .env

TM_DB_USER=teslamate
TM_DB_PASS=geheim
TM_DB_NAME=teslamate

GRAFANA_USER=admin
GRAFANA_PW=admin

FQDN_GRAFANA=grafana.beispiel.de
FQDN_TM=teslamate.beispiel.de

TM_TZ=Europa/Berlin

LETSENCRYPT_EMAIL=yourperson@example.com

Einrichtung - .htpasswd

Wie in der Dokumentation zu TeslaMate beschrieben. Ich empfehle Ihnen, dieses Tool zu verwenden, um Ihre .htpasswd-Datei zu erstellen:
http://www.htaccesstools.com/htpasswd-generator/
Geben Sie Ihr gewünschtes Nutzername, Passwort und Bcrypt auswählen (ab Apache v2.4)
In dem folgenden Beispiel habe ich Folgendes eingegeben Nutzername und Passwort für diese Felder:

Beispiel:

my:$2y$10$as5PEnYaoGEx2ebCFjdK0e9PBshAsvzIeAKijwNgeMSC9oJkDNo2.

Kopieren Sie nun diese Informationen und fügen Sie sie in Ihre .htpasswd-Datei ein.

vi .htpasswd (oder Ihr bevorzugter Texteditor)

Stellen Sie sicher, dass Sie Ihr Passwort einrichten, bevor Sie das Teslamate mit Docker starten!

docker-compose aufwärts

Hinweis: Möglicherweise müssen Sie diesen Befehl zweimal ausführen, damit er funktioniert.

DNS-Einrichtung

Sie müssen teslamate.example.com + grafana.exampe.com (Ihre Subdomain) auf die IP-Adresse verweisen, die Sie von BuyShared erhalten haben, als Sie Ihren virtuellen Server eingerichtet haben. Wenden Sie sich dazu an Ihren Webhoster oder loggen Sie sich in Ihr Kontrollpanel ein, um Ihre DNS-Einträge zu verwalten und diese Einträge hinzufügen zu lassen.

Anmeldung bei TeslaMate

  1. Öffnen Sie die Weboberfläche https://teslamate.example.com
    Melden Sie sich mit den Daten an, die Sie in die .htpasswd-Datei eingegeben haben. Anschließend werden Sie aufgefordert, sich mit Ihrem Tesla-Konto anzumelden.
  2. Melden Sie sich mit Ihrem Tesla-Konto an
  3. Die Grafana Dashboards sind verfügbar unter:https://grafana.example.com.
  4. Geben Sie Benutzernamen und Passwort ein:admin:admin und Sie werden bei Ihrer ersten Anmeldung aufgefordert, das Passwort zu ändern.

Upgrade verfügbar?

Ich schaue mir immer die Versionshinweise vor der Aufrüstung.

docker-compose pull

[root@localhost ~]# docker-compose pull
Pulling database  ... done
Pulling teslamate ... done
Pulling grafana   ... done
Pulling mosquitto ... done
Pulling proxy     ... done

docker-compose aufwärts

[root@localhost ~]# docker-compose up
Recreating root_grafana_1 ...
Recreating root_database_1 ...
Recreating root_grafana_1  ... done
Recreating root_database_1 ... done
Recreating root_teslamate_1 ... done
....update messages
16:57:45.350 [info] Tzdata has updated the release from 2019c to 2020a

Ihre Installation ist nun aktualisiert und Sie können das Terminal schließen. Sie können die Version überprüfen, indem Sie sich in Ihr TeslaMate-Kontrollfeld einloggen.

Extra Schutz

Beginnen wir mit der Deaktivierung/Deinstallation von FirewallD:

sudo yum remove -y firewalld

Lassen Sie uns nun IPTables installieren/aktivieren.

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

Konfigurieren Sie IPTables so, dass es beim Booten automatisch startet.

sudo systemctl enable iptables

IPTables auf CentOS 7 wird mit einem Standard-Regelsatz geliefert, den Sie mit folgendem Befehl einsehen können.

sudo iptables -L -n

Die Ausgabe wird ähnlich aussehen:

Kette INPUT (Richtlinie ACCEPT)
Ziel prot opt Quelle Ziel
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 Zustand NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Kette FORWARD (Richtlinie ACCEPT)
Ziel prot opt Quelle Ziel
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Kette OUTPUT (Richtlinie ACCEPT)
Ziel prot opt Quelle Ziel

Sie können sehen, dass eine dieser Regeln SSH-Verkehr zulässt, so dass Ihre SSH-Sitzung sicher ist.

Da diese Regeln Laufzeitregeln sind und bei einem Neustart verloren gehen, ist es am besten, sie in einer Datei zu speichern:

sudo /usr/libexec/iptables/iptables.init speichern

Dieser Befehl speichert die Regeln in der Datei /etc/sysconfig/iptables Datei. Sie können die Regeln jederzeit bearbeiten, indem Sie diese Datei mit Ihrem bevorzugten Texteditor ändern.

Als nächstes lassen Sie zusätzlichen Datenverkehr durch die Firewall zu

Da Sie Ihren neuen Server höchstwahrscheinlich irgendwann zum Hosten von Websites verwenden werden, müssen Sie der Firewall neue Regeln hinzufügen, um HTTP- und HTTPS-Datenverkehr zuzulassen. Dazu öffnen Sie die Datei IPTables:

sudo nano /etc/sysconfig/iptables

Fügen Sie direkt nach oder vor der SSH-Regel die Regeln für HTTP- (Port 80) und HTTPS-Verkehr (Port 443) hinzu, so dass dieser Teil der Datei wie im unten stehenden Codeblock aussieht.

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

Speichern und schließen Sie die Datei und laden Sie dann IPTables erneut.

sudo systemctl reload iptables

Nach Abschluss der obigen Schritte sollte Ihr CentOS 7-Server nun einigermaßen sicher und für den Einsatz in der Produktion bereit sein.

Andere Sicherheit?

Ich möchte diese nächste Idee damit einleiten, dass Sie Probleme bekommen könnten, weil das SSL-Zertifikat von TeslaMate erfordert, dass die Subdomains auf die IP-Adresse Ihres VPS verweisen. Wenn Sie es jedoch hinter Cloudflare verstecken, wird dies nicht der Fall sein und SSL wird bei Neustarts von TeslaMate nicht erneuert. Ich empfehle daher nicht mehr, CF zu aktivieren, bis es vom Entwickler vollständig unterstützt wird. Ich werde es als Denkanstoß hier lassen.

cloudflare | graydonschwartz.com
Einrichtung eines selbst gehosteten TeslaMate für $2 pro Monat in einem BuyVM Slice 11

Dies ist ein zusätzlicher Schritt, der nicht erforderlich ist, um loszulegen, aber ein wenig zusätzliche Sicherheit für Ihre Subdomains bieten kann. Registrieren Sie sich für Cloudflare! Es ist ein kostenloser Dienst, der Ihre Website schützt und beschleunigt.

  1. Klicken Sie auf "DNS".
  2. Für Ihr grafana (A Record):
    Satz Status des Bevollmächtigten zu Proxied.
  3. Auch für Ihre teslamate (A Record):
    Satz Status des Bevollmächtigten zu Proxied.

Wenn Sie Ihre Subdomains anpingen, werden Sie feststellen, dass sie jetzt einen niedrigeren Ping und eine andere IP-Adresse haben, weil Sie Ihren Datenverkehr jetzt über das Cloudflare-Netzwerk leiten und Ihre IP-Adresse bei BuyVM jetzt bei DNS-Anfragen versteckt ist.

Ich habe die Aktivierung des Proxymodus nun schon eine Weile getestet und bin bisher auf keine Probleme gestoßen.

Ich hoffe, Sie fanden diese Anleitung hilfreich 🙂 .

Erschwingliche BuyVM-Slices

Besonderer Dank

TESMAT am Tesla Supercharger

TESMAT

TESMAT könnte die richtige Matratze für Ihr nächstes Nickerchen an der Supercharger-Ladestation, Ihren Campingausflug mit dem Auto oder das perfekte Geschenk für Ihren Lieblings-Tesla Model 3/Y-Besitzer sein. Sie können meinen Gutscheincode verwenden, um bei Ihrem Kauf zu sparen.

Erfahren Sie mehr:

luminar neo logo für helle Hintergründe aktualisiert | graydonschwartz.com

Luminar Neo

Verwenden Sie die Schaltfläche unten und nutzen Sie den Rabattcode (GRAYDON), um sich eine süßer Rabatt an der Kasse auf Luminar:

Es kann sein, dass ich eine kleine Provision für meine Befürwortung, Empfehlungen, Erfahrungsberichte und / oder Links zu den oben verlinkten Produkten oder Dienstleistungen erhalte. Ihr Kauf unterstützt mich dabei, Ihnen mehr Fotos, Reiseführer und Reisen um die Welt zu bieten.

Von Graydon Schwartz

Mehr über Graydon erfahren Sie auf der Website Über mich Seite.