Install with Helm

Official Helm chart

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.

Prerequisites

Before installing Baserow with Helm, ensure you have:

  1. Kubernetes Cluster: A running Kubernetes cluster (v1.19+)
  2. Helm: Helm 3.x installed (installation guide)
  3. kubectl: Configured to access your cluster
  4. Domains: Three DNS records (or subdomains) pointing to your cluster:
    • Main domain (e.g., baserow.example.com)
    • Backend API domain (e.g., api.baserow.example.com)
    • Objects/media domain (e.g., objects.baserow.example.com)

Installation

Step 1: Add the Helm repository

First, add the Baserow Helm chart repository:

helm repo add baserow-chart https://baserow.gitlab.io/baserow-chart
helm repo update

Step 2: Create configuration file

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"

Step 3: Install the chart

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

Step 4: Verify installation

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.

Step 5: Access Baserow

Once all pods are running, access Baserow at the domain you configured.

Upgrading

Check current version

Before upgrading, check your current installed version:

helm list -n baserow

Update Helm repository

Ensure you have the latest chart versions:

helm repo update baserow-chart

Check available versions

To see available chart versions:

helm search repo baserow-chart/baserow --versions

Upgrade to latest version

To upgrade to the latest Baserow version using the latest chart:

helm upgrade my-baserow baserow-chart/baserow \
  --namespace baserow \
  --values config.yaml

Upgrade to specific version

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

Verify upgrade

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"

Rollback if needed

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

Configuring AI Features

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.

Enable AI Assistant with Embeddings

Add to your config.yaml:

baserow-embeddings:
  enabled: true
  assistantLLMModel: "groq/openai/gpt-oss-120b"

backendSecrets:
  GROQ_API_KEY: "your-groq-api-key"

Configure Additional AI Providers

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.

Testing Baserow with Minikube

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.

Prerequisites

  1. Install Minikube
  2. Install Helm
  3. Install kubectl

Step 1: Start Minikube

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

Step 2: Enable required addons

Enable the ingress addon for routing traffic:

minikube addons enable ingress

# Verify ingress controller is running
kubectl get pods -n ingress-nginx

Step 3: Configure local DNS

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

Step 4: Create Baserow configuration

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"

Step 5: Install Baserow

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

Step 6: Monitor deployment

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.

Step 7: Access Baserow

Once all pods are running, access Baserow at:

Step 8: Test the deployment

# Port-forward to access directly (alternative to ingress)
kubectl port-forward -n baserow svc/baserow-baserow-frontend 8000:80

# Access at http://localhost:8000

Troubleshooting

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

Cleanup

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

Alternative Community Maintained Helm Chart

Find the community Baserow helm chart here maintained by Christian Huth.

We recommend that you:

  1. Run the chart with ingress enabled:
    1. backend.ingress.enabled=true
    2. frontend.ingress.enabled=true
  2. Make sure you configure two domains, one for the backend api API one for the frontend server.
    1. Set config.publicFrontendUrl=https://your-baserow-servers-domain.com
    2. Set config.publicBackendUrl=https://api.your-baserow-servers-domain.com
  3. Configure all the relevant backend.config.aws variables to upload and serve user files in a S3 compatible service of your own choosing.