Skip to main content

Choose Your Path

Pick the path that matches your experience. Each path gives you a minimal set of steps to get your site reachable.

Beginner: get a site online fast

  1. Start a simple server locally (pick one):

    • Static files (built-in): cruma serve ./public (optionally passing --allow-dir-index)
    • SPA (React/Vue/etc.): cruma serve ./dist --spa
    • Static files (your own server): python -m http.server 8080
    • React/Vite dev server: npm create vite@latest && npm install && npm run dev -- --host --port 3000
  2. Run the tunnel (anonymous mode, no signup):

    • React/Vite on 3000:
      cruma proxy http 3000
    • If you ran cruma serve, that command already started the tunnel; you can skip this step.
  3. Copy the public URL printed by the CLI and open it in your browser.

If it doesn't load, check: is your local server running? Is your firewall blocking the port? Try curl http://127.0.0.1:8080 (or :3000) locally first.

Intermediate: custom domains and multiple services

  • Use a config file with backends and frontends to run multiple services from one agent (see Configuration).
  • Add a CNAME to use your own domain and add that hostname as a frontend route (see Custom Domains).
  • Let the agent host your app process (cruma config add process ...) so you manage everything in one place (see Common Scenarios).
  • Review Security & TLS to decide on pinning/CAA for custom domains.

Advanced: isolation, regions, and hardening

  • Run multiple agents on the same tunnel ID for regional load spreading (see Multiple Targets and Tunnels).
  • Use separate tunnels for isolation between teams/apps.
  • Use local-only mode (local_only: true) with listeners for a purely local reverse proxy — no cloud tunnel (see Configuration).
  • Add middlewares (CORS, header manipulation, path rewrites, redirects) to frontend routes (see Configuration).
  • Enforce issuance and trust: set CAA on your domain, pin your agent's cert (or use mTLS) for custom hostnames (see Security & TLS).