The official Helm chart of Baserow can be found here https://artifacthub.io/packages/helm/baserow-chart/baserow. By default, it includes everything you need like PostgreSQL, Redis, MinIO for S3, and Caddy for automatic SSL certificates. Here you can also documentation for all the configuration possibilities like using an external PostgreSQL server, how to setup Caddy with various Cloud providers, add environment variables, and more.
Before installing Baserow with Helm, ensure you have:
baserow.example.com)api.baserow.example.com)objects.baserow.example.com)First, add the Baserow Helm chart repository:
helm repo add baserow-chart https://baserow.gitlab.io/baserow-chart
helm repo update
Create a config.yaml file with the minimum configuration that defines the domains
you would like it to run on:
global:
baserow:
domain: "your-baserow-domain.com"
backendDomain: "api.your-baserow-domain.com"
objectsDomain: "objects.your-baserow-domain.com"
To install the chart with the release name my-baserow, run:
helm install my-baserow baserow-chart/baserow \
--namespace baserow \
--create-namespace \
--values config.yaml
From source code
helm dependency update
helm install my-baserow ./chart/baserow \
--namespace baserow \
--create-namespace \
--values config.yaml
helm upgrade my-baserow ./chart/baserow \
--namespace baserow \
--values config.yaml
Check the deployment status:
# Check pod status
kubectl get pods -n baserow
# Check services
kubectl get services -n baserow
# Check ingress
kubectl get ingress -n baserow
Wait for all pods to be in Running state. This may take several minutes on first install.
Once all pods are running, access Baserow at the domain you configured.
Before upgrading, check your current installed version:
helm list -n baserow
Ensure you have the latest chart versions:
helm repo update baserow-chart
To see available chart versions:
helm search repo baserow-chart/baserow --versions
To upgrade to the latest Baserow version using the latest chart:
helm upgrade my-baserow baserow-chart/baserow \
--namespace baserow \
--values config.yaml
You can specify a particular Baserow version by updating your config.yaml:
global:
baserow:
image: 2.0.1
Or specify the chart version directly:
helm upgrade my-baserow baserow-chart/baserow \
--namespace baserow \
--values config.yaml \
--version 1.0.36
After upgrading, verify the new version is running:
# Check pod status
kubectl get pods -n baserow
# Check Baserow version
kubectl logs -n baserow deployment/my-baserow-baserow-backend-wsgi | grep "Baserow"
If the upgrade fails, you can rollback to the previous version:
# List release history
helm history my-baserow -n baserow
# Rollback to previous revision
helm rollback my-baserow -n baserow
# Or rollback to specific revision
helm rollback my-baserow 1 -n baserow
Baserow supports multiple AI providers for generative AI features and the AI assistant. To enable AI capabilities, you need to configure the embeddings service and AI providers.
Add to your config.yaml:
baserow-embeddings:
enabled: true
assistantLLMModel: "groq/openai/gpt-oss-120b"
backendSecrets:
GROQ_API_KEY: "your-groq-api-key"
To enable AI field with multiple providers:
backendSecrets:
# OpenAI
BASEROW_OPENAI_API_KEY: "sk-..."
BASEROW_OPENAI_MODELS: "gpt-3.5-turbo,gpt-4o"
# Anthropic
BASEROW_ANTHROPIC_API_KEY: "sk-ant-..."
BASEROW_ANTHROPIC_MODELS: "claude-3-5-sonnet-20241022"
# Mistral
BASEROW_MISTRAL_API_KEY: "..."
BASEROW_MISTRAL_MODELS: "mistral-large-latest"
For self-hosted Ollama:
backendConfigMap:
BASEROW_OLLAMA_HOST: "http://ollama-service:11434"
BASEROW_OLLAMA_MODELS: "llama2,mistral"
See the official Helm chart documentation for detailed AI configuration options.
Minikube is an excellent way to run a local Kubernetes cluster for testing and development. This guide will walk you through setting up Minikube and deploying Baserow using the official Helm chart.
Start Minikube with recommended resources for Baserow:
# Start with 4GB RAM and 2 CPUs (adjust based on your system)
minikube start --memory=4096 --cpus=2
# Verify cluster is running
kubectl cluster-info
kubectl get nodes
Enable the ingress addon for routing traffic:
minikube addons enable ingress
# Verify ingress controller is running
kubectl get pods -n ingress-nginx
For local testing, you’ll need to configure local DNS or use /etc/hosts. Get your Minikube IP:
minikube ip
Add entries to your /etc/hosts file (replace <MINIKUBE_IP> with the actual IP):
<MINIKUBE_IP> baserow.local
<MINIKUBE_IP> api.baserow.local
<MINIKUBE_IP> objects.baserow.local
Create a config.yaml file for local testing:
global:
baserow:
domain: "baserow.local"
backendDomain: "api.baserow.local"
objectsDomain: "objects.baserow.local"
# Disable Caddy since we're using Minikube ingress
caddy:
enabled: false
# Use smaller resource requests for local testing
baserow-backend-wsgi:
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
baserow-backend-asgi:
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
baserow-frontend:
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
# Configure ingress for Minikube
ingress:
enabled: true
className: "nginx"
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "false"
Add the Baserow Helm repository and install:
# Add Baserow chart repository
helm repo add baserow-chart https://baserow.gitlab.io/baserow-chart
helm repo update
# Install Baserow
helm install baserow baserow-chart/baserow \
--namespace baserow \
--create-namespace \
--values config.yaml
Watch the pods come up:
# Watch all pods
kubectl get pods -n baserow -w
# Check deployment status
kubectl get deployments -n baserow
# Check services
kubectl get services -n baserow
# Check ingress
kubectl get ingress -n baserow
Wait until all pods show Running status. This may take 5-10 minutes on first deployment.
Once all pods are running, access Baserow at:
# Port-forward to access directly (alternative to ingress)
kubectl port-forward -n baserow svc/baserow-baserow-frontend 8000:80
# Access at http://localhost:8000
Pods not starting:
# Check pod logs
kubectl logs -n baserow <pod-name>
# Describe pod for events
kubectl describe pod -n baserow <pod-name>
Out of resources:
# Increase Minikube resources
minikube stop
minikube delete
minikube start --memory=8192 --cpus=4
Ingress not working:
# Check ingress controller
kubectl get pods -n ingress-nginx
# Check ingress configuration
kubectl describe ingress -n baserow
When done testing, you can clean up:
# Uninstall Baserow
helm uninstall baserow -n baserow
# Delete namespace
kubectl delete namespace baserow
# Stop Minikube
minikube stop
# Delete Minikube cluster
minikube delete
Find the community Baserow helm chart here maintained by Christian Huth.
We recommend that you:
backend.ingress.enabled=truefrontend.ingress.enabled=trueconfig.publicFrontendUrl=https://your-baserow-servers-domain.comconfig.publicBackendUrl=https://api.your-baserow-servers-domain.combackend.config.aws variables to upload and serve user
files in a S3 compatible service of your own choosing.