Skip to content

feat: add openweb ui doc#122

Open
gdzamg wants to merge 1 commit intomainfrom
feat/solution-open-webui
Open

feat: add openweb ui doc#122
gdzamg wants to merge 1 commit intomainfrom
feat/solution-open-webui

Conversation

@gdzamg
Copy link

@gdzamg gdzamg commented Jan 30, 2026

Summary by CodeRabbit

  • Documentation
    • Added a comprehensive OpenWebUI deployment and usage guide covering product overview, core features (conversation, multimodal/voice, external tool extension), backend integration and connection options, Kubernetes deployment steps and sample manifests, important environment variables, verification and access methods (NodePort), initial admin setup, adding inference services, and instructions for using voice, multimodal, and external-tool inference.

@gdzamg gdzamg requested a review from a team January 30, 2026 02:18
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 30, 2026

Walkthrough

Adds a new documentation guide describing how to deploy and use OpenWebUI, covering features, backend integration, Kubernetes deployment manifests, important environment variables, verification steps, access methods, and initial setup for connecting inference services.

Changes

Cohort / File(s) Summary
Documentation Addition
docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md
New guide explaining OpenWebUI overview, conversation/multimodal/voice features, backend connection parameters, Kubernetes deployment example (namespace, Deployment manifest, env vars like ENABLE_DIRECT_CONNECTIONS, OPENAI_API_BASE_URL, PORT), NodePort access, verification commands, and steps to add/configure inference connections.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Suggested reviewers

  • sinbadonline
  • typhoonzero

Poem

🐇 I hopped through docs at dawn's first light,
Brought manifests, flags, and a NodePort bright,
Connections set and services spun,
OpenWebUI ready — deployment fun,
Hooray, the rabbit hops, the cluster hums!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: add openweb ui doc' is directly related to the main change, which adds a new documentation file for OpenWebUI deployment and usage.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/solution-open-webui

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🤖 Fix all issues with AI agents
In `@docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md`:
- Around line 61-62: Add a short "Security Considerations" section after the
deployment or environment variables section that documents the risks of setting
ENABLE_DIRECT_CONNECTIONS to "true" and lists practical precautions: only enable
in trusted/authenticated environments, warn about data exfiltration and
credential exposure, advise monitoring outbound connections, suggest
egress/network policies, and recommend keeping it false in production or
pre-configuring allowed backends; reference ENABLE_DIRECT_CONNECTIONS by name in
the text so readers can correlate the guidance with the environment variable.
- Around line 63-64: The YAML snippet uses a placeholder value for
OPENAI_API_BASE_URL ("http://example-predictor/v1") that must not be deployed
as-is; update the docs and the YAML example to mark this value explicitly as a
placeholder (e.g., add a comment inline in the YAML and a warning sentence in
the surrounding documentation) and add a short note telling users to replace
OPENAI_API_BASE_URL with their actual predictor/service URL before deployment;
reference the OPENAI_API_BASE_URL key and the placeholder value so reviewers can
locate and update the example and the descriptive text.
- Around line 52-54: Replace the ephemeral emptyDir volume named webui-data with
a PersistentVolumeClaim: create a PVC manifest (e.g., metadata.name:
open-webui-pvc, namespace: open-webui-ns, spec.resources.requests.storage: 5Gi,
accessModes: [ReadWriteOnce]) and update the Deployment's volumes to reference
that claim (use persistentVolumeClaim.claimName: open-webui-pvc for the
webui-data volume) while leaving the existing volumeMounts unchanged; ensure the
PVC is applied to the cluster before deploying the Deployment so the pod can
bind to the persistent storage.
- Around line 1-7: The YAML front matter is malformed (incorrect indentation and
list structure for keys like products, kind, and ProductsVersion); fix it by
converting the block into valid YAML mapping: ensure "products:" maps to a list
containing "Alauda AI", "kind:" is a scalar with value "Solution", and
"ProductsVersion:" is a scalar with value "4.x" (i.e., replace the current
alternating dash lines with proper key: value and products: - Alauda AI
structure) so the front matter parses correctly.
- Line 56: The deployment example currently uses the unpinned image reference
"ghcr.io/open-webui/open-webui" which defaults to :latest; update the image
declaration in the manifest (the line containing the image reference
"ghcr.io/open-webui/open-webui") to pin a specific version tag or immutable
digest (for example replace with "ghcr.io/open-webui/open-webui:vX.Y.Z" or
"@sha256:<digest>") to ensure reproducible, predictable deployments.
🧹 Nitpick comments (6)
docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md (6)

