rebasing to jammy and modifications for 1.12 release

This commit is contained in:
thelamer 2022-12-01 17:53:23 -08:00
parent eeafe62dc8
commit be1761c3f0
16 changed files with 240 additions and 73 deletions

76
.github/ISSUE_TEMPLATE/issue.bug.yml vendored Normal file
View file

@ -0,0 +1,76 @@
# Based on the issue template
name: Bug report
description: Create a report to help us improve
title: "[BUG] <title>"
labels: [Bug]
body:
- type: checkboxes
attributes:
label: Is there an existing issue for this?
description: Please search to see if an issue already exists for the bug you encountered.
options:
- label: I have searched the existing issues
required: true
- type: textarea
attributes:
label: Current Behavior
description: Tell us what happens instead of the expected behavior.
validations:
required: true
- type: textarea
attributes:
label: Expected Behavior
description: Tell us what should happen.
validations:
required: false
- type: textarea
attributes:
label: Steps To Reproduce
description: Steps to reproduce the behavior.
placeholder: |
1. In this environment...
2. With this config...
3. Run '...'
4. See error...
validations:
required: true
- type: textarea
attributes:
label: Environment
description: |
examples:
- **OS**: Ubuntu 20.04
- **How docker service was installed**: distro's packagemanager
value: |
- OS:
- How docker service was installed:
render: markdown
validations:
required: false
- type: dropdown
attributes:
label: CPU architecture
options:
- x86-64
- arm64
validations:
required: true
- type: textarea
attributes:
label: Docker creation
description: |
Command used to create docker container
Provide your docker create/run command or compose yaml snippet, or a screenshot of settings if using a gui to create the container
render: bash
validations:
required: true
- type: textarea
attributes:
description: |
Provide a full docker log, output of "docker logs linuxserver.io"
label: Container logs
placeholder: |
Output of `docker logs linuxserver.io`
render: bash
validations:
required: true

View file

@ -0,0 +1,31 @@
# Based on the issue template
name: Feature request
description: Suggest an idea for this project
title: "[FEAT] <title>"
labels: [enhancement]
body:
- type: checkboxes
attributes:
label: Is this a new feature request?
description: Please search to see if a feature request already exists.
options:
- label: I have searched the existing issues
required: true
- type: textarea
attributes:
label: Wanted change
description: Tell us what you want to happen.
validations:
required: true
- type: textarea
attributes:
label: Reason for change
description: Justify your request, why do you want it, what is the benefit.
validations:
required: true
- type: textarea
attributes:
label: Proposed code change
description: Do you have a potential code change in mind?
validations:
required: false

View file

@ -0,0 +1,12 @@
name: Comment on invalid interaction
on:
issues:
types:
- labeled
jobs:
add-comment-on-invalid:
if: github.event.label.name == 'invalid'
permissions:
issues: write
uses: linuxserver/github-workflows/.github/workflows/invalid-interaction-helper.yml@v1
secrets: inherit

View file

@ -7,7 +7,7 @@ jobs:
external-trigger-master:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.3
- uses: actions/checkout@v3.1.0
- name: External Trigger
if: github.ref == 'refs/heads/master'

View file

@ -9,7 +9,7 @@ jobs:
external-trigger-scheduler:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.3
- uses: actions/checkout@v3.1.0
with:
fetch-depth: '0'

View file

@ -8,6 +8,6 @@ jobs:
steps:
- uses: actions/first-interaction@v1
with:
issue-message: 'Thanks for opening your first issue here! Be sure to follow the [bug](https://github.com/linuxserver/docker-kasm/blob/master/.github/ISSUE_TEMPLATE/issue.bug.md) or [feature](https://github.com/linuxserver/docker-kasm/blob/master/.github/ISSUE_TEMPLATE/issue.feature.md) issue templates!'
issue-message: 'Thanks for opening your first issue here! Be sure to follow the [bug](https://github.com/linuxserver/docker-kasm/blob/master/.github/ISSUE_TEMPLATE/issue.bug.yml) or [feature](https://github.com/linuxserver/docker-kasm/blob/master/.github/ISSUE_TEMPLATE/issue.feature.yml) issue templates!'
pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-kasm/blob/master/.github/PULL_REQUEST_TEMPLATE.md)!'
repo-token: ${{ secrets.GITHUB_TOKEN }}

