Getting Started Guide
A complete guide to understanding, deploying, and managing production applications with TurboV.
1. System Requirements & Preparation
Before launching applications on TurboV, ensure you have:
| Requirement | Minimum Specification | Recommended Production |
|---|---|---|
| Server (VPS or Bare-Metal) | 1 vCPU, 1 GB RAM, 20 GB Disk | 2+ vCPUs, 4+ GB RAM, 50+ GB NVMe |
| Operating System | Ubuntu 20.04 LTS x86_64 / arm64 | Ubuntu 22.04 LTS / 24.04 LTS |
| Network & Firewall | Ports 80 (HTTP) & 443 (HTTPS) open | Ports 80, 443, and 22 (SSH) open |
| GitHub Account | Free or Team account | Organization with admin privileges |
| Domain Name | Any domain registrar | Managed via Cloudflare or Route 53 |
If you connect a server with 1GB or 2GB of RAM, the TurboV Agent's built-in swap manager automatically provisions a swap file to prevent the Linux kernel OOM killer from terminating compiler-heavy container builds.
2. Connecting a Server
When you add a server in TurboV, the control plane generates an ephemeral, cryptographically secure registration token:
curl -sSL https://install.turbov.io | bash -s -- --token YOUR_TOKENWhat the Provisioning Engine Does
- System & Docker Verification: Checks kernel version, cgroups v2 support, and installs Docker Engine if not present.
- Dedicated Network Bridge: Establishes an isolated Docker bridge network named
turbov. - Traefik v3 Installation: Pulls and configures
traefik:v3.3.4in containerturbov-traefik, binding ports 80 and 443. - Maintenance Fallback: Starts a lightweight fallback container (
turbov-fallbackusingnginx:1.27-alpine) to serve friendly status pages during transient restarts. - ACME Directory & TLS Security: Prepares
/var/lib/turbov/traefik/acme.jsonwith strict0600POSIX permissions for Let's Encrypt certificates. - Agent Systemd Daemon: Registers the
turbov-agentsystemd service in/etc/systemd/system/and starts it immediately.
For a comprehensive breakdown of the 11 provisioning steps, see Servers & Provisioning.
3. GitHub Integration & Repository Permissions
TurboV uses a modern GitHub App instead of broad OAuth scopes or personal access tokens:
- Granular Access: You choose exactly which repositories TurboV can read.
- Webhook Automation: TurboV receives push webhooks only for your selected branches.
- Short-Lived Access Tokens: Credentials for cloning code are generated dynamically per deployment and expire immediately.
Because TurboV uses a GitHub App installation token, private repositories are cloned with the same zero-configuration ease as public repositories.
4. Application Architecture
In TurboV, applications are structured hierarchically:
Organization
└── Project
└── Application
├── Environment: Production
│ ├── Service: Web (HTTP -> Traefik -> Port 3000)
│ ├── Service: Worker (Queue Consumer)
│ └── Service: Cron (Nightly Tasks)
└── Environment: Staging
└── Service: Web (staging.example.com)
- Projects: Logical groups sharing common resources, tags, and team permissions.
- Environments: Isolated runtime boundaries (e.g.
production,staging,preview). - Services: The distinct processes running within an environment. An application can have multiple services (
WEB,WORKER,CRON).
Read more about multi-service setup in Services & Cron Jobs.
5. Build Methods & Framework Detection
TurboV automatically selects the optimal build strategy for your project:
| Build Method | Behavior | Best For |
|---|---|---|
| Nixpacks Auto-Detection | Inspects repository files, detects runtime (Node, Go, Python, Rust, PHP), builds optimized container without a Dockerfile. | Zero-config modern apps (Next.js, FastAPI, Gin, Express). |
| Custom Dockerfile | Executes docker build using the Dockerfile in the root (or specified subfolder). | Custom Linux packages, multi-stage builds, specialized binaries. |
| Pre-Built Docker Image | Pulls pre-compiled images from Docker Hub, GHCR, or AWS ECR. | Microservices built via external CI/CD pipelines. |
Explore build configurations in Docker & Nixpacks Deployments.
6. Secrets & Environment Variables
Environment variables are secured using an envelope encryption model:
- A central Key Encryption Key (KEK) is maintained securely in a Key Management Service (KMS).
- When an environment is created, TurboV generates a unique 256-bit Data Encryption Key (DEK).
- Secrets are encrypted using AES-256-GCM with the DEK.
- The DEK itself is stored in encrypted envelope format.
- Secrets are injected at runtime into containers via Docker environment arrays—they are never written into Docker image layers or build caches.
Read more in Environment Variables & Secrets.
7. Domains & Zero-Downtime Deployment Flow
When you push code or trigger a deployment:
- Build Phase: Agent pulls source code, compiles artifacts, and produces a tagged container image.
- Container Launch: A new container starts on a dynamically assigned internal port and joins the
turbovbridge network. - Health Check: The agent performs HTTP health check polling against the container.
- Dynamic Routing: Once healthy, the agent writes a routing rule to
/var/lib/turbov/traefik/dynamic/<appId>.yml. - Instant Switchover: Traefik reloads the router within milliseconds without dropping any in-flight HTTP connections.
- Graceful Drain: The previous container receives
SIGTERM, waits for a 10-second drain window, and is removed.
Learn more about Traefik routing in Domains & SSL.