Uncloud is configured through environment variables and a config.yaml file.

Environment Variables

Frontend

config.yaml

The main configuration file lives at the project root:

App Platform Configuration

Base Domain

The base_domain setting controls how apps get their default URLs:
Example with base_domain: go4.site:
  • App “my-api” → my-api.go4.site
  • App “dashboard” → dashboard.go4.site

TLS Setup

For HTTPS on the default domain, you need a wildcard TLS certificate:
For custom domains, configure a cert-manager ClusterIssuer:

Storage Configuration

Block Storage

Set the block_class to match your cluster’s StorageClass:

Object Storage

Configure S3-compatible storage credentials:

Kubernetes Auto-Detection

Uncloud automatically detects the Kubernetes configuration:
  1. KUBECONFIG environment variable (highest priority)
  2. /etc/rancher/k3s/k3s.yaml (K3s default)
  3. /var/snap/microk8s/current/credentials/client.config (MicroK8s)
  4. ~/.kube/config (standard kubectl config)

Database

The SQLite database is created automatically at the DB_PATH location. No configuration needed.
For production, store the database on persistent storage and include it in your backup strategy.

Sync Loop

The reconciliation loop between SQLite and Kubernetes runs every 15 seconds. This interval is not currently configurable but handles:
  • Creating K8s resources for new SQLite records
  • Pulling runtime status (IPs, phases, ready counts) back to SQLite
  • Updating resource statuses across the system