open-webui
Open WebUI — chat frontend for OpenAI-compatible backends, Postgres persistence, uploads/RAG storage, OIDC SSO, optional Redis cache
@r8s/open-webui
Components (1)
OpenWebui
Open WebUI — self-hosted chat frontend for OpenAI-compatible backends.
import { Platform } from '@r8s/recipes'
import { OpenWebui } from '@r8s/open-webui'
export default (
<Platform secrets={{ backend: 'openbao', mount: 'kv', path: 'apps' }}>
<OpenWebui name="chat" host="chat.example.com" version="v0.6.5" storage="10Gi" />
</Platform>
)
namestringOptional—Resource name (defaults to 'open-webui')
namespacestringOptional—Kubernetes namespace (defaults to 'default')
versionstringOptional—Container image tag (defaults to 'latest' — pin a version in production)
hoststringRequired—Public hostname for the chat UI (required)
replicasnumberOptional—Number of replicas (defaults to 1). Multiple replicas need a shared object store for uploads/RAG (this recipe errors when storage is set with replicas > 1 — its PVC is ReadWriteOnce) and Redis-backed websocket coordination (WEBSOCKET_MANAGER=redis + REDIS_URL).
storagestringOptional—PVC size for uploads and RAG document storage (e.g. '10Gi'). When set, a ${name}-uploads PersistentVolumeClaim is rendered and mounted at /app/backend/data. WebService cannot express volume mounts, which is why this component composes a raw Deployment (probes /health:8080). The PVC is ReadWriteOnce — combining this with replicas > 1 throws (single-node attach); multi-replica installs must move files/RAG to an S3-compatible store and set WEBSOCKET_MANAGER=redis.
backendstringOptional—OpenAI-compatible API base URL for the model backend (defaults to 'https://api.berget.ai/v1'). The key itself is never passed as a prop — it arrives via secretKeyRef from the secrets bundle below.
secretsNamestringOptional—Name of an existing Secret holding modelApiKey (the key used to call backend) and secretKey (the WEBUI_SECRET_KEY used to sign auth tokens). Required unless a secrets backend (openbao/vault) is configured on the surrounding Platform — the backend then provisions both keys automatically. Plaintext keys are not supported.
sso{ issuer: string, clientId: string, clientSecretRef: SecretRef, scopes?: string }Optional—OAuth/OIDC SSO client — register Open WebUI as a client in Keycloak (the Auth recipe) and reference the client secret through the backend. Uses the upstream OAUTH_* env names; OPENID_PROVIDER_URL carries the issuer (Open WebUI appends /.well-known/openid-configuration itself).
cachebooleanOptional—Provision a redis-backed replication group for caching/events (default: false)
offlinebooleanOptional—Air-gapped installs: sets OFFLINE_MODE (disable runtime model/param fetches), removes the update checks and disables the native Ollama API — only OpenAI-compatible backends are served (default: false).
resources{ requests?: { cpu?: string, memory?: string }, limits?: { cpu?: string, memory?: string } }Optional—Requested resources
tls{ secretName: string, clusterIssuer: string }Optional—TLS configuration (defaults to letsencrypt-prod cluster issuer)