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)

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 repo scope 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 TypeExamplesSupport
Frontend AppsReact, Next.js, Vue, Svelte, AngularZero-config
Backend APIsNode.js, Python, Go, Rust, Ruby, PHPAuto-detected
Static SitesHugo, Jekyll, Gatsby, plain HTMLOptimized serving
Full-StackNext.js, Nuxt, SvelteKit, RemixSSR supported
DatabasesPostgreSQL, Redis, MySQLManaged services
Custom AppsAnything with a DockerfileFull 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:

PlatformMonthly Cost
Temps (self-hosted)~$50 (VPS only)
Vercel + Sentry + Analytics~$500+
AWS + third-party tools~$800+

Next Steps

Was this page helpful?