Your own Vercel/Heroku alternative - push code, get running apps with SSL for €6.50/month.
- 🚀 Auto-deployment - Push to git, app automatically builds and deploys
- 🔒 Automatic HTTPS - Let's Encrypt SSL certificates
- 📦 No Dockerfile needed - kpack auto-detects your framework (Next.js, Angular, Python, Go, etc.)
- 📊 Web Dashboard - Deploy and monitor apps from your browser
- 💰 Dirt cheap - Single Hetzner server for €6.50/month
- Talos Linux - Immutable, secure OS
- Flux - GitOps deployment
- kpack - Cloud-native builds (no Docker needed)
- Traefik - Automatic routing + SSL
- Headlamp - Web UI with deployment dashboard
# Install Bun (if not already installed)
curl -fsSL https://bun.sh/install | bash
# Install minikube (if not already installed)
# macOS: brew install minikube
# Linux: curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
# Windows: choco install minikube
# Install dependencies
cd .dev && bun install && cd ..
# Start local cluster
./dev up
# Access dashboard (token will be displayed automatically)
./dev dashboard
# Open: http://localhost:8080
# Deploy apps from the web UI or CLI
./dev apps- Run
./dev dashboardto open Headlamp - Open http://localhost:8080
- Copy and paste the login token displayed in the terminal
- Click "Deploy Center" in sidebar
- Click "+ Deploy New App"
- Enter your git URL
- Select framework (Next.js, Angular, etc.)
- Click "Deploy"
./dev apps # Interactive selection
./dev logs my-app # View logs
./dev builds # Monitor builds
./dev dashboard # Open HeadlampPrerequisites:
- Terraform installed
- kubectl installed
- Hetzner Cloud account with API token
- Domain name (for SSL certificates)
cd terraform
cp terraform.tfvars.example terraform.tfvars
# Edit terraform.tfvars - add your Hetzner API tokenterraform init
terraform apply
# Get kubeconfig
terraform output -raw germany_kubeconfig > kubeconfig
export KUBECONFIG=$(pwd)/kubeconfigPoint wildcard DNS to your server:
*.yourdomain.com → A → YOUR_SERVER_IP
Get your server IP: terraform output germany_ips
Flux automatically syncs your infrastructure from git:
# Install flux CLI
curl -s https://fluxcd.io/install.sh | bash
# Bootstrap Flux (installs Flux + auto-deploys everything in ./infra)
flux bootstrap github \
--owner=YOUR_GITHUB_USERNAME \
--repository=self-hosted-gitops-cluster-starter \
--branch=main \
--path=./infra \
--personalThat's it! Flux will automatically:
- Install all infrastructure components (kpack, Traefik, Headlamp, etc.)
- Watch your git repo for changes
- Auto-deploy updates when you push to git
Wait 2-3 minutes, then access Headlamp at https://headlamp.yourdomain.com
.
├── dev # 🎯 CLI tool (./dev up to start)
├── terraform/ # Hetzner Cloud infrastructure
├── infra/ # Core components (Flux, kpack, Traefik, etc.)
└── apps/ # Your applications (templates included)
- bunjs-example - Bun.js web app
- immich - Photo management (self-hosted Google Photos)
- supabase - Firebase alternative (PostgreSQL + Auth + Storage)
Single Server (Germany):
- Hetzner CX22: €6.50/month (2 vCPU, 4GB RAM, 40GB SSD)
- Domain: ~€10/year
Total: ~€6.50/month (excluding domain)
Dual Region (optional):
- 2x CX22: €13/month
- High availability across Finland + Germany
./dev up # Start local cluster
./dev down # Stop cluster
./dev apps # Select apps to run
./dev logs <app> # View app logs
./dev builds # Monitor kpack builds
./dev dashboard # Open Headlamp UI1. Push code to GitHub
↓
2. kpack detects changes
↓
3. Builds container image (no Dockerfile needed)
↓
4. Pushes to registry
↓
5. Flux deploys to cluster
↓
6. Traefik routes traffic + provisions SSL
↓
7. Your app is live! 🎉
- Local Development: Run
./dev upand deploy apps from Headlamp UI - Production Setup: Follow the 5-step guide above
- Add Custom App: See
apps/bunjs-example/for template - Troubleshooting: Check build logs in Headlamp "Deploy Center"
| Component | Purpose | Why? |
|---|---|---|
| Talos | OS | Immutable, secure, no SSH needed |
| Flux | GitOps | Auto-syncs from git |
| kpack | Builds | Cloud-native, no Docker daemon |
| Traefik | Ingress | Auto SSL, easy config |
| Headlamp | UI | Deploy from browser |
| Cilium | Networking | eBPF-based, fast |
- Personal projects
- Side projects
- Small team apps
- Learning Kubernetes
- Portfolio hosting
- Replace Vercel/Heroku for hobby projects
- Mission-critical production apps (single node = no HA)
- High traffic apps (1 server has limits)
- Enterprise compliance requirements
For those cases, consider managed Kubernetes (GKE, EKS, AKS) or multi-node setup.
PRs welcome! This is a learning-friendly project.
MIT - Use freely!
Built with ❤️ for developers who want simple, cheap, self-hosted deployments.