Self-hosting

Host TimeTracker on your own VPS

A single installer provisions the entire stack on a fresh Linux server. This guide walks you through every step, from preparing the machine to keeping it updated.

What you'll run

The installer sets up three services on your VPS and wires them together automatically:

  • Caddy — a reverse proxy that terminates HTTPS (automatic Let's Encrypt certificates) and routes each domain to the right service.
  • Supabase — self-hosted via Docker Compose (Postgres, Auth, Storage, and the API gateway), serving the API on port 8000.
  • TimeTracker app — the standalone Next.js build, run under PM2 on port 3000.

Two domains point at the same VPS — one for the API, one for the dashboard — and Caddy forwards each to its service:

request flow
api.yourdomain.com      ──▶  Caddy (:443)  ──▶  Supabase API (:8000)
app.yourdomain.com      ──▶  Caddy (:443)  ──▶  TimeTracker app (:3000)

The guide