12-12: Optional: Improve sentence variety.

Three consecutive sentences in the overview begin with "It," which impacts readability slightly.

✍️ Suggested rewording
-OpenWebUI is an open-source AI Web interface that supports docking with multiple OpenAI protocol-compatible inference backends (such as vLLM, MLServer, XInference, etc.) through a unified entry point. It is used for scenarios such as text generation, multimodal input, and voice input. It provides an extensible external tool mechanism to facilitate the integration of retrieval, function calling, and third-party services. It is suitable for deployment in containers locally or in the cloud, supporting persistent data and Ingress-based HTTPS access.
+OpenWebUI is an open-source AI Web interface that supports docking with multiple OpenAI protocol-compatible inference backends (such as vLLM, MLServer, XInference, etc.) through a unified entry point. This interface is used for scenarios such as text generation, multimodal input, and voice input. The platform provides an extensible external tool mechanism to facilitate the integration of retrieval, function calling, and third-party services, and is suitable for deployment in containers locally or in the cloud, supporting persistent data and Ingress-based HTTPS access.

21-21: Optional: Use hyphenated compound modifier.

"OpenAI API style" should be hyphenated when used as a compound modifier.

-- **Protocol Compatibility**: Support OpenAI API style backends (such as vLLM, MLServer, XInference, TGI, etc.).
+- **Protocol Compatibility**: Support OpenAI API-style backends (such as vLLM, MLServer, XInference, TGI, etc.).

87-91: Clarify the difference between internal and external URLs.

The explanation mentions "internal cluster address" but could be clearer about when to use internal vs. external URLs. Consider adding an example to illustrate both scenarios.

📝 Suggested enhancement
 ### OPENAI_API_BASE_URL
 * Specifies the default inference service endpoint.
 * If OpenWebUI and the inference service are deployed in the same cluster, use the service's internal cluster address.
+  * Example internal URL: `http://inference-service.aml-namespace.svc.cluster.local/v1`
 * For the address details, refer to: **AML Business View / Inference Service / Inference Service Details / Access Method**.
 * Value format: `{{Cluster Internal URL}}/v1`.

94-98: Consider adding additional verification steps.

The current verification only checks deployment status. Consider adding steps to verify pod health and connectivity to the inference backend.

🔍 Enhanced verification steps
 ### Verification
 ```bash
 kubectl get deployment open-webui -n open-webui-ns -w

Wait until the deployment status is 1/1 Ready.
+
+Verify the pod is running and check logs:
+bash +# Check pod status +kubectl get pods -n open-webui-ns -l app=open-webui + +# Check pod logs for any errors +kubectl logs -n open-webui-ns -l app=open-webui --tail=50 +

</details>

---

`100-122`: **Add guidance for production access methods.**

The documentation only covers NodePort access, which exposes the service on all nodes and is not recommended for production. Consider adding guidance for production-ready access methods.



<details>
<summary>🌐 Suggested addition for production access</summary>

Add a subsection after the NodePort service:

```markdown
### Alternative: Access via Ingress (Recommended for Production)

For production environments, use an Ingress resource with TLS:

```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: open-webui-ingress
  namespace: open-webui-ns
  annotations:
    cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
  ingressClassName: nginx
  tls:
  - hosts:
    - open-webui.example.com
    secretName: open-webui-tls
  rules:
  - host: open-webui.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: svc-open-webui
            port:
              number: 8080

Note: Update the Service type to ClusterIP when using Ingress.

</details>

---

`131-131`: **Optional: Use American English spelling.**

"Afterwards" is British English; "afterward" is preferred in American English documentation.


```diff
-Fill it in afterwards. Please use the cluster **external** access method.
+Fill it in afterward. Please use the cluster **external** access method.

Comment on lines +1 to +7
products:
- Alauda AI
kind:
- Solution
ProductsVersion:
- 4.x
---
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Fix YAML front matter structure.

The YAML front matter has structural issues with indentation and key-value pairing. Lines 2-5 appear malformed.

📝 Proposed fix for YAML structure
 products:
-- Alauda AI
-  kind:
+  - Alauda AI
+kind:
 - Solution
