## Summary - Add Hajimari as a service dashboard/start page at `go.ops.eblu.me` - Auto-discovers k8s services from ingress annotations - Custom apps for non-k8s services: Forgejo, Registry, Sifaka NAS - Add `nas.ops.eblu.me` Caddy proxy to Synology dashboard ## Services Configured **Auto-discovered (k8s ingresses with hajimari.io annotations):** - Grafana, ArgoCD, Prometheus, Loki (Observability) - Miniflux, Kiwix, Transmission, TeslaMate, Immich (Apps) - PyPI/devpi (Infrastructure) **Custom apps (non-k8s):** - Forgejo (forge.ops.eblu.me) - Registry (registry.ops.eblu.me) - Sifaka NAS (nas.ops.eblu.me) **Bookmarks:** - Tailscale Admin, 1Password, Pulumi ## Deployment and Testing - [ ] Sync `apps` application to pick up new Hajimari Application - [ ] Sync `hajimari` application - [ ] Run `mise run provision-indri -- --tags caddy` for go/nas proxy entries - [ ] Re-sync all k8s apps with hajimari annotations (or wait for natural drift) - [ ] Verify https://go.ops.eblu.me shows dashboard with all services 🤖 Generated with [Claude Code](https://claude.com/claude-code) Reviewed-on: https://forge.ops.eblu.me/eblume/blumeops/pulls/73 |
||
|---|---|---|
| .. | ||
| deployment.yaml | ||
| external-secret-db.yaml | ||
| external-secret-encryption-key.yaml | ||
| ingress-tailscale.yaml | ||
| kustomization.yaml | ||
| README.md | ||
| service.yaml | ||
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:
-
TeslaMate DB Password
- Generate a secure password for the teslamate PostgreSQL user
- Add a field named
passwordwith the generated value
-
TeslaMate Encryption Key
- Generate with:
openssl rand -base64 32 - Add a field named
keywith the generated value - This encrypts Tesla API tokens at rest in the database
- Generate with:
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
- Access TeslaMate UI at https://tesla.tail8d86e.ts.net
- Click "Sign in with Tesla"
- Complete OAuth flow in browser
- Tokens are encrypted and stored in database
- 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