mirror of
https://github.com/linuxserver/docker-kasm.git
synced 2026-07-18 00:57:22 +00:00
Merge pull request #102 from linuxserver/1.18.1-fudge
This commit is contained in:
commit
c16982ddc8
18 changed files with 123 additions and 87 deletions
62
Dockerfile
62
Dockerfile
|
|
@ -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 && \
|
||||
|
|
|
|||
|
|
@ -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
2
Jenkinsfile
vendored
|
|
@ -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'
|
||||
|
|
|
|||
19
README.md
19
README.md
|
|
@ -35,7 +35,6 @@ Find us at:
|
|||
[](https://hub.docker.com/r/linuxserver/kasm)
|
||||
[](https://hub.docker.com/r/linuxserver/kasm)
|
||||
[](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-kasm/job/master/)
|
||||
[](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.
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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."}
|
||||
|
|
|
|||
|
|
@ -4,5 +4,8 @@
|
|||
"args": [],
|
||||
"path": "nvidia-container-runtime"
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"containerd-snapshotter": false
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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}"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
1
root/etc/s6-overlay/s6-rc.d/svc-kasm/down
Normal file
1
root/etc/s6-overlay/s6-rc.d/svc-kasm/down
Normal file
|
|
@ -0,0 +1 @@
|
|||
/etc/s6-overlay/s6-rc.d/svc-kasm/finish
|
||||
4
root/etc/s6-overlay/s6-rc.d/svc-kasm/finish
Executable file
4
root/etc/s6-overlay/s6-rc.d/svc-kasm/finish
Executable file
|
|
@ -0,0 +1,4 @@
|
|||
#!/usr/bin/with-contenv bash
|
||||
# shellcheck shell=bash
|
||||
|
||||
/opt/kasm/bin/stop
|
||||
13
root/etc/s6-overlay/s6-rc.d/svc-kasm/run
Executable file
13
root/etc/s6-overlay/s6-rc.d/svc-kasm/run
Executable 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
|
||||
1
root/etc/s6-overlay/s6-rc.d/svc-kasm/type
Normal file
1
root/etc/s6-overlay/s6-rc.d/svc-kasm/type
Normal file
|
|
@ -0,0 +1 @@
|
|||
oneshot
|
||||
1
root/etc/s6-overlay/s6-rc.d/svc-kasm/up
Normal file
1
root/etc/s6-overlay/s6-rc.d/svc-kasm/up
Normal file
|
|
@ -0,0 +1 @@
|
|||
/etc/s6-overlay/s6-rc.d/svc-kasm/run
|
||||
Loading…
Add table
Add a link
Reference in a new issue