Supermate talks directly to your TeslaMateApi for your car data — no server of ours sits in between. This is how to let your iPhone reach it safely, without opening a port on your router. About ten minutes.
http://your-ip:8080 forwarded on your router puts your car's whole history one guess away from anyone scanning. Everything below reaches the container privately instead — that is the whole point.
API_TOKEN (32+ characters) on the TeslaMateApi container. You'll paste the same token into Supermate.A private network between your devices. Nothing is exposed publicly; your phone and your server just see each other. Free for personal use.
A public HTTPS hostname for your API, with no open router port. Needs a domain on Cloudflare and a little more setup.
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
Sign in when prompted (a free account). On Synology, Unraid, etc. install the Tailscale package/app instead.
myserver.tailnet-name.ts.net (you'll see it on the Machines page).
http://myserver.tailnet-name.ts.net:8080
iOS allows plain http:// to .ts.net names, so no certificate is needed. If TeslaMateApi runs in Docker, it's reachable at the host's Tailscale name on its published port 8080.
Use this if you want a public HTTPS address (e.g. teslamate.example.com). You need a domain managed on Cloudflare (the free plan is fine).
cloudflared on the machine that runs TeslaMate and log in:
cloudflared tunnel login
cloudflared tunnel create teslamate
cloudflared tunnel route dns teslamate teslamate.example.com
cloudflared tunnel run --url http://localhost:8080 teslamate
For a permanent setup, run cloudflared as a service or add it to your docker-compose.yml. Full reference: Cloudflare Tunnel docs.
https://teslamate.example.com
API_TOKEN as the token, then connect and pick your car. Your history syncs to the phone and opens with no connection after that.Just want to look first? On the first screen tap “I'm just looking around” to explore the whole app with sample data — no server needed.
http:// to your own network or a .ts.net name. Use Tailscale (Method A) or an HTTPS address (Method B).API_TOKEN matches on both sides.