blumeops/argocd/manifests/teslamate
Erich Blume 38538ad5f0 Replace hajimari with gethomepage (#75)
## Summary
- Remove hajimari (unmaintained since Oct 2022, broken helm deps)
- Add gethomepage (28k stars, actively maintained, monthly releases)
- Migrate custom apps, bookmarks, and search config
- Enable k8s RBAC for service autodiscovery
- Configure Tailscale ingress at go.tail8d86e.ts.net

## Why the switch
Hajimari hasn't released since October 2022. The helm chart has a broken
dependency (bjw-s/common URL is 404), and unreleased code on main has bugs.
gethomepage has similar k8s autodiscovery via ingress annotations and is
very actively maintained.

## Deployment and Testing
- [ ] Delete hajimari app from ArgoCD
- [ ] Delete hajimari namespace
- [ ] Sync apps to pick up new homepage app
- [ ] Sync homepage app
- [ ] Verify go.ops.eblu.me loads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: https://forge.ops.eblu.me/eblume/blumeops/pulls/75
2026-01-30 13:21:12 -08:00
..
deployment.yaml Build local containers for k8s services (#61) 2026-01-25 21:35:57 -08:00
external-secret-db.yaml Switch all ExternalSecrets to creationPolicy: Owner 2026-01-28 20:27:16 -08:00
external-secret-encryption-key.yaml Switch all ExternalSecrets to creationPolicy: Owner 2026-01-28 20:27:16 -08:00
ingress-tailscale.yaml Replace hajimari with gethomepage (#75) 2026-01-30 13:21:12 -08:00
kustomization.yaml Add ExternalSecrets for remaining k8s secrets 2026-01-28 19:50:38 -08:00
README.md Add TeslaMate deployment for Tesla Model Y data logging (#47) 2026-01-22 21:25:44 -08:00
service.yaml Add TeslaMate deployment for Tesla Model Y data logging (#47) 2026-01-22 21:25:44 -08:00

TeslaMate

TeslaMate is a self-hosted Tesla data logger that collects and visualizes vehicle data.

Prerequisites

1. Create 1Password Secrets

Create two items in the blumeops 1Password vault:

  1. TeslaMate DB Password

    • Generate a secure password for the teslamate PostgreSQL user
    • Add a field named password with the generated value
  2. TeslaMate Encryption Key

    • Generate with: openssl rand -base64 32
    • Add a field named key with the generated value
    • This encrypts Tesla API tokens at rest in the database

2. Apply Kubernetes Secrets

# Create namespace
kubectl create namespace teslamate

# Apply database user secret (for CNPG)
op inject -i argocd/manifests/databases/secret-teslamate.yaml.tpl | kubectl apply -f -

# Apply teslamate secrets
op inject -i argocd/manifests/teslamate/secret-encryption-key.yaml.tpl | kubectl apply -f -
op inject -i argocd/manifests/teslamate/secret-db.yaml.tpl | kubectl apply -f -

3. Create Database

After the teslamate user exists in PostgreSQL (sync blumeops-pg first):

PGPASSWORD=$(op --vault blumeops item get <eblume-item-id> --fields password --reveal) \
  psql -h pg.tail8d86e.ts.net -U eblume -c "CREATE DATABASE teslamate OWNER teslamate;"

Deployment

# Sync ArgoCD apps
argocd app sync apps
argocd app sync blumeops-pg teslamate grafana grafana-config

Tesla API Setup

  1. Access TeslaMate UI at https://tesla.tail8d86e.ts.net
  2. Click "Sign in with Tesla"
  3. Complete OAuth flow in browser
  4. Tokens are encrypted and stored in database
  5. Verify vehicle appears and data collection starts

Grafana Dashboards

TeslaMate dashboards are available in Grafana at https://grafana.tail8d86e.ts.net

They use the "TeslaMate" PostgreSQL datasource (not Prometheus).

Notes

  • MQTT is disabled (can be enabled later for Home Assistant integration)
  • Timezone is set to America/Los_Angeles
  • Encryption key protects Tesla API tokens at rest