diff --git a/packages/playground/public/images/icons/jitsi.png b/packages/playground/public/images/icons/jitsi.png new file mode 100644 index 0000000000..96b89a0f29 Binary files /dev/null and b/packages/playground/public/images/icons/jitsi.png differ diff --git a/packages/playground/public/info/jitsi.md b/packages/playground/public/info/jitsi.md new file mode 100644 index 0000000000..813cdc29e9 --- /dev/null +++ b/packages/playground/public/info/jitsi.md @@ -0,0 +1,9 @@ +--- +title: Jitsi +--- + +Jitsi Meet is a set of Open Source projects which empower users to use and deploy video conferencing platforms with state-of-the-art video quality and features. For more details, check [Jitsi documentation](https://www.manual.grid.tf/documentation/dashboard/solutions/jitsi.html). + +``` + +``` diff --git a/packages/playground/src/components/vm_deployment_table.vue b/packages/playground/src/components/vm_deployment_table.vue index 759cfc1b6b..a4a833fce1 100644 --- a/packages/playground/src/components/vm_deployment_table.vue +++ b/packages/playground/src/components/vm_deployment_table.vue @@ -343,6 +343,7 @@ const filteredHeaders = computed(() => { ProjectName.Subsquid, ProjectName.Peertube, ProjectName.Jenkins, + ProjectName.Jitsi, ] as string[]; const IPV4Solutions = [ @@ -367,6 +368,7 @@ const filteredHeaders = computed(() => { ProjectName.Peertube, ProjectName.Jenkins, ProjectName.Caprover, + ProjectName.Jitsi, ] as string[]; const WireguardSolutions = [ProjectName.VM, ProjectName.Fullvm, ProjectName.Umbrel, ProjectName.TFRobot] as string[]; diff --git a/packages/playground/src/constants/deployment_list.ts b/packages/playground/src/constants/deployment_list.ts index dab3b161b3..23ed230d41 100644 --- a/packages/playground/src/constants/deployment_list.ts +++ b/packages/playground/src/constants/deployment_list.ts @@ -40,6 +40,11 @@ export const deploymentListEnvironments = { CASPERLABS_HOSTNAME: "Casperlabs Hostname", }, + jitsi: { + SSH_KEY: _ssh, + JITSI_HOSTNAME: "Jitsi Hostname", + }, + discourse: { SSH_KEY: _ssh, DISCOURSE_HOSTNAME: "Discourse Hostname", diff --git a/packages/playground/src/router/index.ts b/packages/playground/src/router/index.ts index 54cea2b410..27fa03c8d0 100644 --- a/packages/playground/src/router/index.ts +++ b/packages/playground/src/router/index.ts @@ -253,6 +253,28 @@ function createApplicationsRoutes(): RouteRecordRaw[] { }, }, }, + { + path: DashboardRoutes.Applications.Jitsi, + component: () => import("../views/jitsi_view.vue"), + meta: { + title: "Jitsi", + info: { page: "info/jitsi.md" }, + navbarConfig: { + back: true, + path: [ + { title: "Deploy" }, + { + title: "Applications", + disabled: false, + to: DashboardRoutes.Deploy.Applications, + }, + { + title: "Jitsi", + }, + ], + }, + }, + }, { path: DashboardRoutes.Applications.Algorand, component: () => import("../views/algorand_view.vue"), diff --git a/packages/playground/src/router/routes.ts b/packages/playground/src/router/routes.ts index 954bc7ceb2..39e147d442 100644 --- a/packages/playground/src/router/routes.ts +++ b/packages/playground/src/router/routes.ts @@ -72,6 +72,7 @@ enum ApplicationRoutes { Gitea = "/deploy/applications/gitea/", Nostr = "/deploy/applications/nostr/", Domains = "/deploy/applications/domains/", + Jitsi = "/deploy/applications/jitsi/", } const DashboardRoutes = { diff --git a/packages/playground/src/types/index.ts b/packages/playground/src/types/index.ts index 5e192e54fe..6b14b045ef 100644 --- a/packages/playground/src/types/index.ts +++ b/packages/playground/src/types/index.ts @@ -132,6 +132,7 @@ export enum ProjectName { Gitea = "Gitea", Nostr = "Nostr", Domains = "Domains", + Jitsi = "Jitsi", } export enum SolutionCode { @@ -163,6 +164,7 @@ export enum SolutionCode { gitea = "gt", nostr = "nt", Domains = "dm", + jitsi = "jt", } export const solutionType: { [key: string]: string } = { @@ -191,6 +193,7 @@ export const solutionType: { [key: string]: string } = { Gitea: "Gitea", nostr: "Nostr", domains: "Domains", + jitsi: "Jitsi", }; export interface solutionFlavor { diff --git a/packages/playground/src/utils/delete_deployment.ts b/packages/playground/src/utils/delete_deployment.ts index 08aab5c208..4144141a02 100644 --- a/packages/playground/src/utils/delete_deployment.ts +++ b/packages/playground/src/utils/delete_deployment.ts @@ -85,6 +85,7 @@ export function solutionHasGateway(projectName: ProjectName) { ProjectName.Taiga, ProjectName.Wordpress, ProjectName.Nextcloud, + ProjectName.Jitsi, ]; for (const solution of solutions) { diff --git a/packages/playground/src/views/jitsi_view.vue b/packages/playground/src/views/jitsi_view.vue new file mode 100644 index 0000000000..9b14e8353f --- /dev/null +++ b/packages/playground/src/views/jitsi_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 39567a0266..d154a5965d 100644 --- a/packages/playground/src/views/solutions_view.vue +++ b/packages/playground/src/views/solutions_view.vue @@ -158,6 +158,13 @@ export default { icon: "domains.png", route: DashboardRoutes.Applications.Domains, }, + { + title: "Jitsi", + excerpt: + "Jitsi Meet is a set of Open Source projects which empower users to use and deploy video conferencing platforms with state-of-the-art video quality and features.", + icon: "jitsi.png", + route: DashboardRoutes.Applications.Jitsi, + }, ]; cards = cards.sort((a, b) => a.title.localeCompare(b.title)); diff --git a/packages/playground/src/weblets/tf_deployment_list.vue b/packages/playground/src/weblets/tf_deployment_list.vue index d7c591359e..301fa966a0 100644 --- a/packages/playground/src/weblets/tf_deployment_list.vue +++ b/packages/playground/src/weblets/tf_deployment_list.vue @@ -338,6 +338,15 @@ :href="'https://' + item.env.WP_URL + '/wp-admin'" /> + +