Merge pull request #102 from linuxserver/1.18.1-fudge

This commit is contained in:
Adam 2026-04-16 18:19:23 +01:00 committed by GitHub
commit c16982ddc8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
18 changed files with 123 additions and 87 deletions

View file

@ -12,22 +12,30 @@ LABEL maintainer="thespad"
# Env
ENV DOCKER_TLS_CERTDIR=""
ENV TINI_SUBREAPER=true
ENV DEBIAN_FRONTEND=noninteractive
#Add needed nvidia environment variables for https://github.com/NVIDIA/nvidia-docker
ENV NVIDIA_DRIVER_CAPABILITIES="compute,graphics,video,utility"
# Container setup
RUN \
echo "**** install packages ****" && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu noble stable" > \
/etc/apt/sources.list.d/docker.list && \
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
install -m 0755 -d /etc/apt/keyrings && \
# Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc && \
printf "Types: deb\nURIs: https://download.docker.com/linux/ubuntu\nSuites: $(. /etc/os-release && echo ${UBUNTU_CODENAME:-$VERSION_CODENAME})\nComponents: stable\nArchitectures: $(dpkg --print-architecture)\nSigned-By: /etc/apt/keyrings/docker.asc" > /etc/apt/sources.list.d/docker.sources && \
printf "Package: docker-ce docker-ce-cli docker-ce-rootless-extras\nPin: version 5:29.*\nPin-Priority: 1001" > /etc/apt/preferences.d/docker && \
# Nvidia CTK
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /etc/apt/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sed 's#deb https://#deb [signed-by=/etc/apt/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
tee /etc/apt/sources.list.d/nvidia-container-toolkit.list && \
curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
printf "Package: docker-ce docker-ce-cli docker-ce-rootless-extras\nPin: version 5:28.* \nPin-Priority: 1001" > /etc/apt/preferences.d/docker && \
# NodeJS
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
printf "Types: deb\nURIs: https://deb.nodesource.com/node_24.x\nSuites: nodistro\nComponents: main\nArchitectures: $(dpkg --print-architecture)\nSigned-By: /etc/apt/keyrings/nodesource.gpg" > /etc/apt/sources.list.d/nodesource.sources && \
printf "Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 600" > /etc/apt/preferences.d/nodejs && \
chmod a+r /etc/apt/keyrings/*.gpg && \
chmod a+r /etc/apt/keyrings/*.asc && \
apt-get update && \
apt-get install -y --no-install-recommends \
btrfs-progs \
build-essential \
@ -58,13 +66,13 @@ RUN \
https://raw.githubusercontent.com/moby/moby/master/hack/dind && \
chmod +x /usr/local/bin/dind && \
echo 'hosts: files dns' > /etc/nsswitch.conf && \
echo "**** setup wizard ****" && \
mkdir -p /wizard && \
if [ -z ${KASM_VERSION+x} ]; then \
KASM_VERSION=$(curl -sX GET 'https://api.github.com/repos/kasmtech/kasm-install-wizard/releases/latest' \
| jq -r '.name'); \
fi && \
echo "${KASM_VERSION}" > /version.txt && \
echo "**** add wizard ****" && \
curl -o \
/tmp/wizard.tar.gz -L \
"https://github.com/kasmtech/kasm-install-wizard/archive/refs/tags/${KASM_VERSION}.tar.gz" && \
@ -76,32 +84,30 @@ RUN \
echo "**** add installer ****" && \
curl -o \
/tmp/kasm.tar.gz -L \
"https://github.com/kasmtech/kasm-install-wizard/releases/download/${KASM_VERSION}/kasm_release.tar.gz" && \
"https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}.tar.gz" && \
tar xf \
/tmp/kasm.tar.gz -C \
/ && \
ALVERSION=$(cat /kasm_release/conf/database/seed_data/default_properties.yaml |awk '/alembic_version/ {print $2}') && \
curl -o \
/tmp/images.tar.gz -L \
"https://kasm-ci.s3.amazonaws.com/${KASM_VERSION}-images-combined.tar.gz" && \
tar xf \
/tmp/images.tar.gz -C \
/ && \
sed -i \
'/alembic_version/s/.*/alembic_version: '${ALVERSION}'/' \
/kasm_release/conf/database/seed_data/default_images_a* && \
# Don't check for open ports during upgrades
sed -i 's/-N -e -H/-N -B -e -H/g' /kasm_release/upgrade.sh && \
echo "exit 0" > /kasm_release/install_dependencies.sh && \
# Fix dependencies so containers start in the right order
/kasm_release/bin/utils/yq_$(uname -m) -i \
'.services.proxy.volumes += "/kasm_release/www/img/thumbnails:/srv/www/img/thumbnails"' \
'.services.proxy.depends_on = {"kasm_manager":{"condition": "service_healthy"},"kasm_api":{"condition": "service_healthy"},"kasm_agent":{"condition": "service_started"},"kasm_guac":{"condition": "service_started"}}' \
/kasm_release/docker/docker-compose-all.yaml && \
echo "**** copy assets ****" && \
cp \
/kasm_release/www/img/thumbnails/*.png /kasm_release/www/img/thumbnails/*.svg \
/wizard/public/img/thumbnails/ && \
cp \
/kasm_release/conf/database/seed_data/default_images_a* \
/wizard/ && \
/kasm_release/bin/utils/yq_$(uname -m) -i \
'.services.kasm_manager.depends_on = {"db":{"condition": "service_healthy"}}' \
/kasm_release/docker/docker-compose-all.yaml && \
/kasm_release/bin/utils/yq_$(uname -m) -i \
'.services.kasm_api.depends_on = {"db":{"condition": "service_healthy"}}' \
/kasm_release/docker/docker-compose-all.yaml && \
/kasm_release/bin/utils/yq_$(uname -m) -i \
'.services.kasm_api.healthcheck += {"start_period": "60s","start_interval": "30s"}' \
/kasm_release/docker/docker-compose-all.yaml && \
/kasm_release/bin/utils/yq_$(uname -m) -i \
'.services.kasm_rdp_https_gateway.depends_on = {"proxy":{"condition": "service_started"}}' \
/kasm_release/docker/docker-compose-all.yaml && \
# Add Kasm and db users
useradd -u 70 kasm_db && \
useradd kasm && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \

View file

@ -12,22 +12,30 @@ LABEL maintainer="thespad"
# Env
ENV DOCKER_TLS_CERTDIR=""
ENV TINI_SUBREAPER=true
ENV DEBIAN_FRONTEND=noninteractive
#Add needed nvidia environment variables for https://github.com/NVIDIA/nvidia-docker
ENV NVIDIA_DRIVER_CAPABILITIES="compute,graphics,video,utility"
# Container setup
RUN \
echo "**** install packages ****" && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
echo "deb [arch=arm64] https://download.docker.com/linux/ubuntu noble stable" > \
/etc/apt/sources.list.d/docker.list && \
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
install -m 0755 -d /etc/apt/keyrings && \
# Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc && \
printf "Types: deb\nURIs: https://download.docker.com/linux/ubuntu\nSuites: $(. /etc/os-release && echo ${UBUNTU_CODENAME:-$VERSION_CODENAME})\nComponents: stable\nArchitectures: $(dpkg --print-architecture)\nSigned-By: /etc/apt/keyrings/docker.asc" > /etc/apt/sources.list.d/docker.sources && \
printf "Package: docker-ce docker-ce-cli docker-ce-rootless-extras\nPin: version 5:29.*\nPin-Priority: 1001" > /etc/apt/preferences.d/docker && \
# Nvidia CTK
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /etc/apt/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sed 's#deb https://#deb [signed-by=/etc/apt/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
tee /etc/apt/sources.list.d/nvidia-container-toolkit.list && \
curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
printf "Package: docker-ce docker-ce-cli docker-ce-rootless-extras\nPin: version 5:28.* \nPin-Priority: 1001" > /etc/apt/preferences.d/docker && \
# NodeJS
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
printf "Types: deb\nURIs: https://deb.nodesource.com/node_24.x\nSuites: nodistro\nComponents: main\nArchitectures: $(dpkg --print-architecture)\nSigned-By: /etc/apt/keyrings/nodesource.gpg" > /etc/apt/sources.list.d/nodesource.sources && \
printf "Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 600" > /etc/apt/preferences.d/nodejs && \
chmod a+r /etc/apt/keyrings/*.gpg && \
chmod a+r /etc/apt/keyrings/*.asc && \
apt-get update && \
apt-get install -y --no-install-recommends \
btrfs-progs \
build-essential \
@ -58,13 +66,13 @@ RUN \
https://raw.githubusercontent.com/moby/moby/master/hack/dind && \
chmod +x /usr/local/bin/dind && \
echo 'hosts: files dns' > /etc/nsswitch.conf && \
echo "**** setup wizard ****" && \
mkdir -p /wizard && \
if [ -z ${KASM_VERSION+x} ]; then \
KASM_VERSION=$(curl -sX GET 'https://api.github.com/repos/kasmtech/kasm-install-wizard/releases/latest' \
| jq -r '.name'); \
fi && \
echo "${KASM_VERSION}" > /version.txt && \
echo "**** add wizard ****" && \
curl -o \
/tmp/wizard.tar.gz -L \
"https://github.com/kasmtech/kasm-install-wizard/archive/refs/tags/${KASM_VERSION}.tar.gz" && \
@ -76,32 +84,30 @@ RUN \
echo "**** add installer ****" && \
curl -o \
/tmp/kasm.tar.gz -L \
"https://github.com/kasmtech/kasm-install-wizard/releases/download/${KASM_VERSION}/kasm_release.tar.gz" && \
"https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}.tar.gz" && \
tar xf \
/tmp/kasm.tar.gz -C \
/ && \
ALVERSION=$(cat /kasm_release/conf/database/seed_data/default_properties.yaml |awk '/alembic_version/ {print $2}') && \
curl -o \
/tmp/images.tar.gz -L \
"https://kasm-ci.s3.amazonaws.com/${KASM_VERSION}-images-combined.tar.gz" && \
tar xf \
/tmp/images.tar.gz -C \
/ && \
sed -i \
'/alembic_version/s/.*/alembic_version: '${ALVERSION}'/' \
/kasm_release/conf/database/seed_data/default_images_a* && \
# Don't check for open ports during upgrades
sed -i 's/-N -e -H/-N -B -e -H/g' /kasm_release/upgrade.sh && \
echo "exit 0" > /kasm_release/install_dependencies.sh && \
# Fix dependencies so containers start in the right order
/kasm_release/bin/utils/yq_$(uname -m) -i \
'.services.proxy.volumes += "/kasm_release/www/img/thumbnails:/srv/www/img/thumbnails"' \
'.services.proxy.depends_on = {"kasm_manager":{"condition": "service_healthy"},"kasm_api":{"condition": "service_healthy"},"kasm_agent":{"condition": "service_started"},"kasm_guac":{"condition": "service_started"}}' \
/kasm_release/docker/docker-compose-all.yaml && \
echo "**** copy assets ****" && \
cp \
/kasm_release/www/img/thumbnails/*.png /kasm_release/www/img/thumbnails/*.svg \
/wizard/public/img/thumbnails/ && \
cp \
/kasm_release/conf/database/seed_data/default_images_a* \
/wizard/ && \
/kasm_release/bin/utils/yq_$(uname -m) -i \
'.services.kasm_manager.depends_on = {"db":{"condition": "service_healthy"}}' \
/kasm_release/docker/docker-compose-all.yaml && \
/kasm_release/bin/utils/yq_$(uname -m) -i \
'.services.kasm_api.depends_on = {"db":{"condition": "service_healthy"}}' \
/kasm_release/docker/docker-compose-all.yaml && \
/kasm_release/bin/utils/yq_$(uname -m) -i \
'.services.kasm_api.healthcheck += {"start_period": "60s","start_interval": "30s"}' \
/kasm_release/docker/docker-compose-all.yaml && \
/kasm_release/bin/utils/yq_$(uname -m) -i \
'.services.kasm_rdp_https_gateway.depends_on = {"proxy":{"condition": "service_started"}}' \
/kasm_release/docker/docker-compose-all.yaml && \
# Add Kasm and db users
useradd -u 70 kasm_db && \
useradd kasm && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \

2
Jenkinsfile vendored
View file

@ -30,7 +30,7 @@ pipeline {
PR_DOCKERHUB_IMAGE = 'lspipepr/kasm'
DIST_IMAGE = 'ubuntu'
MULTIARCH='true'
CI='true'
CI='false'
CI_WEB='false'
CI_PORT='3000'
CI_SSL='true'

View file

@ -35,7 +35,6 @@ Find us at:
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/kasm.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=pulls&logo=docker)](https://hub.docker.com/r/linuxserver/kasm)
[![Docker Stars](https://img.shields.io/docker/stars/linuxserver/kasm.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=stars&logo=docker)](https://hub.docker.com/r/linuxserver/kasm)
[![Jenkins Build](https://img.shields.io/jenkins/build?labelColor=555555&logoColor=ffffff&style=for-the-badge&jobUrl=https%3A%2F%2Fci.linuxserver.io%2Fjob%2FDocker-Pipeline-Builders%2Fjob%2Fdocker-kasm%2Fjob%2Fmaster%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-kasm/job/master/)
[![LSIO CI](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=CI&query=CI&url=https%3A%2F%2Fci-tests.linuxserver.io%2Flinuxserver%2Fkasm%2Flatest%2Fci-status.yml)](https://ci-tests.linuxserver.io/linuxserver/kasm/latest/index.html)
[Kasm](https://www.kasmweb.com/?utm_campaign=LinuxServer&utm_source=listing) 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.
@ -71,25 +70,27 @@ Access the installation wizard at https://`your ip`:3000 and follow the instruct
Currently Synology systems are not supported due to them blocking CPU scheduling in their Kernel.
### Updating KASM
### Upgrading KASM
In order to update kasm, first make sure you are using the latest docker image, and then perform the in app update in the admin panel. Docker image update and recreation of container alone won't update kasm.
In order to upgrade Kasm, first make sure you are using the latest docker image, and then perform the in app update from the installation wizard. Docker image update and recreation of container alone won't upgrade Kasm.
Following the upgrade, you will need to update any workspace image tags to match the new version.
### GPU Support
During installation an option will be presented to force all Workspace containers to mount in and use a specific GPU. If using an NVIDIA GPU you will need to pass `-e NVIDIA_VISIBLE_DEVICES=all` or `--gpus all` and have the [NVIDIA Container Runtime](https://github.com/NVIDIA/nvidia-container-runtime) installed on the host. Also if using NVIDIA, Kasm Workspaces has [native NVIDIA support](https://www.kasmweb.com/docs/latest/how_to/gpu.html) so you can optionally opt to simply use that instead of he manual override during installation.
During installation an option will be presented to force all Workspace containers to mount in and use a specific GPU. If using an NVIDIA GPU you will need to pass `-e NVIDIA_VISIBLE_DEVICES=all` or `--gpus all` and have the [NVIDIA Container Toolkit](https://github.com/NVIDIA/nvidia-container-toolkit) installed on the host. Also if using NVIDIA, Kasm Workspaces has [native NVIDIA support](https://docs.kasm.com/docs/latest/how-to/gpu/index.html) so you can optionally opt to simply use that instead of he manual override during installation.
### Gamepad support
In order to properly create virtual Gamepads you will need to mount from your host `/dev/input` and `/run/udev/data`. Please see [HERE](https://www.kasmweb.com/docs/develop/guide/gamepad_passthrough.html) for instructions on enabling gamepad support.
In order to properly create virtual Gamepads you will need to mount from your host `/dev/input` and `/run/udev/data`. Please see [HERE](https://docs.kasm.com/docs/latest/guide/gamepad_passthrough/index.html) for instructions on enabling gamepad support.
### Persistant profiles
In order to use persistant profiles in Workspaces you will need to mount in a folder to use from your host to `/profiles`. From there when configuring a workspace you can set the `Persistant Profile Path` to IE `/profiles/ubuntu-focal/{username}/`, more infomation can be found [HERE](https://www.kasmweb.com/docs/latest/how_to/persistent_profiles.html).
In order to use persistant profiles in Workspaces you will need to mount in a folder to use from your host to `/profiles`. From there when configuring a workspace you can set the `Persistant Profile Path` to IE `/profiles/ubuntu-focal/{username}/`, more infomation can be found [HERE](https://docs.kasm.com/docs/latest/guide/persistent_data/persistent_profiles).
### Reverse proxy
A sample for [SWAG](https://github.com/linuxserver/docker-swag) can be found [here](https://raw.githubusercontent.com/linuxserver/reverse-proxy-confs/master/kasm.subdomain.conf.sample). Post installation you will need to modify the "Proxy Port" setting under the default zone to 0 as outlined [here](https://www.kasmweb.com/docs/latest/how_to/reverse_proxy.html#update-zones) to launch Workspaces sessions.
A sample for [SWAG](https://github.com/linuxserver/docker-swag) can be found [here](https://raw.githubusercontent.com/linuxserver/reverse-proxy-confs/master/kasm.subdomain.conf.sample). Post installation you will need to modify the "Proxy Port" setting under the default zone to 0 as outlined [here](https://docs.kasm.com/docs/latest/how-to/reverse_proxy/index.html#update-zones) to launch Workspaces sessions.
### Strict reverse proxies
@ -127,6 +128,7 @@ services:
ports:
- 3000:3000
- 443:443
stop_grace_period: "90s" #optional
restart: unless-stopped
```
@ -147,6 +149,7 @@ docker run -d \
-v /path/to/kasm/profiles:/profiles `#optional` \
-v /dev/input:/dev/input `#optional` \
-v /run/udev/data:/run/udev/data `#optional` \
--stop-timeout="90s" `#optional` \
--restart unless-stopped \
lscr.io/linuxserver/kasm:latest
```
@ -167,6 +170,7 @@ Containers are configured using parameters passed at runtime (such as those abov
| `-v /profiles` | Optionally specify a path for persistent profile storage. |
| `-v /dev/input` | Optional for gamepad support. |
| `-v /run/udev/data` | Optional for gamepad support. |
| `--stop-timeout=` | Increase container shutdown delay to give Kasm services time to stop cleanly. |
| `--security-opt apparmor=rootlesskit` | Some hosts require this on top of privileged for namespacing to work properly inside the DinD layer. |
## Environment variables from files (Docker secrets)
@ -313,6 +317,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions
* **16.04.26:** - Update for 1.18.1 release. Use rolling service images. Bump docker to v29.
* **13.11.25:** - Pin docker to v28 to avoid API deprecation issues.
* **22.10.25:** - Update for 1.18.0 release.
* **08.06.25:** - Deprecate develop branch.

View file

@ -18,7 +18,7 @@ repo_vars:
- PR_DOCKERHUB_IMAGE = 'lspipepr/kasm'
- DIST_IMAGE = 'ubuntu'
- MULTIARCH='true'
- CI='true'
- CI='false'
- CI_WEB='false'
- CI_PORT='3000'
- CI_SSL='true'

View file

@ -42,6 +42,8 @@ opt_param_volumes:
opt_security_opt_param: true
opt_security_opt_param_vars:
- {run_var: "apparmor=rootlesskit", compose_var: "apparmor:rootlesskit", desc: "Some hosts require this on top of privileged for namespacing to work properly inside the DinD layer."}
opt_custom_params:
- {name: "stop-timeout", name_compose: "stop_grace_period", value: "90s", desc: "Increase container shutdown delay to give Kasm services time to stop cleanly."}
unraid_template: false
privileged: true
# application setup block
@ -60,25 +62,27 @@ app_setup_block: |
Currently Synology systems are not supported due to them blocking CPU scheduling in their Kernel.
### Updating KASM
### Upgrading KASM
In order to update kasm, first make sure you are using the latest docker image, and then perform the in app update in the admin panel. Docker image update and recreation of container alone won't update kasm.
In order to upgrade Kasm, first make sure you are using the latest docker image, and then perform the in app update from the installation wizard. Docker image update and recreation of container alone won't upgrade Kasm.
Following the upgrade, you will need to update any workspace image tags to match the new version.
### GPU Support
During installation an option will be presented to force all Workspace containers to mount in and use a specific GPU. If using an NVIDIA GPU you will need to pass `-e NVIDIA_VISIBLE_DEVICES=all` or `--gpus all` and have the [NVIDIA Container Runtime](https://github.com/NVIDIA/nvidia-container-runtime) installed on the host. Also if using NVIDIA, Kasm Workspaces has [native NVIDIA support](https://www.kasmweb.com/docs/latest/how_to/gpu.html) so you can optionally opt to simply use that instead of he manual override during installation.
During installation an option will be presented to force all Workspace containers to mount in and use a specific GPU. If using an NVIDIA GPU you will need to pass `-e NVIDIA_VISIBLE_DEVICES=all` or `--gpus all` and have the [NVIDIA Container Toolkit](https://github.com/NVIDIA/nvidia-container-toolkit) installed on the host. Also if using NVIDIA, Kasm Workspaces has [native NVIDIA support](https://docs.kasm.com/docs/latest/how-to/gpu/index.html) so you can optionally opt to simply use that instead of he manual override during installation.
### Gamepad support
In order to properly create virtual Gamepads you will need to mount from your host `/dev/input` and `/run/udev/data`. Please see [HERE](https://www.kasmweb.com/docs/develop/guide/gamepad_passthrough.html) for instructions on enabling gamepad support.
In order to properly create virtual Gamepads you will need to mount from your host `/dev/input` and `/run/udev/data`. Please see [HERE](https://docs.kasm.com/docs/latest/guide/gamepad_passthrough/index.html) for instructions on enabling gamepad support.
### Persistant profiles
In order to use persistant profiles in Workspaces you will need to mount in a folder to use from your host to `/profiles`. From there when configuring a workspace you can set the `Persistant Profile Path` to IE `/profiles/ubuntu-focal/{username}/`, more infomation can be found [HERE](https://www.kasmweb.com/docs/latest/how_to/persistent_profiles.html).
In order to use persistant profiles in Workspaces you will need to mount in a folder to use from your host to `/profiles`. From there when configuring a workspace you can set the `Persistant Profile Path` to IE `/profiles/ubuntu-focal/{username}/`, more infomation can be found [HERE](https://docs.kasm.com/docs/latest/guide/persistent_data/persistent_profiles).
### Reverse proxy
A sample for [SWAG](https://github.com/linuxserver/docker-swag) can be found [here](https://raw.githubusercontent.com/linuxserver/reverse-proxy-confs/master/kasm.subdomain.conf.sample). Post installation you will need to modify the "Proxy Port" setting under the default zone to 0 as outlined [here](https://www.kasmweb.com/docs/latest/how_to/reverse_proxy.html#update-zones) to launch Workspaces sessions.
A sample for [SWAG](https://github.com/linuxserver/docker-swag) can be found [here](https://raw.githubusercontent.com/linuxserver/reverse-proxy-confs/master/kasm.subdomain.conf.sample). Post installation you will need to modify the "Proxy Port" setting under the default zone to 0 as outlined [here](https://docs.kasm.com/docs/latest/how-to/reverse_proxy/index.html#update-zones) to launch Workspaces sessions.
# init diagram
init_diagram: |
"kasm:latest": {
@ -126,6 +130,7 @@ init_diagram: |
"kasm:latest" <- Base Images
# changelog
changelogs:
- {date: "16.04.26:", desc: "Update for 1.18.1 release. Use rolling service images. Bump docker to v29."}
- {date: "13.11.25:", desc: "Pin docker to v28 to avoid API deprecation issues."}
- {date: "22.10.25:", desc: "Update for 1.18.0 release."}
- {date: "08.06.25:", desc: "Deprecate develop branch."}

View file

@ -4,5 +4,8 @@
"args": [],
"path": "nvidia-container-runtime"
}
},
"features": {
"containerd-snapshotter": false
}
}

View file

@ -8,6 +8,11 @@ fi
# Workaround for running in a rootless docker environment
sed -i '/set -e/d' /etc/init.d/docker
# Clean up old socket
if [[ -S /var/run/docker.sock ]]; then
rm -f /var/run/docker.sock
fi
# Login to Dockerhub
if [[ -n "${DOCKER_HUB_USERNAME}" ]]; then
docker login --username "${DOCKER_HUB_USERNAME}" --password "${DOCKER_HUB_PASSWORD}"

View file

@ -1,14 +1,3 @@
#!/usr/bin/with-contenv bash
_term() {
if [ -f "/opt/kasm/bin/stop" ]; then
echo "Caught SIGTERM signal!"
echo "Stopping Kasm Containers"
/opt/kasm/bin/stop
pid=$(pidof stop)
# terminate when the stop process dies
tail --pid=${pid} -f /dev/null
fi
}
exec /usr/local/bin/dockerd-entrypoint.sh -l error --data-root /opt/docker

View file

@ -1,11 +1,8 @@
#!/usr/bin/with-contenv bash
# Wait for docker to be up
while true; do
if [[ -S "/var/run/docker.sock" ]]; then
break
fi
sleep 1
while [[ ! -S /var/run/docker.sock ]]; do
sleep 1
done
# Don't do anything if wizard is disabled

View file

@ -0,0 +1 @@
/etc/s6-overlay/s6-rc.d/svc-kasm/finish

View file

@ -0,0 +1,4 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
/opt/kasm/bin/stop

View file

@ -0,0 +1,13 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
while [[ ! -S /var/run/docker.sock ]]; do
sleep 1
done
# Stop any running containers that shouldn't be
docker ps -q | xargs docker stop &> /dev/null
if [[ -f /opt/kasm/bin/start ]]; then
/opt/kasm/bin/start
fi

View file

@ -0,0 +1 @@
oneshot

View file

@ -0,0 +1 @@
/etc/s6-overlay/s6-rc.d/svc-kasm/run