Manual Setup
The TUI Installer handles all steps on this page automatically. Use the manual setup only if you need full control over the Kubernetes configuration or are integrating into an existing setup.
Deploy Lakehousecat locally on your Mac or Linux machine for single-user evaluation, development, and testing using Minikube.
Prerequisites
System Requirements
- 8 CPU cores (minimum) / 10 cores (recommended) — below 8 cores, Kubernetes cannot schedule all services (~6.8 cores total CPU requests)
- 16 GB RAM (minimum) / 24 GB RAM (recommended) — below 16 GB is not supported
- 50 GB free disk space — SSD strongly recommended
- macOS or Linux
Required Software
- Docker — Must be running before starting Minikube
- Minikube — The only supported local Kubernetes option
- kubectl — Kubernetes command-line tool
- Helm — Version 3.8 or higher
- Handshake Key — From portal.lakehousecat.com (free registration)
Step 1: Install Minikube
macOS:
brew install minikube
Linux:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
Verify installation:
minikube version
Step 2: Start Minikube Cluster
Lakehousecat runs in a dedicated Minikube profile named lakehousecat. This keeps the deployment fully isolated from any other Minikube clusters you may have running.
minikube start \
--profile=lakehousecat \
--cpus=10 \
--memory=32768 \
--disk-size=50g \
--driver=docker \
--kubernetes-version=v1.29.0
Recommended values for stable operation. Minimum supported: --cpus=8 --memory=16384. Below 8 CPUs, Kubernetes cannot schedule all service pods. Below 16 GB RAM, OOM kills are likely.
Verify the cluster is running:
minikube status --profile=lakehousecat
kubectl cluster-info
kubectl get nodes
Step 3: Enable Required Addons
minikube addons enable storage-provisioner --profile=lakehousecat
minikube addons enable default-storageclass --profile=lakehousecat
Step 4: Install Helm
macOS:
brew install helm
Linux: See helm.sh/docs/intro/install.
Step 5: Install Lakehousecat Operator
helm repo add lakehousecat https://charts.lakehousecat.com
helm repo update
helm install lhc-operator lakehousecat/lakehousecat-operator \
--namespace lhc-operator \
--create-namespace \
--wait
Verify the operator is running:
kubectl get pods -n lhc-operator
Step 6: Create Handshake Secret
Get your handshake key from portal.lakehousecat.com, then create the secret:
kubectl create secret generic lhc-handshake-secret \
--from-literal=handshake-key=YOUR_HANDSHAKE_KEY_FROM_PORTAL \
-n lhc-operator
Step 7: Deploy Lakehousecat Instance
Create a minimal configuration for local evaluation:
apiVersion: lhc.lakehousecat.com/v1alpha2
kind: Lakehousecat
metadata:
name: local-eval
spec:
license:
handshakeSecretName: "lhc-handshake-secret"
customer:
namespace: "lhc-instance"
adminemail: "admin@example.com"
version: "0.0.40"
architecture: "amd64" # Use "arm64" for Apple Silicon
analytics:
replicaCount: 1
resources:
requests:
cpu: "500m"
memory: "2Gi"
limits:
cpu: "1"
memory: "4Gi"
lhc:
replicaCount: 1
resources:
requests:
cpu: "500m"
memory: "1Gi"
ui:
replicaCount: 1
resources:
requests:
cpu: "250m"
memory: "512Mi"
postgresql:
persistence:
size: "10Gi"
clickhouse:
persistence:
size: "20Gi"
seaweedfs:
persistence:
size: "10Gi"
Apply the configuration:
kubectl apply -f lhc-instance.yaml
Step 8: Monitor Deployment
kubectl get lakehousecat -w
kubectl get pods -n lhc-instance -w
kubectl logs -f deployment/lhc-operator -n lhc-operator
Initial deployment may take 30–60 minutes as container images are pulled and all services start and interconnect.
Step 9: Retrieve Admin Credentials
kubectl get secret lhc-admin-secret -n lhc-instance \
-o jsonpath='{.data.LHC_ADMIN_EMAIL}' | base64 -d && echo
kubectl get secret lhc-admin-secret -n lhc-instance \
-o jsonpath='{.data.LHC_ADMIN_PASSWORD}' | base64 -d && echo
Step 10: Access Lakehousecat
Set up port-forwarding and keep the terminal open:
kubectl port-forward svc/lhc -n lhc-instance 42021:42021
Open http://localhost:42021 in your browser and log in with the credentials from the previous step.
Troubleshooting
Pods Pending — Insufficient Resources
kubectl describe nodes
kubectl describe pod -n lhc-instance <pod-name>
Increase Minikube resources and restart:
minikube stop
minikube start --cpus=10 --memory=32768 --disk-size=50g --driver=docker
Image Pull Errors (ImagePullBackOff)
kubectl logs -f deployment/lhc-operator -n lhc-operator
kubectl get secret lhc-handshake-secret -n lhc-operator -o yaml
Ensure your handshake key is valid and the subscription is active.
Slow Performance
- Use SSD storage for the Minikube disk
- Disable optional services (monitoring) in the CR
Stopping and Restarting
# Stop the lakehousecat profile (preserves data)
minikube stop --profile=lakehousecat
# Start again
minikube start --profile=lakehousecat
kubectl get lakehousecat
To remove the instance completely:
kubectl delete lakehousecat local-eval
kubectl delete namespace lhc-instance
minikube delete --profile=lakehousecat
Next Steps
- Follow the Guides to connect a data source and create your first model
- Review Subscription tiers to upgrade from FREE
- For production deployments, see the Kubernetes Cluster guides