Overview
Thumper-Run supports three deployment modes, each targeting a different use case. The desktop app is the primary experience for individual users. The web shell serves the public website and authenticated user features. Self-hosted deployments give teams full control over their infrastructure.
All three modes share the same Leptos frontend codebase (tr-shared-ui). The difference is in the shell that hosts the UI and the backend services available.
Feature Comparison
Use this matrix to decide which deployment mode fits your needs.
| Feature | Desktop App | Web Shell | Self-Hosted |
|---|---|---|---|
| Platform | Linux, macOS, Windows | Any browser | Linux server |
| Database | Local SQLite (CRDT) | PostgreSQL + Redis | PostgreSQL + Redis |
| Auth | OS keychain | Rauthy OIDC | Rauthy OIDC |
| GPU Access | Direct | None (server-side) | Direct (if GPU on server) |
| Offline | Full offline | Requires network | LAN-only possible |
| Multi-user | Single user | Multi-user | Multi-user |
| SSL/TLS | N/A | Managed | You manage (nginx/Caddy) |
| Config | Settings UI | Environment variables | Environment variables |
| Best For | Individual creators | Public website | Teams, orgs, privacy |
Desktop App
The desktop app is a Tauri 2.0 application that bundles the Leptos frontend in a native webview. It communicates with Rust backend services through Tauri’s IPC layer.
Architecture
- Frontend: Leptos 0.8 compiled to WASM, rendered in system webview
- Backend: Rust services running in the Tauri process (tr-tauri-shell)
- Data: Local CRDT store backed by SQLite for offline-first persistence
- GPU: Direct access to system GPU via spawned app processes
- Sync: Optional server-assisted WebSocket workflows; private E2EE modes remain gated
Configuration
The desktop app is configured through its Settings UI. Environment variables are only needed for development builds (TR_DEV_TOOLS=true) or custom data directories (TR_DATA_DIR).
Web Shell
The web shell (tr-web-shell) is an Axum-based SSR server that serves the public website and authenticated user features. It handles server-side rendering, API routes, authentication, and billing integration.
Architecture
- Frontend: Leptos 0.8 with SSR hydration (server renders, client hydrates)
- Backend: Axum router with middleware for auth, CORS, compression
- Data: PostgreSQL for persistent storage, Redis for sessions and pub/sub
- Auth: Rauthy OIDC for user authentication and authorization
- Billing: Stripe integration for subscription management
Required Environment Variables
The web shell requires several environment variables to function. See the full list on the Environment Variables page. At minimum, you need:
- DATABASE_URL — PostgreSQL connection string
- RAUTHY_URL, RAUTHY_CLIENT_ID, RAUTHY_CLIENT_SECRET — OIDC configuration
- MANAGED_KEY_SECRET — server-side encryption key
Self-Hosted
Self-hosted deployments run the web shell on your own infrastructure. This gives you full control over data, allows LAN-only operation, and supports multi-user setups for teams and organizations.
Prerequisites
- Linux server (Ubuntu 22.04+ or similar)
- PostgreSQL 15+
- Rauthy instance (or compatible OIDC provider)
- Reverse proxy (nginx or Caddy) for TLS termination
- Optional: Redis for session cache and real-time features
- Optional: GPU for local inference (NVIDIA or AMD)
Docker Deployment
The recommended self-hosted deployment uses Docker Compose with the provided production Dockerfile and nginx configuration.
Environment Configuration
Different environments (development, staging, production) require different variable values. Here are the key differences:
| Variable | Development | Staging | Production |
|---|---|---|---|
| TR_LOG_LEVEL | debug | info | warn |
| TR_HOT_RELOAD | true | false | false |
| TR_CORS_ENABLED | true | true | false |
| TR_COMPRESSION | false | true | true |
| STRIPE_* | sk_test_* keys | sk_test_* keys | sk_live_* keys |
| DATABASE_URL | localhost DB | staging DB | production DB |
Key Takeaways
- Desktop app is best for individual creators with local GPU access
- Web shell serves the public site and requires PostgreSQL + Rauthy
- Self-hosted gives teams full control over data and infrastructure
- All three modes share the same Leptos frontend codebase
- Use test Stripe keys for development and staging environments