Quickstart — Deploy Your First App in 5 Minutes
Temps is a self-hosted deployment platform — a Vercel/Netlify alternative you run on your own server. One curl command installs Docker, TimescaleDB (PostgreSQL), SSL certificates, and the Temps binary. Your first app goes live in under 5 minutes. Temps is free to self-host (Apache 2.0) or ~$6/mo on Temps Cloud (Hetzner cost + 30% margin, no per-seat fees, no bandwidth billing). Every deployed app gets automatic HTTPS, built-in web analytics, Sentry-compatible error tracking, rrweb session replay, and 60-second uptime monitoring — no third-party subscriptions required.
You need a Linux VPS with at least 2 CPU cores and 4 GB RAM (Ubuntu, Debian, or RHEL). Any provider works — DigitalOcean, Hetzner, Linode, AWS. See Choosing a Server for sizing guidance.
Step 1: Install Temps
SSH into your server and run the installer:
curl -fsSL https://temps.sh/deploy.sh | bash
Want to inspect it before running? curl -fsSL https://temps.sh/deploy.sh | less
The wizard walks you through each step interactively. You'll be prompted to:
- Approve the Docker install — only if Docker isn't already installed and running
- Pick a setup mode — this decides how your console is reached and whether you get HTTPS:
- Local — runs on this machine via
127.0.0.1.sslip.io, HTTP only (just trying it out) - QuickStart — a server with a public IP gets an instant
<your-ip>.sslip.iodomain, HTTP only (~90s, no DNS to configure) - Testing — an
sslip.iodomain plus a real Let's Encrypt HTTPS certificate for the console (HTTP-01) - Advanced — your own domain with a wildcard Let's Encrypt certificate (you add the DNS records)
- Local — runs on this machine via
- Set your admin credentials — an admin email and password (the password defaults to a generated value you can accept)
- Confirm installing the background service — recommended, so Temps starts on boot
You can also skip the picker by passing the mode directly, e.g. curl -fsSL https://temps.sh/deploy.sh | bash -s -- --mode advanced.
The database password and the verification API key are generated for you automatically — you don't enter those. The wizard prints the API key once at the end, so save it then.
The full step sequence:
- Docker — Installs and verifies Docker Engine
- Database — Sets up TimescaleDB (PostgreSQL) in a Docker container
- Domain & SSL — Sets up your domain and TLS based on the mode you chose (an
sslip.iodomain for Local/QuickStart/Testing, or your own domain with a wildcard Let's Encrypt certificate in Advanced mode). In Advanced mode the wizard also prompts you to configure HTTPS per-domain — you can enable or disable TLS for each domain individually rather than applying one global setting. - Temps binary — Downloads and configures the Temps server, then installs a systemd service so it starts on boot
- Verification — Generates an API key and confirms the console is reachable
When it finishes, the installer prints a success block like this:
SETUP COMPLETE
Console: https://yourdomain.com
Admin email: you@example.com
Admin password: ••••••••••••••••
API key: tk_xxxxxxxxxxxxxxxx
⚠ Save your admin password and API key now — they won't be shown again.
If you don't see this block, the installer is idempotent — re-run the same command to resume. Still stuck? See Troubleshooting.
The wizard supports Linux (Ubuntu, Debian, RHEL) and macOS. It is idempotent — you can re-run it safely if something fails.
Once complete, open the console URL shown at the end to continue.
Step 2: Complete the onboarding
Already installed? If you are re-running deploy.sh on an existing
install (for example, after an upgrade), the wizard detects that
setup_complete is already set and skips straight to the verification step.
The Temps console also skips the onboarding wizard on first login and takes
you directly to the dashboard. You do not need to redo the setup steps below.
When you open the console URL for the first time, Temps shows a getting-started checklist to guide you through the initial configuration. The checklist tracks which activation steps you have completed and disappears once all items are checked off. The steps are:
- Log in — Use the admin email and password you set during install (Step 1). The installer already created this account, so you go straight to the login screen.
- Connect your Git provider — In the sidebar, open Git Providers → Add Git Provider, choose GitHub or GitLab, and authorize access. See Connect a Git Provider for the full GitHub App and access-token walkthrough.
- Confirm it's connected — The Git Providers page should show your provider as Active before you continue.
The checklist in the dashboard reflects which of these steps you have completed. You can skip past it at any time — all features are available immediately after login, regardless of checklist state.
Step 3: Deploy your first app
There are three ways to ship your app — click through the dashboard, run the CLI yourself, or hand the steps to your coding agent. Pick whichever fits your workflow.
Deploy your first app
- 1
Go to Projects, then click New Project (top-right).
- 2
On the Browse Repositories tab, select your repository from the list.
- 3
Choose the branch to deploy (e.g. main).
- 4
Click Deploy and watch the build logs stream in real time.
Checkpoint: Your app goes live in ~30–60 seconds — open the assigned URL and confirm it serves your app over HTTPS.
Repository list empty? Your Git provider isn't connected yet. Go back to Git Providers (Step 2) and confirm the status shows Active — repositories only appear once a provider is linked.
Every deployment — however you trigger it — automatically gets:
- HTTPS — Pingora proxy terminates TLS, certificates provisioned via Let's Encrypt
- Web analytics — visitor tracking and page views via first-party
_temps_visitor_idcookie (no third-party scripts) - Error tracking — Sentry-compatible DSN; errors grouped by pgvector similarity
- Session replay — rrweb-based recording, stored on your own server
- Uptime monitoring — health checks every 60 seconds, alerts on failure
- Live logs — real-time container log streaming in the dashboard
What gets auto-detected?
Temps automatically detects your framework and configures the build:
| Framework | Build Command | Start Command |
|---|---|---|
| Next.js | npm run build | npm start |
| Vite/React | npm run build | Static serve |
| Node.js | npm install | npm start |
| Python | pip install -r requirements.txt | uvicorn main:app |
| Go | go build | Binary execution |
| Static HTML | None | Temps serves (zero overhead) |
For custom applications, add a Dockerfile to your repository.
What Temps costs
| Option | Cost | What's included |
|---|---|---|
| Self-host | Free (you pay your VPS) | Full feature set, Apache 2.0 license, unlimited projects/seats/deployments |
| Temps Cloud | ~$6/mo (Hetzner CAX11) | Managed server, automatic updates, support — same binary, no lock-in |
A typical self-hosted setup on Hetzner CAX11 (2 vCPU, 4 GB RAM) costs ~$4.15/mo. Temps Cloud adds a 30% margin for management overhead, bringing it to ~$6/mo. Both options include all observability features — no separate plans for analytics, error tracking, or session replay.
Next steps
- Add a custom domain — Go to Project Settings → Domains
- Set environment variables — Go to Project Settings → Environment Variables
- View analytics — Check the Analytics tab in your project
- Set up error tracking — Get your DSN from Error Tracking → DSN & Setup
- Invite team members — Go to Settings → Team Members
Want a deeper walkthrough of each step? See Your First Deployment.
Already running Temps and need to update it? See Upgrade Temps.