-  ProductsVersion:
+productsVersion:
 - 4.x
 ---
🤖 Prompt for AI Agents
In `@docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md` around lines 1 - 7, The
YAML front matter is malformed (incorrect indentation and list structure for
keys like products, kind, and ProductsVersion); fix it by converting the block
into valid YAML mapping: ensure "products:" maps to a list containing "Alauda
AI", "kind:" is a scalar with value "Solution", and "ProductsVersion:" is a
scalar with value "4.x" (i.e., replace the current alternating dash lines with
proper key: value and products: - Alauda AI structure) so the front matter
parses correctly.

- name: webui-data
emptyDir: {}
containers:
- image: ghcr.io/open-webui/open-webui
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

open-webui latest stable container image version ghcr.io

💡 Result:

Latest stable Open WebUI container image on GHCR is v0.7.2 (released 2026-01-10). [1]

Use:

  • ghcr.io/open-webui/open-webui:v0.7.2 [1]

(For production, Open WebUI recommends pinning a specific release tag like this rather than floating tags such as :main.) [2]


Pin the container image to a specific version.

The image ghcr.io/open-webui/open-webui has no tag specified, defaulting to :latest. This can cause unpredictable behavior and version drift in production deployments.

-      - image: ghcr.io/open-webui/open-webui
+      - image: ghcr.io/open-webui/open-webui:v0.7.2
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- image: ghcr.io/open-webui/open-webui
- image: ghcr.io/open-webui/open-webui:v0.7.2
🤖 Prompt for AI Agents
In `@docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md` at line 56, The
deployment example currently uses the unpinned image reference
"ghcr.io/open-webui/open-webui" which defaults to :latest; update the image
declaration in the manifest (the line containing the image reference
"ghcr.io/open-webui/open-webui") to pin a specific version tag or immutable
digest (for example replace with "ghcr.io/open-webui/open-webui:vX.Y.Z" or
"@sha256:<digest>") to ensure reproducible, predictable deployments.

Comment on lines +61 to +62
- name: ENABLE_DIRECT_CONNECTIONS
value: "true"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Document security implications of enabling direct connections.

Setting ENABLE_DIRECT_CONNECTIONS to "true" allows users to add arbitrary external inference service backends, which may have security implications (data exfiltration, credential exposure, cost implications). Consider adding a security note explaining when this should be enabled and what precautions to take.

📋 Suggested security guidance to add

Add a security considerations section after the deployment or in the environment variables section:

### Security Considerations

**ENABLE_DIRECT_CONNECTIONS**: When set to `true`, users can configure OpenWebUI to connect to external inference services. Consider the following:
- Only enable this in trusted environments or when users are authenticated and authorized
- External connections may expose sensitive data or credentials
- Monitor outbound connections to prevent data exfiltration
- Consider using network policies to restrict egress traffic
- For production environments, consider setting this to `false` and pre-configuring allowed backends
🤖 Prompt for AI Agents
In `@docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md` around lines 61 - 62,
Add a short "Security Considerations" section after the deployment or
environment variables section that documents the risks of setting
ENABLE_DIRECT_CONNECTIONS to "true" and lists practical precautions: only enable
in trusted/authenticated environments, warn about data exfiltration and
credential exposure, advise monitoring outbound connections, suggest
egress/network policies, and recommend keeping it false in production or
pre-configuring allowed backends; reference ENABLE_DIRECT_CONNECTIONS by name in
the text so readers can correlate the guidance with the environment variable.

spec:
volumes:
- name: webui-data
emptyDir: {}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

小兔子给的建议是,不要用 emtyDir,应该用pvc,你看下呢。 emtypDir, pod重启,数据就没了。

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OCP 用的就是 emptyDir,这里和他一致吧,用户真正部署时,如果自己有 pvc 应该会调整的

- Solution
ProductsVersion:
- 4.x
---
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这个metada的格式不对啊,应该是:

---
products:
   - Alauda AI
kind:
   - Solution
ProductsVersion:
   - 4.x
---

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (2)
docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md (2)

84-87: ⚠️ Potential issue | 🟠 Major

Add security guardrails for ENABLE_DIRECT_CONNECTIONS=true.

