diff --git a/packages/playground/public/images/icons/openwebui.png b/packages/playground/public/images/icons/openwebui.png new file mode 100644 index 0000000000..a158087e71 Binary files /dev/null and b/packages/playground/public/images/icons/openwebui.png differ diff --git a/packages/playground/public/info/openwebui.md b/packages/playground/public/info/openwebui.md new file mode 100644 index 0000000000..6cb846472a --- /dev/null +++ b/packages/playground/public/info/openwebui.md @@ -0,0 +1,5 @@ +--- +title: Open WebUI +--- + +Open WebUI is an extensible, feature-rich, and user-friendly self-hosted AI platform designed to operate entirely offline. It supports various LLM runners like Ollama and OpenAI-compatible APIs, with built-in inference engine for RAG, making it a powerful AI deployment solution. For more details, check [Open WebUI documentation](https://www.manual.grid.tf/documentation/dashboard/solutions/openwebui.html). diff --git a/packages/playground/src/components/vm_deployment_table.vue b/packages/playground/src/components/vm_deployment_table.vue index 2f219528ed..bbdd4d0b8f 100644 --- a/packages/playground/src/components/vm_deployment_table.vue +++ b/packages/playground/src/components/vm_deployment_table.vue @@ -334,6 +334,7 @@ const filteredHeaders = computed(() => { ProjectName.Presearch, ProjectName.Umbrel, ProjectName.Nextcloud, + ProjectName.Openwebui, ProjectName.Funkwhale, ProjectName.Casperlabs, ProjectName.Mattermost, diff --git a/packages/playground/src/constants/deployment_list.ts b/packages/playground/src/constants/deployment_list.ts index 23ed230d41..7ef1f564da 100644 --- a/packages/playground/src/constants/deployment_list.ts +++ b/packages/playground/src/constants/deployment_list.ts @@ -89,6 +89,11 @@ export const deploymentListEnvironments = { MATTERMOST_DOMAIN: false, }, + openwebui: { + SSH_KEY: _ssh, + OPENWEBUI_DOMAIN: "Open WebUI Domain", + }, + owncloud: { SSH_KEY: _ssh, OWNCLOUD_DOMAIN: "Owncloud Domain", diff --git a/packages/playground/src/router/index.ts b/packages/playground/src/router/index.ts index cf5e78e5eb..b5e95495cc 100644 --- a/packages/playground/src/router/index.ts +++ b/packages/playground/src/router/index.ts @@ -143,6 +143,28 @@ function createApplicationsRoutes(): RouteRecordRaw[] { }, }, }, + { + path: DashboardRoutes.Applications.Openwebui, + component: () => import("../views/openwebui_view.vue"), + meta: { + title: "Open WebUI", + info: { page: "info/openwebui.md" }, + navbarConfig: { + back: true, + path: [ + { title: "Deploy" }, + { + title: "Applications", + disabled: false, + to: DashboardRoutes.Deploy.Applications, + }, + { + title: "Open WebUI", + }, + ], + }, + }, + }, // { // path: DashboardRoutes.Applications.Owncloud, // component: () => import("../views/owncloud_view.vue"), diff --git a/packages/playground/src/router/routes.ts b/packages/playground/src/router/routes.ts index dd585541c1..bbed3dfa7f 100644 --- a/packages/playground/src/router/routes.ts +++ b/packages/playground/src/router/routes.ts @@ -60,6 +60,7 @@ enum ApplicationRoutes { Discourse = "/deploy/applications/discourse/", Taiga = "/deploy/applications/taiga/", Owncloud = "/deploy/applications/owncloud/", + Openwebui = "/deploy/applications/openwebui/", Nextcloud = "/deploy/applications/nextcloud/", Presearch = "/deploy/applications/presearch/", Subsquid = "/deploy/applications/subsquid/", diff --git a/packages/playground/src/types/index.ts b/packages/playground/src/types/index.ts index b7f1406750..730e41385f 100644 --- a/packages/playground/src/types/index.ts +++ b/packages/playground/src/types/index.ts @@ -116,6 +116,7 @@ export enum ProjectName { Funkwhale = "Funkwhale", Mastodon = "Mastodon", Mattermost = "Mattermost", + Openwebui = "Openwebui", Owncloud = "Owncloud", Nextcloud = "Nextcloud", Peertube = "Peertube", @@ -148,6 +149,7 @@ export enum SolutionCode { funkwhale = "fw", taiga = "tg", discourse = "dc", + openwebui = "oi", owncloud = "oc", nextcloud = "nc", mattermost = "mm", @@ -186,6 +188,7 @@ export const solutionType: { [key: string]: string } = { kubernetes: "Kubernetes", mattermost: "Mattermost", nodepilot: "Node Pilot", + openwebui: "Open WebUI", owncloud: "Owncloud", nextcloud: "Nextcloud", peertube: "Peertube", diff --git a/packages/playground/src/utils/delete_deployment.ts b/packages/playground/src/utils/delete_deployment.ts index 11ef548762..019aef8417 100644 --- a/packages/playground/src/utils/delete_deployment.ts +++ b/packages/playground/src/utils/delete_deployment.ts @@ -94,6 +94,7 @@ export function solutionHasGateway(projectName: ProjectName) { ProjectName.Taiga, ProjectName.Wordpress, ProjectName.Nextcloud, + ProjectName.Openwebui, ProjectName.Gitea, ProjectName.Jenkins, ProjectName.Jitsi, diff --git a/packages/playground/src/views/openwebui_view.vue b/packages/playground/src/views/openwebui_view.vue new file mode 100644 index 0000000000..273afc2c92 --- /dev/null +++ b/packages/playground/src/views/openwebui_view.vue @@ -0,0 +1,26 @@ + + + diff --git a/packages/playground/src/views/solutions_view.vue b/packages/playground/src/views/solutions_view.vue index 27717ada6f..2922f708c3 100644 --- a/packages/playground/src/views/solutions_view.vue +++ b/packages/playground/src/views/solutions_view.vue @@ -99,6 +99,13 @@ export default { route: DashboardRoutes.Applications.StaticWebsite, releaseDate: new Date("2024-11-13"), }, + { + title: "Open WebUI", + excerpt: + "Open WebUI is an extensible, feature-rich, and user-friendly self-hosted AI platform designed to operate entirely offline.", + icon: "openwebui.png", + route: DashboardRoutes.Applications.Openwebui, + }, { title: "Nextcloud", excerpt: diff --git a/packages/playground/src/weblets/tf_deployment_list.vue b/packages/playground/src/weblets/tf_deployment_list.vue index 6898d34d7b..49039c65c2 100644 --- a/packages/playground/src/weblets/tf_deployment_list.vue +++ b/packages/playground/src/weblets/tf_deployment_list.vue @@ -199,6 +199,18 @@ + + + + + +