Files
ems/deploy/tesla/setup_tesla_domain.sh
Dusan Vojacek 5a10da57e9
All checks were successful
CI and deploy / migration-check (push) Successful in 26s
CI and deploy / deploy (push) Has been skipped
Tesla OAuth: redirect URI je /t-auth (oprava všude + Caddy rewrite)
V dev portálu je registrováno https://ems.vojacek.eu/t-auth — docs i setup
skript diktovaly /tesla/callback (mismatch = invalid_auth_code / chybné
návody). Caddy blok nově servíruje callback stránku na /t-auth (rewrite).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 12:45:57 +02:00

79 lines
2.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# Jednorázová příprava domény ems.vojacek.eu pro Tesla Fleet API.
# SPOUŠTĚT NA SERVERU (tam, kde běží hostovský Caddy): bash setup_tesla_domain.sh
#
# Co udělá:
# 1. vygeneruje EC keypair (prime256v1) pro Tesla Fleet API
# - privátní klíč: /opt/ems-deploy/secrets/tesla-fleet-private.pem (0600)
# - veřejný klíč: /opt/ems-deploy/public/.well-known/appspecific/com.tesla.3p.public-key.pem
# 2. nakopíruje statickou OAuth callback stránku
# 3. vypíše Caddy blok k přidání do Caddyfile + reload příkaz
#
# Veřejně vystavené je POUZE: public key (.pem) a callback.html. Vše ostatní 404.
# EMS aplikace zůstává na VPN.
set -euo pipefail
ROOT="${EMS_DEPLOY_ROOT:-/opt/ems-deploy}"
PUB="$ROOT/public"
SEC="$ROOT/secrets"
WELLKNOWN="$PUB/.well-known/appspecific"
PRIV_KEY="$SEC/tesla-fleet-private.pem"
PUB_KEY="$WELLKNOWN/com.tesla.3p.public-key.pem"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
mkdir -p "$WELLKNOWN" "$SEC" "$PUB/tesla"
chmod 700 "$SEC"
if [[ -f "$PRIV_KEY" ]]; then
echo "Privátní klíč už existuje: $PRIV_KEY (negeneruji znovu)"
else
openssl ecparam -name prime256v1 -genkey -noout -out "$PRIV_KEY"
chmod 600 "$PRIV_KEY"
echo "Vygenerován privátní klíč: $PRIV_KEY"
fi
openssl ec -in "$PRIV_KEY" -pubout -out "$PUB_KEY" 2>/dev/null
echo "Veřejný klíč: $PUB_KEY"
install -m 0644 "$SCRIPT_DIR/callback.html" "$PUB/tesla/callback.html"
echo "Callback stránka: $PUB/tesla/callback.html"
cat <<'CADDY'
================================================================
Přidej do /etc/caddy/Caddyfile (a pak: systemctl reload caddy):
================================================================
ems.vojacek.eu {
root * /opt/ems-deploy/public
# Tesla Fleet API: veřejný klíč pro partner account registraci
handle /.well-known/appspecific/com.tesla.3p.public-key.pem {
file_server
}
# Jednorázový OAuth callback (statická stránka zobrazí ?code=)
# POZOR: redirect URI registrovaná v Tesla dev portálu je /t-auth.
handle /t-auth* {
rewrite * /tesla/callback.html
file_server
}
handle /tesla/callback* {
file_server
}
# Nic dalšího neexponovat — EMS žije jen na VPN
handle {
respond 404
}
}
================================================================
Ověření (z venku):
curl -sI https://ems.vojacek.eu/.well-known/appspecific/com.tesla.3p.public-key.pem
-> 200 + platný Let's Encrypt certifikát
curl -sI https://ems.vojacek.eu/cokoliv -> 404
================================================================
CADDY