The section explains what it does but not when it is unsafe. Please add a short warning on data exfiltration/egress control and recommend disabling in production unless explicitly required.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md` around lines 84 - 87,
Add a concise security warning below the ENABLE_DIRECT_CONNECTIONS block:
explain that setting ENABLE_DIRECT_CONNECTIONS=true allows external inference
backends and can expose data to third-party services, advise disabling it in
production unless explicitly required, and recommend reviewing egress controls,
network policies, and data exfiltration risks before enabling; reference the
configuration key ENABLE_DIRECT_CONNECTIONS and suggest adding the warning as an
indented bullet or warning note directly after the existing purpose line.

53-55: ⚠️ Potential issue | 🟠 Major

Persistent storage claim conflicts with emptyDir usage.

emptyDir is ephemeral, so data is lost after pod rescheduling/restart. This contradicts the “supporting persistent data” statement (Line 13). Either switch to PVC in the example or explicitly state this manifest is non-persistent.

Suggested doc-safe wording fix (if keeping emptyDir)
- It is suitable for deployment in containers locally or in the cloud, supporting persistent data and Ingress-based HTTPS access.
+ It is suitable for deployment in containers locally or in the cloud, and supports persistent data (when backed by a PVC) and Ingress-based HTTPS access.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md` around lines 53 - 55,
The manifest uses an ephemeral emptyDir for the volume named webui-data which
contradicts the “supporting persistent data” wording; either replace emptyDir
with a persistentVolumeClaim reference (e.g., switch the webui-data volume to
use a PVC and add a matching volumeClaimTemplates/claim definition) or update
the text to explicitly state this example is non-persistent and will lose data
on pod reschedule/restart; locate the volume block that references webui-data
and make the corresponding change to the volume spec and documentation text.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md`:
- Line 22: Update wording for US English/style in the documentation by replacing
“OpenAI API style backends” with “OpenAI API-compatible backends” (or
“API-style”) where the phrase appears (reference: the sentence beginning with
“Protocol Compatibility”), and change “afterwards” to “afterward” in the later
paragraph that uses that term (reference: the occurrence near the sentence
around Line 132).

---

Duplicate comments:
In `@docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md`:
- Around line 84-87: Add a concise security warning below the
ENABLE_DIRECT_CONNECTIONS block: explain that setting
ENABLE_DIRECT_CONNECTIONS=true allows external inference backends and can expose
data to third-party services, advise disabling it in production unless
explicitly required, and recommend reviewing egress controls, network policies,
and data exfiltration risks before enabling; reference the configuration key
ENABLE_DIRECT_CONNECTIONS and suggest adding the warning as an indented bullet
or warning note directly after the existing purpose line.
- Around line 53-55: The manifest uses an ephemeral emptyDir for the volume
named webui-data which contradicts the “supporting persistent data” wording;
either replace emptyDir with a persistentVolumeClaim reference (e.g., switch the
webui-data volume to use a PVC and add a matching volumeClaimTemplates/claim
definition) or update the text to explicitly state this example is
non-persistent and will lose data on pod reschedule/restart; locate the volume
block that references webui-data and make the corresponding change to the volume
spec and documentation text.

ℹ️ Review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d09c3d0 and 157cece.

📒 Files selected for processing (1)
  • docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md

- **Data & Security**: Sessions and configurations can be persisted; can integrate with authentication, rate limiting, logging/monitoring.

## Backend Integration
- **Protocol Compatibility**: Support OpenAI API style backends (such as vLLM, MLServer, XInference, TGI, etc.).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Minor wording consistency fixes for US English/style.

Use “OpenAI API-compatible” (or “API-style”) at Line 22, and “afterward” instead of “afterwards” at Line 132 for locale consistency.

Also applies to: 132-132

🧰 Tools
🪛 LanguageTool

[grammar] ~22-~22: Use a hyphen to join words.
Context: ...ocol Compatibility**: Support OpenAI API style backends (such as vLLM, MLServer, ...

(QB_NEW_EN_HYPHEN)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/en/solutions/How_to_Deploy_and_use_OpenWebUI.md` at line 22, Update
wording for US English/style in the documentation by replacing “OpenAI API style
backends” with “OpenAI API-compatible backends” (or “API-style”) where the
phrase appears (reference: the sentence beginning with “Protocol
Compatibility”), and change “afterwards” to “afterward” in the later paragraph
that uses that term (reference: the occurrence near the sentence around Line
132).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants