Introduction to Temps
Temps is your self-hosted deployment platform that makes it effortless to deploy and manage ANY application - from React frontends to Node.js APIs, Python backends, static sites, and everything in between.
Quick Start (Ubuntu)
Get Temps running on Ubuntu in under 5 minutes.
Prerequisites
Before you begin, make sure you have:
- Ubuntu 20.04+ (or any Linux with Docker support)
- Docker installed and running
- PostgreSQL database (local or remote)
- A domain pointed to your server (for SSL certificates)
- GitHub token (for deploying from repositories)
- Cloudflare token (optional, for automatic DNS management)
If you don't have Docker installed, run: curl -fsSL https://get.docker.com | sh
Step 1: Start TimescaleDB
Temps requires PostgreSQL with TimescaleDB for analytics. Start it with Docker:
# Create a persistent volume for your database
docker volume create temps-postgres
# Start TimescaleDB (runs on port 16432 to avoid conflicts)
docker run -d \
--name temps-postgres \
-v temps-postgres:/var/lib/postgresql/data \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=temps \
-e POSTGRES_DB=temps \
-p 16432:5432 \
timescale/timescaledb:latest-pg18
Wait a few seconds for the database to initialize, then verify it's running:
docker logs temps-postgres
Step 2: Download Temps
Install Temps CLI
curl -fsSL https://temps.sh/install.sh | sh
Step 3: Run Setup
The setup command configures Temps with your credentials and generates the necessary certificates:
temps setup \
--database-url "postgresql://postgres:temps@localhost:16432/temps" \
--admin-email "your-email@example.com" \
--wildcard-domain "*.yourdomain.com" \
--github-token "ghp_xxxxxxxxxxxx" \
--dns-provider "cloudflare" \
--cloudflare-token "your-cloudflare-api-token"
- Name
--database-url- Description
PostgreSQL connection string. Temps requires PostgreSQL 14+ with TimescaleDB for analytics.
- Name
--admin-email- Description
Email for the admin account and Let's Encrypt certificate notifications.
- Name
--wildcard-domain- Description
Wildcard domain for your deployments (e.g.,
*.temps.yourdomain.com). Each app gets a subdomain automatically.
- Name
--github-token- Description
GitHub personal access token with
reposcope for cloning repositories.
- Name
--dns-provider- Description
DNS provider for automatic certificate validation. Supported:
cloudflare,route53,digitalocean,manual.
- Name
--cloudflare-token- Description
Cloudflare API token with Zone:DNS:Edit permissions (only needed if using Cloudflare DNS).
Step 4: Start Temps
Start the Temps server:
temps serve \
--database-url "postgresql://postgres:temps@localhost:16432/temps" \
--address 0.0.0.0:80 \
--tls-address 0.0.0.0:443 \
--console-address 0.0.0.0:8081
- Name
--address- Description
HTTP address for redirects and health checks. Default:
0.0.0.0:80
- Name
--tls-address- Description
HTTPS address for secure traffic. Default:
0.0.0.0:443
- Name
--console-address- Description
Admin console address. Access the dashboard at this port. Default:
0.0.0.0:8081
That's it! Open temps.<wildcard_domain>:443 to access the Temps console.
Troubleshooting
Server hangs on startup
If Temps hangs during startup, it's likely waiting for the screenshot provider to initialize. Disable it with:
export TEMPS_SCREENSHOT_PROVIDER=noop
temps serve --database-url "..." --address 0.0.0.0:80
Database connection issues
Make sure PostgreSQL is running and accessible:
# Test connection
psql "postgresql://postgres:temps@localhost:16432/temps" -c "SELECT 1"
Port already in use
If ports 80 or 443 are already in use (e.g., by nginx or Apache), either stop those services or use different ports:
temps serve \
--database-url "..." \
--address 0.0.0.0:8080 \
--tls-address 0.0.0.0:8443 \
--console-address 0.0.0.0:8081
What Can You Deploy?
Temps supports any application that can run in a container:
| Application Type | Examples | Support |
|---|---|---|
| Frontend Apps | React, Next.js, Vue, Svelte, Angular | Zero-config |
| Backend APIs | Node.js, Python, Go, Rust, Ruby, PHP | Auto-detected |
| Static Sites | Hugo, Jekyll, Gatsby, plain HTML | Optimized serving |
| Full-Stack | Next.js, Nuxt, SvelteKit, Remix | SSR supported |
| Databases | PostgreSQL, Redis, MySQL | Managed services |
| Custom Apps | Anything with a Dockerfile | Full Docker support |
Why Temps?
Self-Hosted
- Run on your own infrastructure
- Complete data ownership
- No vendor lock-in
- No usage limits
All-in-One
- Analytics built-in
- Error tracking (Sentry-compatible)
- Session replay
- Uptime monitoring
Cost Comparison
Running 5 apps with analytics, error tracking, and monitoring:
| Platform | Monthly Cost |
|---|---|
| Temps (self-hosted) | ~$50 (VPS only) |
| Vercel + Sentry + Analytics | ~$500+ |
| AWS + third-party tools | ~$800+ |