docker-kasm/Dockerfile.aarch64
2026-04-16 11:15:03 +00:00

128 lines
5.3 KiB
Text

# syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-noble
# set version label
ARG BUILD_DATE
ARG KASM_VERSION
ARG VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
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"
RUN \
echo "**** install packages ****" && \
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=/etc/apt/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
tee /etc/apt/sources.list.d/nvidia-container-toolkit.list && \
# 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 \
containerd.io \
docker-ce \
docker-ce-cli \
docker-compose-plugin \
e2fsprogs \
fuse-overlayfs \
iproute2 \
iptables \
lsof \
nodejs \
nvidia-container-toolkit \
openssl \
pigz \
python3 \
sudo \
uidmap \
xfsprogs && \
echo "**** dind setup ****" && \
useradd -U dockremap && \
usermod -G dockremap dockremap && \
echo 'dockremap:165536:65536' >> /etc/subuid && \
echo 'dockremap:165536:65536' >> /etc/subgid && \
curl -o \
/usr/local/bin/dind -L \
https://raw.githubusercontent.com/moby/moby/master/hack/dind && \
chmod +x /usr/local/bin/dind && \
echo 'hosts: files dns' > /etc/nsswitch.conf && \
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" && \
tar xf \
/tmp/wizard.tar.gz -C \
/wizard --strip-components=1 && \
cd /wizard && \
npm install && \
echo "**** add installer ****" && \
curl -o \
/tmp/kasm.tar.gz -L \
"https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}.tar.gz" && \
tar xf \
/tmp/kasm.tar.gz -C \
/ && \
# 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.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 && \
/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 && \
echo "**** cleanup ****" && \
apt-get remove -y g++ gcc make && \
apt-get -y autoremove && \
apt-get clean && \
rm -rf \
/tmp/* \
/var/lib/apt/lists/* \
/var/tmp/*
# add init files
COPY root/ /
# Ports and volumes
EXPOSE 3000 443
VOLUME /opt/