Tesla Fleet API: příprava domény ems.vojacek.eu (cert + public key + callback)
Doména slouží jen jako veřejná vizitka pro Tesla: Caddy blok vystavuje POUZE .well-known public key a statickou OAuth callback stránku (zobrazí ?code=, nic neodesílá), vše ostatní 404 — EMS zůstává na VPN. Certifikát Let's Encrypt řeší hostovský Caddy automaticky. deploy/tesla/setup_tesla_domain.sh (spustit NA SERVERU): EC keypair prime256v1 (privátní do /opt/ems-deploy/secrets 0600), public do .well-known, callback, vypíše Caddy blok. docs/tesla-fleet-api.md: developer portál, partner registrace, OAuth flow, plán EMS integrace (tesla_client + hook v _on_ev_arrival). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
30
deploy/tesla/callback.html
Normal file
30
deploy/tesla/callback.html
Normal file
@@ -0,0 +1,30 @@
|
||||
<!doctype html>
|
||||
<html lang="cs">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<title>EMS – Tesla OAuth callback</title>
|
||||
<style>
|
||||
body { font-family: system-ui, sans-serif; background: #0f172a; color: #e2e8f0;
|
||||
display: grid; place-items: center; min-height: 100vh; margin: 0; }
|
||||
.card { background: #1e293b; padding: 2rem; border-radius: 12px; max-width: 640px; }
|
||||
code { background: #0f172a; padding: .5rem; border-radius: 6px; display: block;
|
||||
word-break: break-all; margin-top: .5rem; user-select: all; }
|
||||
.muted { color: #94a3b8; font-size: .9rem; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="card">
|
||||
<h2>Tesla OAuth callback</h2>
|
||||
<p>Autorizační kód (zkopíruj do EMS kroku výměny tokenu):</p>
|
||||
<code id="code">—</code>
|
||||
<p class="muted">Stránka je statická, kód se nikam neodesílá. Po výměně za
|
||||
refresh token už není potřeba.</p>
|
||||
</div>
|
||||
<script>
|
||||
const p = new URLSearchParams(location.search);
|
||||
document.getElementById("code").textContent = p.get("code") || "(chybí ?code= v URL)";
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user