From 8d273c204465b7af0b47938172f25b72c8ea858a Mon Sep 17 00:00:00 2001 From: Stavros Date: Mon, 23 Oct 2023 21:10:42 +0300 Subject: [PATCH] Add kasm-workspaces. (#1447) * Add kasm-workspaces. * Fix documentation. --- README.md | 1 + apps/kasm-workspaces/config.json | 17 ++++++++ apps/kasm-workspaces/docker-compose.yml | 41 +++++++++++++++++++ apps/kasm-workspaces/metadata/description.md | 8 ++++ apps/kasm-workspaces/metadata/logo.jpg | Bin 0 -> 15563 bytes 5 files changed, 67 insertions(+) create mode 100644 apps/kasm-workspaces/config.json create mode 100644 apps/kasm-workspaces/docker-compose.yml create mode 100644 apps/kasm-workspaces/metadata/description.md create mode 100644 apps/kasm-workspaces/metadata/logo.jpg diff --git a/README.md b/README.md index 5cf68b35..e5d376cc 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,7 @@ This is the official repository for the Tipi App Store. It contains all the apps - [Joplin](https://github.com/laurent22/joplin) - Privacy focused note-taking app - [Kanboard](https://github.com/kanboard/kanboard) - Kanboard is a free and open source Kanban project management software. - [Kapowarr](https://github.com/Casvt/Kapowarr) - Kapowarr is a software to build and manage a comic book library, fitting in the \*arr suite of software. +- [Kasm Workspaces](https://github.com/kasmtech) - Kasm Workspaces is a docker container streaming platform for delivering browser-based access to desktops, applications, and web services - [Kavita](https://github.com/Kareadita/Kavita) - Kavita is a fast, feature rich, cross platform reading server - [Libreddit](https://github.com/spikecodes/libreddit) - Private front-end for Reddit - [LibrePhotos](https://github.com/LibrePhotos/librephotos) - Complete photo management service diff --git a/apps/kasm-workspaces/config.json b/apps/kasm-workspaces/config.json new file mode 100644 index 00000000..cfa0546f --- /dev/null +++ b/apps/kasm-workspaces/config.json @@ -0,0 +1,17 @@ +{ + "name": "Kasm Workspaces", + "available": true, + "port": 8744, + "exposable": true, + "id": "kasm-workspaces", + "description": "Kasm Workspaces is a docker container streaming platform for delivering browser-based access to desktops, applications, and web services.", + "tipi_version": 1, + "version": "1.14.0", + "categories": ["utilities"], + "short_desc": "Container streaming platform.", + "author": "Kasm", + "source": "https://github.com/kasmtech", + "website": "https://www.kasmweb.com/", + "form_fields": [], + "supported_architectures": ["arm64", "amd64"] + } \ No newline at end of file diff --git a/apps/kasm-workspaces/docker-compose.yml b/apps/kasm-workspaces/docker-compose.yml new file mode 100644 index 00000000..5edee56f --- /dev/null +++ b/apps/kasm-workspaces/docker-compose.yml @@ -0,0 +1,41 @@ +version: "3.7" +services: + kasm-workspaces: + image: lscr.io/linuxserver/kasm:1.14.0 + container_name: kasm-workspaces + privileged: true + environment: + - KASM_PORT=8744 + volumes: + - ${APP_DATA_DIR}/data:/opt + ports: + - 8743:3000 + - ${APP_PORT}:8744 + restart: unless-stopped + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.kasm-workspaces-web-redirect.redirectscheme.scheme: https + traefik.http.services.kasm-workspaces.loadbalancer.server.port: 8744 + # Web + traefik.http.routers.kasm-workspaces-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.kasm-workspaces-insecure.entrypoints: web + traefik.http.routers.kasm-workspaces-insecure.service: kasm-workspaces + traefik.http.routers.kasm-workspaces-insecure.middlewares: kasm-workspaces-web-redirect + # Websecure + traefik.http.routers.kasm-workspaces.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.kasm-workspaces.entrypoints: websecure + traefik.http.routers.kasm-workspaces.service: kasm-workspaces + traefik.http.routers.kasm-workspaces.tls.certresolver: myresolver + # Local domain + traefik.http.routers.kasm-workspaces-local-insecure.rule: Host(`kasm-workspaces.${LOCAL_DOMAIN}`) + traefik.http.routers.kasm-workspaces-local-insecure.entrypoints: web + traefik.http.routers.kasm-workspaces-local-insecure.service: kasm-workspaces + traefik.http.routers.kasm-workspaces-local-insecure.middlewares: kasm-workspaces-web-redirect + # Local domain secure + traefik.http.routers.kasm-workspaces-local.rule: Host(`kasm-workspaces.${LOCAL_DOMAIN}`) + traefik.http.routers.kasm-workspaces-local.entrypoints: websecure + traefik.http.routers.kasm-workspaces-local.service: kasm-workspaces + traefik.http.routers.kasm-workspaces-local.tls: true \ No newline at end of file diff --git a/apps/kasm-workspaces/metadata/description.md b/apps/kasm-workspaces/metadata/description.md new file mode 100644 index 00000000..c1c92a68 --- /dev/null +++ b/apps/kasm-workspaces/metadata/description.md @@ -0,0 +1,8 @@ +## Kasm + +Kasm Workspaces is a docker container streaming platform for delivering browser-based access to desktops, applications, and web services. Kasm uses devops-enabled Containerized Desktop Infrastructure (CDI) to create on-demand, disposable, docker containers that are accessible via web browser. Example use-cases include Remote Browser Isolation (RBI), Data Loss Prevention (DLP), Desktop as a Service (DaaS), Secure Remote Access Services (RAS), and Open Source Intelligence (OSINT) collections. + +The rendering of the graphical-based containers is powered by the open-source project KasmVNC + +**Warning:** You will firtly need to access the port 8743 for the initial setup of the container. **If you dont do this the app won't work!**
+**Warning:** The app works with https if you dont access **all the ports** (setup and main) with https in the front you will get an empty response error. diff --git a/apps/kasm-workspaces/metadata/logo.jpg b/apps/kasm-workspaces/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..09a013fbb7d3f27d5340f1556a0baa6da9ded69f GIT binary patch literal 15563 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 literal 0 HcmV?d00001