fix(kasm): rework (#4208)

This commit is contained in:
Stavros Kois
2022-10-28 02:06:40 +03:00
committed by GitHub
parent 974cc443f1
commit 4ed7ef3110
6 changed files with 264 additions and 159 deletions
+2 -2
View File
@@ -9,7 +9,7 @@ dependencies:
repository: https://library-charts.truecharts.org repository: https://library-charts.truecharts.org
version: 10.7.7 version: 10.7.7
deprecated: false deprecated: false
description: "Kasm(https://www.kasmweb.com/) Workspaces is a Chart 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, Chart Charts 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.\n" description: Kasm Workspaces is a streaming platform for delivering browser-based access to desktops, applications, and web services.
home: https://truecharts.org/docs/charts/incubator/kasm home: https://truecharts.org/docs/charts/incubator/kasm
icon: https://truecharts.org/img/hotlink-ok/chart-icons/kasm.png icon: https://truecharts.org/img/hotlink-ok/chart-icons/kasm.png
keywords: keywords:
@@ -27,4 +27,4 @@ sources:
- https://github.com/orgs/linuxserver/packages/container/package/kasm - https://github.com/orgs/linuxserver/packages/container/package/kasm
- https://github.com/linuxserver/docker-kasm#readme - https://github.com/linuxserver/docker-kasm#readme
type: application type: application
version: 0.0.42 version: 1.0.0
+54 -67
View File
@@ -2,6 +2,13 @@
portals: portals:
open: open:
# Include{portalLink} # Include{portalLink}
admin:
protocols:
- "$kubernetes-resource_configmap_portal_protocol"
host:
- "$kubernetes-resource_configmap_portal_host"
ports:
- "$variable-service.admin.ports.admin.port"
questions: questions:
# Include{global} # Include{global}
# Include{controller} # Include{controller}
@@ -12,42 +19,31 @@ questions:
# Include{recreate} # Include{recreate}
# Include{controllerExpert} # Include{controllerExpert}
# Include{controllerExpertExtraArgs} # Include{controllerExpertExtraArgs}
- variable: env - variable: secretEnv
group: "Container Configuration" group: Container Configuration
label: "Image Environment" label: Image Secrets
schema: schema:
additional_attrs: true additional_attrs: true
type: dict type: dict
attrs: attrs:
- variable: KASM_PORT
label: "KASM_PORT"
description: "Specify the port you bind to the outside for Kasm Workspaces."
schema:
type: string
default: ""
- variable: DOCKER_HUB_USERNAME - variable: DOCKER_HUB_USERNAME
label: "DOCKER_HUB_USERNAME" label: Docker Hub Username
description: "Optionally specify a DockerHub Username to pull private images." description: Optionally specify a DockerHub Username to pull private images.
schema: schema:
type: string type: string
default: "" default: ""
- variable: DOCKER_HUB_PASSWORD - variable: DOCKER_HUB_PASSWORD
label: "DOCKER_HUB_PASSWORD" label: Docker Hub Password
description: "Optionally specify a DockerHub password to pull private images." description: Optionally specify a DockerHub password to pull private images.
schema:
type: string
default: ""
- variable: UMASK
label: "UMASK"
description: "Container Variable UMASK"
schema: schema:
type: string type: string
private: true
default: "" default: ""
# Include{containerConfig} # Include{containerConfig}
# Include{serviceRoot} # Include{serviceRoot}
- variable: main - variable: main
label: "Main Service" label: Main Service
description: "The Primary service on which the healthcheck runs, often the webUI" description: The Primary service on which the healthcheck runs, often the webUI
schema: schema:
additional_attrs: true additional_attrs: true
type: dict type: dict
@@ -55,71 +51,62 @@ questions:
# Include{serviceSelectorLoadBalancer} # Include{serviceSelectorLoadBalancer}
# Include{serviceSelectorExtras} # Include{serviceSelectorExtras}
- variable: main - variable: main
label: "Main Service Port Configuration" label: Main Service Port Configuration
schema: schema:
additional_attrs: true additional_attrs: true
type: dict type: dict
attrs: attrs:
- variable: port - variable: port
label: "Port" label: Port
description: "This port exposes the container port on the service" description: This port exposes the container port on the service
schema: schema:
type: int type: int
default: 3000 default: 10350
required: true required: true
# Include{advancedPortHTTP} # Include{advancedPortHTTPS}
- variable: targetPort - variable: targetPort
label: "Target Port" label: Target Port
description: "The internal(!) port on the container the Application runs on" description: The internal(!) port on the container the Application runs on
schema: schema:
type: int type: int
default: 3000 default: 10350
- variable: port6333 - variable: admin
label: 'port6333 service' label: Admin Service
description: "Kasm Workspaces interface. (https)" description: The Admin service
schema: schema:
additional_attrs: true additional_attrs: true
type: dict type: dict
attrs: attrs:
# Include{serviceSelectorLoadBalancer} # Include{serviceSelectorLoadBalancer}
# Include{serviceSelectorExtras} # Include{serviceSelectorExtras}
- variable: port6333 - variable: admin
label: "port6333 Service Port Configuration" label: Admin Service Port Configuration
schema: schema:
additional_attrs: true additional_attrs: true
type: dict type: dict
attrs: attrs:
- variable: port - variable: port
label: "Port" label: Port
description: "This port exposes the container port on the service" description: This port exposes the container port on the service
schema: schema:
type: int type: int
default: 6333 default: 10351
required: true required: true
# Include{advancedPortTCP} # Include{advancedPortHTTPS}
- variable: targetPort - variable: targetPort
label: "Target Port" label: Target Port
description: "The internal(!) port on the container the Application runs on" description: The internal(!) port on the container the Application runs on
schema: schema:
type: int type: int
default: 6333 default: 3000
# Include{serviceExpertRoot} # Include{serviceExpertRoot}
default: false default: false
# Include{serviceExpert} # Include{serviceExpert}
# Include{serviceList} # Include{serviceList}
# Include{persistenceRoot} # Include{persistenceRoot}
- variable: pathopt - variable: data
label: "pathopt Storage" label: Data Storage
description: "Docker and installation storage. (requires mntcacheappdatapath or direct disk mount)" description: /opt Storage
schema:
additional_attrs: true
type: dict
attrs:
# Include{persistenceBasic}
# Include{persistenceAdvanced}
- variable: pathprofiles
label: "pathprofiles Storage"
description: "Optionally specify a path for persistent profile storage."
schema: schema:
additional_attrs: true additional_attrs: true
type: dict type: dict
@@ -129,7 +116,7 @@ questions:
# Include{persistenceList} # Include{persistenceList}
# Include{ingressRoot} # Include{ingressRoot}
- variable: main - variable: main
label: "Main Ingress" label: Main Ingress
schema: schema:
additional_attrs: true additional_attrs: true
type: dict type: dict
@@ -142,45 +129,45 @@ questions:
# Include{security} # Include{security}
# Include{securityContextAdvancedRoot} # Include{securityContextAdvancedRoot}
- variable: privileged - variable: privileged
label: "Privileged mode" label: Privileged mode
schema: schema:
type: boolean type: boolean
default: false default: true
- variable: readOnlyRootFilesystem - variable: readOnlyRootFilesystem
label: "ReadOnly Root Filesystem" label: ReadOnly Root Filesystem
schema: schema:
type: boolean type: boolean
default: false default: false
- variable: allowPrivilegeEscalation - variable: allowPrivilegeEscalation
label: "Allow Privilege Escalation" label: Allow Privilege Escalation
schema: schema:
type: boolean type: boolean
default: false default: true
- variable: runAsNonRoot - variable: runAsNonRoot
label: "runAsNonRoot" label: runAsNonRoot
schema: schema:
type: boolean type: boolean
default: false default: false
# Include{securityContextAdvanced} # Include{securityContextAdvanced}
# Include{podSecurityContextRoot} # Include{podSecurityContextRoot}
- variable: runAsUser - variable: runAsUser
label: "runAsUser" label: runAsUser
description: "The UserID of the user running the application" description: The UserID of the user running the application
schema: schema:
type: int type: int
default: 0 default: 0
- variable: runAsGroup - variable: runAsGroup
label: "runAsGroup" label: runAsGroup
description: The groupID this App of the user running the application" description: The groupID this App of the user running the application
schema: schema:
type: int type: int
default: 0 default: 0
- variable: fsGroup - variable: fsGroup
label: "fsGroup" label: fsGroup
description: "The group that should own ALL storage." description: The group that should own ALL storage.
schema: schema:
type: int type: int
default: 568 default: 0
# Include{podSecurityContextAdvanced} # Include{podSecurityContextAdvanced}
# Include{resources} # Include{resources}
# Include{advanced} # Include{advanced}
+42 -21
View File
@@ -1,40 +1,61 @@
env:
DOCKER_HUB_PASSWORD: ""
DOCKER_HUB_USERNAME: ""
KASM_PORT: ""
UMASK: ""
image: image:
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
repository: tccr.io/truecharts/kasm repository: tccr.io/truecharts/kasm
tag: latest@sha256:73ea3cf977959343c4d6812e234ebc99453c6934f512f7bda51a38ffe965c562 tag: 1.1.0@sha256:fe25f667de3f1e4c1d5774c9108216dc433ea621516df8e9138eeb517858aeca
persistence:
pathopt:
enabled: true
mountPath: /opt
pathprofiles:
enabled: true
mountPath: /profiles
podSecurityContext: podSecurityContext:
runAsGroup: 0 runAsGroup: 0
runAsUser: 0 runAsUser: 0
fsGroup: 0
securityContext: securityContext:
readOnlyRootFilesystem: false readOnlyRootFilesystem: false
runAsNonRoot: false runAsNonRoot: false
allowPrivilegeEscalation: true
privileged: true
secretEnv:
DOCKER_HUB_PASSWORD: ""
DOCKER_HUB_USERNAME: ""
env:
KASM_PORT: "{{ .Values.service.main.ports.main.port }}"
probes:
liveness:
type: HTTPS
path: /
port: "{{ .Values.service.admin.ports.admin.targetPort }}"
readiness:
type: HTTPS
path: /
port: "{{ .Values.service.admin.ports.admin.targetPort }}"
startup:
type: HTTPS
path: /
port: "{{ .Values.service.admin.ports.admin.targetPort }}"
service: service:
main: main:
ports: ports:
main: main:
port: 3000 port: 10350
protocol: HTTP protocol: HTTPS
targetPort: 3000 admin:
port6333:
enabled: true enabled: true
ports: ports:
port6333: admin:
enabled: true enabled: true
port: 6333 port: 10351
protocol: TCP protocol: HTTPS
targetPort: 6333 targetPort: 3000
persistence:
data:
enabled: true
mountPath: /opt
varrun:
enabled: true
portal: portal:
enabled: true enabled: true
+1 -1
View File
@@ -2,7 +2,7 @@ apiVersion: v2
kubeVersion: ">=1.16.0-0" kubeVersion: ">=1.16.0-0"
name: meshcentral name: meshcentral
appVersion: "1.0.90" appVersion: "1.0.90"
version: 5.0.12 version: 5.0.13
description: MeshCentral is a full computer management web site description: MeshCentral is a full computer management web site
type: application type: application
deprecated: false deprecated: false
+152 -62
View File
@@ -37,18 +37,21 @@ questions:
description: Set this to the primary DNS name of this MeshCentral server. description: Set this to the primary DNS name of this MeshCentral server.
schema: schema:
type: string type: string
required: true
default: "" default: ""
- variable: tlsOffload - variable: tlsOffload
label: tlsOffload label: tlsOffload
description: When true, indicates that a TLS offloader is in front of the MeshCentral server. More typically, set this to the IP address of the reverse proxy or TLS offloader so that IP forwarding headers will be trusted. For example traefik.ix-traefik.svc.cluster.local description: When true, indicates that a TLS offloader is in front of the MeshCentral server. More typically, set this to the IP address of the reverse proxy or TLS offloader so that IP forwarding headers will be trusted. For example traefik.ix-traefik.svc.cluster.local
schema: schema:
type: string type: string
required: true
default: "" default: ""
- variable: trustedProxy - variable: trustedProxy
label: trustedProxy label: trustedProxy
description: Trust forwarded headers from these IPs or domains. Providing the magic string "CloudFlare" will cause the server to download the IP address list of trusted CloudFlare proxies directly from CloudFlare on each server start. For example traefik.ix-traefik.svc.cluster.local description: Trust forwarded headers from these IPs or domains. Providing the magic string "CloudFlare" will cause the server to download the IP address list of trusted CloudFlare proxies directly from CloudFlare on each server start. For example traefik.ix-traefik.svc.cluster.local
schema: schema:
type: string type: string
required: true
default: "" default: ""
- variable: WANonly - variable: WANonly
label: WANonly label: WANonly
@@ -121,30 +124,35 @@ questions:
description: When specified, sends data to the browser at x seconds interval and expects a response from the browser. description: When specified, sends data to the browser at x seconds interval and expects a response from the browser.
schema: schema:
type: int type: int
required: true
default: -99 default: -99
- variable: browserPong - variable: browserPong
label: browserPong label: browserPong
description: When specified, sends data to the browser at x seconds interval. description: When specified, sends data to the browser at x seconds interval.
schema: schema:
type: int type: int
required: true
default: -99 default: -99
- variable: agentPing - variable: agentPing
label: agentPing label: agentPing
description: When specified, sends data to the agent at x seconds interval and expects a response from the agent. description: When specified, sends data to the agent at x seconds interval and expects a response from the agent.
schema: schema:
type: int type: int
required: true
default: -99 default: -99
- variable: agentPong - variable: agentPong
label: agentPong label: agentPong
description: When specified, sends data to the agent at x seconds interval. description: When specified, sends data to the agent at x seconds interval.
schema: schema:
type: int type: int
required: true
default: -99 default: -99
- variable: agentIdleTimeout - variable: agentIdleTimeout
label: agentIdleTimeout label: agentIdleTimeout
description: How much time in seconds with no traffic from an agent before dropping the agent connection. description: How much time in seconds with no traffic from an agent before dropping the agent connection.
schema: schema:
type: int type: int
required: true
default: -99 default: -99
- variable: maxInvalidLogin - variable: maxInvalidLogin
label: Section <maxInvalidLogin> label: Section <maxInvalidLogin>
@@ -157,18 +165,21 @@ questions:
description: Time in minutes over which the a maximum number of invalid login attempts is allowed from an IP address. description: Time in minutes over which the a maximum number of invalid login attempts is allowed from an IP address.
schema: schema:
type: int type: int
required: true
default: 10 default: 10
- variable: count - variable: count
label: count label: count
description: Maximum number of invalid login attempts from an IP address in the time period. description: Maximum number of invalid login attempts from an IP address in the time period.
schema: schema:
type: int type: int
required: true
default: 10 default: 10
- variable: coolofftime - variable: coolofftime
label: coolofftime label: coolofftime
description: Additional time in minute that login attempts will be denied once the invalid login limit is reached. description: Additional time in minute that login attempts will be denied once the invalid login limit is reached.
schema: schema:
type: int type: int
required: true
default: 30 default: 30
- variable: exclude - variable: exclude
label: exclude label: exclude
@@ -187,18 +198,21 @@ questions:
description: Time in minutes over which the a maximum number of invalid 2FA attempts is allowed from an IP address. description: Time in minutes over which the a maximum number of invalid 2FA attempts is allowed from an IP address.
schema: schema:
type: int type: int
required: true
default: 10 default: 10
- variable: count - variable: count
label: count label: count
description: Maximum number of invalid 2FA attempts from an IP address in the time period. description: Maximum number of invalid 2FA attempts from an IP address in the time period.
schema: schema:
type: int type: int
required: true
default: 10 default: 10
- variable: coolofftime - variable: coolofftime
label: coolofftime label: coolofftime
description: Additional time in minute that 2FA attempts will be denied once the invalid login limit is reached. description: Additional time in minute that 2FA attempts will be denied once the invalid login limit is reached.
schema: schema:
type: int type: int
required: true
default: 30 default: 30
- variable: exclude - variable: exclude
label: exclude label: exclude
@@ -231,8 +245,9 @@ questions:
type: string type: string
private: true private: true
default: "" default: ""
- variable: setupWebDav - variable: _setupWebDav
label: Backup to Web DAV label: Backup to Web DAV
description: Enabled automated upload of the server backups to a WebDAV account.
schema: schema:
type: boolean type: boolean
default: false default: false
@@ -299,6 +314,73 @@ questions:
schema: schema:
type: boolean type: boolean
default: false default: false
- variable: _setupMessaging
label: Setup Messaging
description: This section allow MeshCentral to send messages over user messaging networks like Discord
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: messaging
label: Section <messaging>
schema:
additional_attrs: true
type: dict
attrs:
- variable: _setupTelegram
label: Setup Telegram
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: telegram
label: telegram
description: Configure Telegram messaging system
schema:
additional_attrs: true
type: dict
attrs:
- variable: apiid
label: apiid
schema:
type: string
default: ""
- variable: apihash
label: apihash
schema:
type: string
default: ""
- variable: session
label: session
schema:
type: string
default: ""
- variable: _setupDiscord
label: Setup Discord
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: discord
label: discord
description: Configure Discord messaging system
schema:
additional_attrs: true
type: dict
attrs:
- variable: serverurl
label: serverurl
schema:
type: string
default: ""
- variable: token
label: token
schema:
type: string
default: ""
- variable: domains - variable: domains
label: Section <domains> label: Section <domains>
schema: schema:
@@ -316,7 +398,7 @@ questions:
description: HTTPS URL when to get the TLS certificate that MeshAgent's will see when connecting to this server. This setting is used when a reverse proxy like Traefik is used in front of MeshCentral. description: HTTPS URL when to get the TLS certificate that MeshAgent's will see when connecting to this server. This setting is used when a reverse proxy like Traefik is used in front of MeshCentral.
schema: schema:
type: string type: string
# required: true required: true
default: "" default: ""
- variable: title - variable: title
label: title label: title
@@ -324,14 +406,14 @@ questions:
schema: schema:
type: string type: string
required: true required: true
default: TrueCharts MeshCentral default: MeshCentral
- variable: title2 - variable: title2
label: title2 label: title2
description: Secondary title text that is placed on the upper right on the title on many web pages. description: Secondary title text that is placed on the upper right on the title on many web pages.
schema: schema:
type: string type: string
required: true required: true
default: TrueCharts MeshCentral default: TrueCharts
- variable: welcomeText - variable: welcomeText
label: welcomeText label: welcomeText
description: Text that will be shown on the login screen. description: Text that will be shown on the login screen.
@@ -417,66 +499,74 @@ questions:
schema: schema:
type: boolean type: boolean
default: true default: true
- variable: agentCustomization - variable: _setupAgentCustomization
label: Section <agentCustomization> label: Setup Agent Customization
description: Use this section to customize the agent branding.
schema: schema:
additional_attrs: true type: boolean
type: dict default: false
attrs: show_subquestions_if: true
- variable: displayName subquestions:
label: displayName - variable: agentCustomization
description: The name of the agent as displayed to the user. label: Section <agentCustomization>
schema: schema:
type: string additional_attrs: true
default: MeshCentral Agent type: dict
- variable: description attrs:
label: description - variable: displayName
description: The description of the agent as displayed to the user. label: displayName
schema: description: The name of the agent as displayed to the user.
type: string schema:
default: Mesh Agent Background Service type: string
- variable: companyName default: MeshCentral Agent
label: companyName - variable: description
description: This will be used as the path to install the agent, by default this is 'Mesh Agent' in Windows and 'meshagent' in other OS's. label: description
schema: description: The description of the agent as displayed to the user.
type: string schema:
default: Mesh Agent type: string
- variable: serviceName default: Mesh Agent Background Service
label: serviceName - variable: companyName
description: The name of the background service, by default this is 'Mesh Agent' in Windows and 'meshagent' in other OS's but should be set to an all lower case, no space string. label: companyName
schema: description: This will be used as the path to install the agent, by default this is 'Mesh Agent' in Windows and 'meshagent' in other OS's.
type: string schema:
default: Mesh Agent type: string
- variable: installText default: Mesh Agent
label: installText - variable: serviceName
description: Text string to show in the agent installation dialog box. label: serviceName
schema: description: The name of the background service, by default this is 'Mesh Agent' in Windows and 'meshagent' in other OS's but should be set to an all lower case, no space string.
type: string schema:
default: "" type: string
- variable: image default: Mesh Agent
label: image - variable: installText
description: The filename of a image file in .png format located in meshcentral-data to display in the MeshCentral Agent installation dialog, image should be square and from 64x64 to 200x200. label: installText
schema: description: Text string to show in the agent installation dialog box.
type: string schema:
default: "" type: string
- variable: fileName default: ""
label: fileName - variable: image
description: The agent filename. label: image
schema: description: The filename of a image file in .png format located in meshcentral-data to display in the MeshCentral Agent installation dialog, image should be square and from 64x64 to 200x200.
type: string schema:
default: meshagent type: string
- variable: foregroundColor default: ""
label: foregroundColor - variable: fileName
description: 'Foreground text color, valid values are RBG in format 0,0,0 to 255,255,255 or format "#000000" to "#FFFFFF".' label: fileName
schema: description: The agent filename.
type: string schema:
default: "" type: string
- variable: backgroundColor default: meshagent
label: backgroundColor - variable: foregroundColor
description: 'Background color, valid values are RBG in format 0,0,0 to 255,255,255 or format "#000000" to "#FFFFFF".' label: foregroundColor
schema: description: 'Foreground text color, valid values are RBG in format 0,0,0 to 255,255,255 or format "#000000" to "#FFFFFF".'
type: string schema:
default: "" type: string
default: ""
- variable: backgroundColor
label: backgroundColor
description: 'Background color, valid values are RBG in format 0,0,0 to 255,255,255 or format "#000000" to "#FFFFFF".'
schema:
type: string
default: ""
# Include{containerConfig} # Include{containerConfig}
# Include{serviceRoot} # Include{serviceRoot}
- variable: main - variable: main
+13 -6
View File
@@ -280,10 +280,17 @@ meshcentral:
# - This section allow MeshCentral to send messages over user messaging networks like Telegram # - This section allow MeshCentral to send messages over user messaging networks like Telegram
_messaging: _messaging:
# - Configure Telegram messaging system # - Configure Telegram messaging system
telegram: _telegram:
apiid: null apiid: ""
apihash: null apihash: ""
session: null session: ""
# - Configure Discord messaging system
_discord:
# - An optional HTTP link to the discord server the user must join to get notifications.
serverurl: ""
# - A Discord bot token that MeshCentral will use to login to Discord.
token: ""
# - Any settings in this section is used as default setting for all domains # - Any settings in this section is used as default setting for all domains
_domaindefaults: _domaindefaults:
title: Default Title title: Default Title
@@ -292,9 +299,9 @@ meshcentral:
# - HTTPS URL when to get the TLS certificate that MeshAgent's will see when connecting to this server. This setting is used when a reverse proxy like Traefik is used in front of MeshCentral. # - HTTPS URL when to get the TLS certificate that MeshAgent's will see when connecting to this server. This setting is used when a reverse proxy like Traefik is used in front of MeshCentral.
certUrl: https://mc.domain.com certUrl: https://mc.domain.com
# - The title of this web site. All web pages will have this title. # - The title of this web site. All web pages will have this title.
title: TrueCharts MeshCentral title: MeshCentral
# - Secondary title text that is placed on the upper right on the title on many web pages. # - Secondary title text that is placed on the upper right on the title on many web pages.
title2: TrueCharts MeshCentral title2: TrueCharts
# - When enabled, the server will send reduced sized web pages. # - When enabled, the server will send reduced sized web pages.
minify: true minify: true
# - 0 = User selects day/night mode, 1 = Always night mode, 2 = Always day mode # - 0 = User selects day/night mode, 1 = Always night mode, 2 = Always day mode