VPS Setup Guide¶
Deploy the full DataEngineX platform on a single VPS using K3s.
Prerequisites¶
- VPS Provider: Hetzner Cloud (recommended), DigitalOcean, or any Linux VPS
- Specs: Minimum 4 vCPU, 8 GB RAM, 80 GB SSD
- OS: Ubuntu 22.04 or Debian 12
- Domain: Registered domain with Cloudflare DNS (optional)
- SSH Key: Ed25519 key pair (
ssh-keygen -t ed25519)
Quick Start¶
# 1. Clone the infradex repo
git clone https://github.com/TheDataEngineX/infradex.git
cd infradex
# 2. Copy and edit configuration
cp ansible/inventory/hosts.example.yml ansible/inventory/hosts.yml
# Edit hosts.yml with your VPS IP and SSH key path
# 3. Run the one-click deploy
./scripts/one-click-deploy.sh
Manual Setup¶
1. Provision VPS (Hetzner)¶
# Install hcloud CLI
brew install hcloud # macOS
# or: snap install hcloud
# Create server
hcloud server create \
--name dex-server \
--type cx31 \
--image ubuntu-22.04 \
--ssh-key your-key-name \
--location nbg1
2. Install K3s¶
3. Deploy Platform¶
# Set kubeconfig
export KUBECONFIG=./kubeconfig
# Install core services
helm install dataenginex helm/charts/dataenginex -f helm/values/values-vps.yaml
helm install dex-studio helm/charts/dex-studio -f helm/values/values-vps.yaml
4. Setup Monitoring¶
5. Configure DNS (Optional)¶
cd terraform/modules/dns-cloudflare
terraform init
terraform apply \
-var="zone_id=YOUR_ZONE_ID" \
-var="domain=dataenginex.dev" \
-var="subdomain=api" \
-var="ip_address=YOUR_VPS_IP" \
-var="api_token=YOUR_CF_TOKEN"
Verification¶
# Check all pods are running
kubectl get pods -A
# Check service health
curl http://YOUR_VPS_IP:17000/health # dataenginex
Resource Budget (8 GB VPS)¶
| Component | CPU | Memory |
|---|---|---|
| K3s system | 250m | 512Mi |
| dataenginex | 500m | 512Mi |
| dex-studio | 100m | 128Mi |
| PostgreSQL | 250m | 256Mi |
| Redis | 100m | 128Mi |
| Prometheus | 100m | 256Mi |
| Grafana | 50m | 64Mi |
| Total | 1.35 | ~1.8Gi |
Leaves ~6 GB headroom for spikes and OS.