View file

@ -7,7 +7,7 @@ jobs:
package-trigger-master:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.3
- uses: actions/checkout@v3.1.0
- name: Package Trigger
if: github.ref == 'refs/heads/master'

View file

@ -9,7 +9,7 @@ jobs:
package-trigger-scheduler:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.3
- uses: actions/checkout@v3.1.0
with:
fetch-depth: '0'

View file

@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v3
- uses: actions/stale@v6.0.1
with:
stale-issue-message: "This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."
stale-pr-message: "This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."

View file

@ -1,4 +1,4 @@
FROM ghcr.io/linuxserver/baseimage-alpine:3.16
FROM ghcr.io/linuxserver/baseimage-ubuntu:jammy
# set version label
ARG BUILD_DATE
@ -11,40 +11,47 @@ LABEL maintainer="thelamer"
ENV DOCKER_TLS_CERTDIR=""
ENV TINI_SUBREAPER=true
#Add needed nvidia environment variables for https://github.com/NVIDIA/nvidia-docker
ENV NVIDIA_DRIVER_CAPABILITIES="compute,graphics,video,utility" \
VERSION="develop"
# Container setup
RUN \
echo "**** install build packages ****" && \
apk add --no-cache --virtual=build-dependencies \
alpine-sdk \
npm && \
echo "**** install packages ****" && \
apk add --no-cache \
bash \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu jammy 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 && \
curl -s -L https://nvidia.github.io/libnvidia-container/ubuntu22.04/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/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_16.x | bash - && \
apt-get install -y --no-install-recommends \
btrfs-progs \
ca-certificates \
coreutils \
curl \
docker \
docker-cli-compose \
containerd.io \
docker-ce \
docker-ce-cli \
docker-compose-plugin \
drm-info \
e2fsprogs \
e2fsprogs-extra \
findutils \
fuse-overlayfs \
ip6tables \
g++ \
gcc \
iptables \
jq \
make \
nodejs \
nvidia-docker2 \
openssl \
pigz \
python3 \
shadow-uidmap \
sudo \
xfsprogs \
xz \
zfs && \
uidmap \
xfsprogs && \
echo "**** dind setup ****" && \
addgroup -S dockremap && \
adduser -S -G dockremap dockremap && \
useradd -U dockremap && \
usermod -G dockremap dockremap && \
echo 'dockremap:165536:65536' >> /etc/subuid && \
echo 'dockremap:165536:65536' >> /etc/subgid && \
curl -o \
@ -58,6 +65,7 @@ RUN \
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 && \
curl -o \
/tmp/wizard.tar.gz -L \
"https://github.com/kasmtech/kasm-install-wizard/archive/refs/tags/${KASM_VERSION}.tar.gz" && \
@ -73,20 +81,22 @@ RUN \
tar xf \
/tmp/kasm.tar.gz -C \
/ && \
sed -i 's/-N -e -H/-N -B -e -H/g' /kasm_release/upgrade.sh && \
echo "**** copy assets ****" && \
cp \
/kasm_release/www/img/thumbnails/*.png \
/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/ && \
echo "**** cleanup ****" && \
apk del --purge \
build-dependencies && \
apt-get remove -y g++ gcc make && \
apt-get -y autoremove && \
apt-get clean && \
rm -rf \
/root/.npm \
/root/.cache \
/tmp/*
/tmp/* \
/var/lib/apt/lists/* \
/var/tmp/*
# add init files
COPY root/ /

View file

@ -1,4 +1,4 @@
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.16
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-jammy
# set version label
ARG BUILD_DATE
@ -11,40 +11,47 @@ LABEL maintainer="thelamer"
ENV DOCKER_TLS_CERTDIR=""
ENV TINI_SUBREAPER=true
#Add needed nvidia environment variables for https://github.com/NVIDIA/nvidia-docker
ENV NVIDIA_DRIVER_CAPABILITIES="compute,graphics,video,utility" \
VERSION="develop"
# Container setup
RUN \
echo "**** install build packages ****" && \
apk add --no-cache --virtual=build-dependencies \
alpine-sdk \
npm && \
echo "**** install packages ****" && \
apk add --no-cache \
bash \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
echo "deb [arch=arm64] https://download.docker.com/linux/ubuntu jammy 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 && \
curl -s -L https://nvidia.github.io/libnvidia-container/ubuntu22.04/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/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_16.x | bash - && \
apt-get install -y --no-install-recommends \
btrfs-progs \
ca-certificates \
coreutils \
curl \
docker \
docker-cli-compose \
containerd.io \
docker-ce \
docker-ce-cli \
docker-compose-plugin \
drm-info \
e2fsprogs \
e2fsprogs-extra \
findutils \
fuse-overlayfs \
ip6tables \
g++ \
gcc \
iptables \
jq \
make \
nodejs \
nvidia-docker2 \
openssl \
pigz \
python3 \
shadow-uidmap \
sudo \
xfsprogs \
xz \
zfs && \
uidmap \
xfsprogs && \
echo "**** dind setup ****" && \
addgroup -S dockremap && \
adduser -S -G dockremap dockremap && \
useradd -U dockremap && \
usermod -G dockremap dockremap && \
echo 'dockremap:165536:65536' >> /etc/subuid && \
echo 'dockremap:165536:65536' >> /etc/subgid && \
curl -o \
@ -58,6 +65,7 @@ RUN \
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 && \
curl -o \
/tmp/wizard.tar.gz -L \
"https://github.com/kasmtech/kasm-install-wizard/archive/refs/tags/${KASM_VERSION}.tar.gz" && \
@ -73,20 +81,22 @@ RUN \
tar xf \
/tmp/kasm.tar.gz -C \
/ && \
sed -i 's/-N -e -H/-N -B -e -H/g' /kasm_release/upgrade.sh && \
echo "**** copy assets ****" && \
cp \
/kasm_release/www/img/thumbnails/*.png \
/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/ && \
echo "**** cleanup ****" && \
apk del --purge \
build-dependencies && \
apt-get remove -y g++ gcc make && \
apt-get -y autoremove && \
apt-get clean && \
rm -rf \
/root/.npm \
/root/.cache \
/tmp/*
/tmp/* \
/var/lib/apt/lists/* \
/var/tmp/*
# add init files
COPY root/ /

6
Jenkinsfile vendored
View file

@ -27,7 +27,7 @@ pipeline {
DOCKERHUB_IMAGE = 'linuxserver/kasm'
DEV_DOCKERHUB_IMAGE = 'lsiodev/kasm'
PR_DOCKERHUB_IMAGE = 'lspipepr/kasm'
DIST_IMAGE = 'alpine'
DIST_IMAGE = 'ubuntu'
MULTIARCH='true'
CI='true'
CI_WEB='true'
@ -59,7 +59,7 @@ pipeline {
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/'
env.PULL_REQUEST = env.CHANGE_ID
env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.md ./.github/ISSUE_TEMPLATE/issue.feature.md ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/stale.yml ./.github/workflows/external_trigger.yml ./.github/workflows/package_trigger.yml'
env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/stale.yml ./.github/workflows/external_trigger.yml ./.github/workflows/package_trigger.yml'
}
script{
env.LS_RELEASE_NUMBER = sh(
@ -287,7 +287,7 @@ pipeline {
echo "Jenkinsfile is up to date."
fi
# Stage 2 - Delete old templates
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md"
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md\n.github/ISSUE_TEMPLATE/issue.bug.md\n.github/ISSUE_TEMPLATE/issue.feature.md"
for i in ${OLD_TEMPLATES}; do
if [[ -f "${i}" ]]; then
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"

View file

@ -73,10 +73,6 @@ This image provides various versions that are available via tags. Please read th
This container uses [Docker in Docker](https://www.docker.com/blog/docker-can-now-run-within-docker/) and requires being run in `privileged` mode. This container also requires an initial setup that runs on port 3000.
**Unlike other containers the web interface port (default 443) needs to be set for the env variable `KASM_PORT` and both the inside and outside port IE for 4443 `KASM_PORT=4443` `-p 4443:4443`**
**Unraid users due to the DinD storage layer `/opt/` should be mounted directly to a disk IE `/mnt/disk1/appdata/path` or optimally with a cache disk at `/mnt/cache/appdata/path`**
Access the installation wizard at https://`your ip`:3000 and follow the instructions there. Once setup is complete access https://`your ip`:443 and login with the credentials you entered during setup. The default users are:
* admin@kasm.local
@ -84,6 +80,18 @@ 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.
### 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.
### 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.
### 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).
## Usage
Here are some example snippets to help you get started creating a container.
@ -106,6 +114,8 @@ services:
volumes:
- /path/to/data:/opt
- /path/to/profiles:/profiles #optional
- /dev/input:/dev/input #optional
- /run/udev/data:/run/udev/data #optional
ports:
- 3000:3000
- 443:443
@ -126,6 +136,8 @@ docker run -d \
-p 443:443 \
-v /path/to/data:/opt \
-v /path/to/profiles:/profiles `#optional` \
-v /dev/input:/dev/input `#optional` \
-v /run/udev/data:/run/udev/data `#optional` \
--restart unless-stopped \
lscr.io/linuxserver/kasm:latest
```
@ -144,6 +156,8 @@ Container images are configured using parameters passed at runtime (such as thos
| `-e DOCKER_HUB_PASSWORD=PASS` | Optionally specify a DockerHub password to pull private images. |
| `-v /opt` | Docker and installation storage. |
| `-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. |
## Environment variables from files (Docker secrets)
@ -241,5 +255,6 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions
* **05.11.22:** - Rebase to Jammy, add support for GPUs, add support for Gamepads.
* **23.09.22:** - Migrate to s6v3.
* **02.07.22:** - Initial Release.

View file

@ -17,7 +17,7 @@ repo_vars:
- DOCKERHUB_IMAGE = 'linuxserver/kasm'
- DEV_DOCKERHUB_IMAGE = 'lsiodev/kasm'
- PR_DOCKERHUB_IMAGE = 'lspipepr/kasm'
- DIST_IMAGE = 'alpine'
- DIST_IMAGE = 'ubuntu'
- MULTIARCH='true'
- CI='true'
- CI_WEB='true'

View file

@ -56,6 +56,8 @@ opt_param_env_vars:
opt_param_usage_include_vols: true
opt_param_volumes:
- { vol_path: "/profiles", vol_host_path: "/path/to/profiles", desc: "Optionally specify a path for persistent profile storage." }
- { vol_path: "/dev/input", vol_host_path: "/dev/input", desc: "Optional for gamepad support." }
- { vol_path: "/run/udev/data", vol_host_path: "/run/udev/data", desc: "Optional for gamepad support." }
opt_param_usage_include_ports: false
opt_param_ports: []
@ -78,18 +80,27 @@ app_setup_block_enabled: true
app_setup_block: |
This container uses [Docker in Docker](https://www.docker.com/blog/docker-can-now-run-within-docker/) and requires being run in `privileged` mode. This container also requires an initial setup that runs on port 3000.
**Unlike other containers the web interface port (default 443) needs to be set for the env variable `KASM_PORT` and both the inside and outside port IE for 4443 `KASM_PORT=4443` `-p 4443:4443`**
**Unraid users due to the DinD storage layer `/opt/` should be mounted directly to a disk IE `/mnt/disk1/appdata/path` or optimally with a cache disk at `/mnt/cache/appdata/path`**
Access the installation wizard at https://`your ip`:3000 and follow the instructions there. Once setup is complete access https://`your ip`:443 and login with the credentials you entered during setup. The default users are:
* admin@kasm.local
* user@kasm.local
Currently Synology systems are not supported due to them blocking CPU scheduling in their Kernel.
Currently Synology systems are not supported due to them blocking CPU scheduling in their Kernel.
### 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.
### 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.
### 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).
# changelog
changelogs:
- { date: "05.11.22:", desc: "Rebase to Jammy, add support for GPUs, add support for Gamepads." }
- { date: "23.09.22:", desc: "Migrate to s6v3." }
- { date: "02.07.22:", desc: "Initial Release." }

2
root/gpuinfo.sh Executable file
View file

@ -0,0 +1,2 @@
#! /bin/bash
drm_info -j 2>/dev/null| jq -c 'with_entries(.value |= .driver.desc)'