mirror of
https://github.com/kasmtech/workspaces-images.git
synced 2024-11-21 23:53:10 +01:00
Resolve KASM-6027 "Feature/ alpine 320"
This commit is contained in:
parent
7fc3797294
commit
a781d87b81
@ -385,6 +385,15 @@ multiImages:
|
|||||||
- src/ubuntu/install/langpacks/**
|
- src/ubuntu/install/langpacks/**
|
||||||
- src/ubuntu/install/cleanup/**
|
- src/ubuntu/install/cleanup/**
|
||||||
- src/alpine/install/**
|
- src/alpine/install/**
|
||||||
|
- name: alpine-320-desktop
|
||||||
|
singleapp: false
|
||||||
|
base: core-alpine-320
|
||||||
|
dockerfile: dockerfile-kasm-alpine-320-desktop
|
||||||
|
changeFiles:
|
||||||
|
- dockerfile-kasm-alpine-320-desktop
|
||||||
|
- src/ubuntu/install/langpacks/**
|
||||||
|
- src/ubuntu/install/cleanup/**
|
||||||
|
- src/alpine/install/**
|
||||||
- name: brave
|
- name: brave
|
||||||
singleapp: true
|
singleapp: true
|
||||||
base: core-ubuntu-focal
|
base: core-ubuntu-focal
|
||||||
@ -650,13 +659,6 @@ multiImages:
|
|||||||
- src/ubuntu/install/certificates/**
|
- src/ubuntu/install/certificates/**
|
||||||
- src/ubuntu/install/vivaldi/**
|
- src/ubuntu/install/vivaldi/**
|
||||||
singleImages:
|
singleImages:
|
||||||
- name: atom
|
|
||||||
singleapp: true
|
|
||||||
base: core-ubuntu-focal
|
|
||||||
dockerfile: dockerfile-kasm-atom
|
|
||||||
changeFiles:
|
|
||||||
- dockerfile-kasm-atom
|
|
||||||
- src/ubuntu/install/atom/**
|
|
||||||
- name: blender
|
- name: blender
|
||||||
singleapp: true
|
singleapp: true
|
||||||
base: core-ubuntu-focal
|
base: core-ubuntu-focal
|
||||||
|
54
dockerfile-kasm-alpine-320-desktop
Normal file
54
dockerfile-kasm-alpine-320-desktop
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
ARG BASE_TAG="develop"
|
||||||
|
ARG BASE_IMAGE="core-alpine-320"
|
||||||
|
FROM kasmweb/$BASE_IMAGE:$BASE_TAG
|
||||||
|
|
||||||
|
USER root
|
||||||
|
|
||||||
|
ENV DISTRO=alpine320
|
||||||
|
ENV HOME /home/kasm-default-profile
|
||||||
|
ENV STARTUPDIR /dockerstartup
|
||||||
|
WORKDIR $HOME
|
||||||
|
|
||||||
|
### Envrionment config
|
||||||
|
ENV SKIP_CLEAN=true \
|
||||||
|
INST_DIR=$STARTUPDIR/install \
|
||||||
|
INST_SCRIPTS="/alpine/install/tools/install_tools_deluxe.sh \
|
||||||
|
/alpine/install/misc/install_tools.sh \
|
||||||
|
/alpine/install/firefox/install_firefox.sh \
|
||||||
|
/alpine/install/remmina/install_remmina.sh \
|
||||||
|
/alpine/install/gimp/install_gimp.sh \
|
||||||
|
/alpine/install/ansible/install_ansible.sh \
|
||||||
|
/alpine/install/terraform/install_terraform.sh \
|
||||||
|
/alpine/install/thunderbird/install_thunderbird.sh \
|
||||||
|
/alpine/install/audacity/install_audacity.sh \
|
||||||
|
/alpine/install/blender/install_blender.sh \
|
||||||
|
/alpine/install/geany/install_geany.sh \
|
||||||
|
/alpine/install/inkscape/install_inkscape.sh \
|
||||||
|
/alpine/install/libre_office/install_libre_office.sh \
|
||||||
|
/alpine/install/pinta/install_pinta.sh \
|
||||||
|
/alpine/install/obs/install_obs.sh \
|
||||||
|
/alpine/install/filezilla/install_filezilla.sh \
|
||||||
|
/ubuntu/install/langpacks/install_langpacks.sh \
|
||||||
|
/ubuntu/install/cleanup/cleanup.sh"
|
||||||
|
|
||||||
|
# Copy install scripts
|
||||||
|
COPY ./src/ $INST_DIR
|
||||||
|
|
||||||
|
# Run installations
|
||||||
|
RUN \
|
||||||
|
for SCRIPT in $INST_SCRIPTS; do \
|
||||||
|
bash ${INST_DIR}${SCRIPT} || exit 1; \
|
||||||
|
done && \
|
||||||
|
$STARTUPDIR/set_user_permission.sh $HOME && \
|
||||||
|
rm -f /etc/X11/xinit/Xclients && \
|
||||||
|
chown 1000:0 $HOME && \
|
||||||
|
mkdir -p /home/kasm-user && \
|
||||||
|
chown -R 1000:0 /home/kasm-user && \
|
||||||
|
rm -Rf ${INST_DIR}
|
||||||
|
|
||||||
|
# Userspace Runtime
|
||||||
|
ENV HOME /home/kasm-user
|
||||||
|
WORKDIR $HOME
|
||||||
|
USER 1000
|
||||||
|
|
||||||
|
CMD ["--tail-log"]
|
@ -9,25 +9,16 @@ ENV INST_SCRIPTS $STARTUPDIR/install
|
|||||||
WORKDIR $HOME
|
WORKDIR $HOME
|
||||||
|
|
||||||
# Rootless Dind
|
# Rootless Dind
|
||||||
ENV DOCKER_BIN=/usr/local/lib/docker \
|
|
||||||
XDG_RUNTIME_DIR=/docker
|
|
||||||
RUN mkdir -p $DOCKER_BIN && chown 1000:0 $DOCKER_BIN && \
|
|
||||||
mkdir -p $XDG_RUNTIME_DIR && chown 1000:0 $XDG_RUNTIME_DIR
|
|
||||||
ENV PATH=$DOCKER_BIN:$DOCKER_BIN/cli-plugins:$PATH \
|
|
||||||
DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sock
|
|
||||||
COPY ./src/ubuntu/install/dind_rootless/install_dind_rootless_prerequisites.sh $INST_SCRIPTS/dind_rootless/
|
|
||||||
RUN bash $INST_SCRIPTS/dind_rootless/install_dind_rootless_prerequisites.sh
|
|
||||||
COPY ./src/ubuntu/install/dind_rootless/install_dind_rootless.sh $INST_SCRIPTS/dind_rootless/
|
COPY ./src/ubuntu/install/dind_rootless/install_dind_rootless.sh $INST_SCRIPTS/dind_rootless/
|
||||||
RUN chown 1000:1000 $INST_SCRIPTS/dind_rootless/install_dind_rootless.sh
|
|
||||||
# It's recommended that docker-rootless be installed by non root user
|
|
||||||
USER 1000
|
|
||||||
RUN bash $INST_SCRIPTS/dind_rootless/install_dind_rootless.sh
|
RUN bash $INST_SCRIPTS/dind_rootless/install_dind_rootless.sh
|
||||||
USER root
|
|
||||||
RUN rm -rf $INST_SCRIPTS/dind_rootless
|
RUN rm -rf $INST_SCRIPTS/dind_rootless
|
||||||
COPY ./src/ubuntu/install/dind_rootless/custom_startup.sh $STARTUPDIR/custom_startup.sh
|
COPY ./src/ubuntu/install/dind_rootless/custom_startup.sh $STARTUPDIR/custom_startup.sh
|
||||||
RUN chmod +x $STARTUPDIR/custom_startup.sh && chmod 755 $STARTUPDIR/custom_startup.sh
|
RUN chmod +x $STARTUPDIR/custom_startup.sh && chmod 755 $STARTUPDIR/custom_startup.sh
|
||||||
COPY ./src/ubuntu/install/dind_rootless/modprobe /usr/local/bin/modprobe
|
COPY ./src/ubuntu/install/dind_rootless/modprobe /usr/local/bin/modprobe
|
||||||
RUN chmod +x /usr/local/bin/modprobe
|
RUN chmod +x /usr/local/bin/modprobe
|
||||||
|
ENV XDG_RUNTIME_DIR=/docker \
|
||||||
|
DOCKER_HOST=unix:///docker/docker.sock
|
||||||
|
RUN mkdir -p $XDG_RUNTIME_DIR && chown 1000:0 $XDG_RUNTIME_DIR
|
||||||
|
|
||||||
### Envrionment config
|
### Envrionment config
|
||||||
ENV DEBIAN_FRONTEND=noninteractive \
|
ENV DEBIAN_FRONTEND=noninteractive \
|
||||||
|
@ -9,25 +9,16 @@ ENV INST_SCRIPTS $STARTUPDIR/install
|
|||||||
WORKDIR $HOME
|
WORKDIR $HOME
|
||||||
|
|
||||||
# Rootless Dind
|
# Rootless Dind
|
||||||
ENV DOCKER_BIN=/usr/local/lib/docker \
|
|
||||||
XDG_RUNTIME_DIR=/docker
|
|
||||||
RUN mkdir -p $DOCKER_BIN && chown 1000:0 $DOCKER_BIN && \
|
|
||||||
mkdir -p $XDG_RUNTIME_DIR && chown 1000:0 $XDG_RUNTIME_DIR
|
|
||||||
ENV PATH=$DOCKER_BIN:$DOCKER_BIN/cli-plugins:$PATH \
|
|
||||||
DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sock
|
|
||||||
COPY ./src/ubuntu/install/dind_rootless/install_dind_rootless_prerequisites.sh $INST_SCRIPTS/dind_rootless/
|
|
||||||
RUN bash $INST_SCRIPTS/dind_rootless/install_dind_rootless_prerequisites.sh
|
|
||||||
COPY ./src/ubuntu/install/dind_rootless/install_dind_rootless.sh $INST_SCRIPTS/dind_rootless/
|
COPY ./src/ubuntu/install/dind_rootless/install_dind_rootless.sh $INST_SCRIPTS/dind_rootless/
|
||||||
RUN chown 1000:1000 $INST_SCRIPTS/dind_rootless/install_dind_rootless.sh
|
|
||||||
# It's recommended that docker-rootless be installed by non root user
|
|
||||||
USER 1000
|
|
||||||
RUN bash $INST_SCRIPTS/dind_rootless/install_dind_rootless.sh
|
RUN bash $INST_SCRIPTS/dind_rootless/install_dind_rootless.sh
|
||||||
USER root
|
|
||||||
RUN rm -rf $INST_SCRIPTS/dind_rootless
|
RUN rm -rf $INST_SCRIPTS/dind_rootless
|
||||||
COPY ./src/ubuntu/install/dind_rootless/custom_startup.sh $STARTUPDIR/custom_startup.sh
|
COPY ./src/ubuntu/install/dind_rootless/custom_startup.sh $STARTUPDIR/custom_startup.sh
|
||||||
RUN chmod +x $STARTUPDIR/custom_startup.sh && chmod 755 $STARTUPDIR/custom_startup.sh
|
RUN chmod +x $STARTUPDIR/custom_startup.sh && chmod 755 $STARTUPDIR/custom_startup.sh
|
||||||
COPY ./src/ubuntu/install/dind_rootless/modprobe /usr/local/bin/modprobe
|
COPY ./src/ubuntu/install/dind_rootless/modprobe /usr/local/bin/modprobe
|
||||||
RUN chmod +x /usr/local/bin/modprobe
|
RUN chmod +x /usr/local/bin/modprobe
|
||||||
|
ENV XDG_RUNTIME_DIR=/docker \
|
||||||
|
DOCKER_HOST=unix:///docker/docker.sock
|
||||||
|
RUN mkdir -p $XDG_RUNTIME_DIR && chown 1000:0 $XDG_RUNTIME_DIR
|
||||||
|
|
||||||
### Envrionment config
|
### Envrionment config
|
||||||
ENV DEBIAN_FRONTEND=noninteractive \
|
ENV DEBIAN_FRONTEND=noninteractive \
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
if grep -q v3.19 /etc/os-release; then
|
if grep -q v3.19 /etc/os-release || grep -q v3.20 /etc/os-release; then
|
||||||
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing/ \
|
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing/ \
|
||||||
opentofu
|
opentofu
|
||||||
else
|
else
|
||||||
|
@ -7,9 +7,9 @@ CHROME_ARGS="--password-store=basic --no-sandbox --ignore-gpu-blocklist --user-d
|
|||||||
apt-get update
|
apt-get update
|
||||||
apt install -y apt-transport-https curl
|
apt install -y apt-transport-https curl
|
||||||
|
|
||||||
curl -s https://brave-browser-apt-release.s3.brave.com/brave-core.asc | apt-key --keyring /etc/apt/trusted.gpg.d/brave-browser-release.gpg add -
|
curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg
|
||||||
|
|
||||||
echo "deb [arch=${ARCH}] https://brave-browser-apt-release.s3.brave.com/ stable main" | tee /etc/apt/sources.list.d/brave-browser-release.list
|
echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg] https://brave-browser-apt-release.s3.brave.com/ stable main"| tee /etc/apt/sources.list.d/brave-browser-release.list
|
||||||
|
|
||||||
apt update
|
apt update
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -ex
|
set -ex
|
||||||
START_COMMAND="$DOCKER_BIN/dockerd-rootless.sh"
|
START_COMMAND="dockerd-rootless.sh"
|
||||||
PGREP="dockerd"
|
PGREP="dockerd"
|
||||||
export MAXIMIZE="false"
|
export MAXIMIZE="false"
|
||||||
MAXIMIZE_SCRIPT=$STARTUPDIR/maximize_window.sh
|
MAXIMIZE_SCRIPT=$STARTUPDIR/maximize_window.sh
|
||||||
|
@ -1,21 +1,60 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -ex
|
set -ex
|
||||||
# This script should be executed as a non-root user.
|
|
||||||
# User verification: deny running as root
|
# Enable Docker repo
|
||||||
if [ "$(id -u)" = "0" ]; then
|
ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g')
|
||||||
>&2 echo "Refusing to install rootless Docker as the root user"; exit 1
|
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
|
||||||
|
echo "deb [arch=${ARCH}] https://download.docker.com/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" > \
|
||||||
|
/etc/apt/sources.list.d/docker.list
|
||||||
|
|
||||||
|
# Install deps
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y \
|
||||||
|
ca-certificates \
|
||||||
|
curl \
|
||||||
|
dbus-user-session \
|
||||||
|
docker-buildx-plugin \
|
||||||
|
docker-ce \
|
||||||
|
docker-ce-cli \
|
||||||
|
docker-compose-plugin \
|
||||||
|
fuse-overlayfs \
|
||||||
|
iptables \
|
||||||
|
kmod \
|
||||||
|
openssh-client \
|
||||||
|
sudo \
|
||||||
|
supervisor \
|
||||||
|
uidmap \
|
||||||
|
wget
|
||||||
|
|
||||||
|
# URLs
|
||||||
|
STABLE_LATEST=$(curl -sL https://get.docker.com/rootless | awk -F'="' '/STABLE_LATEST=/ {print substr($2, 1, length($2)-1)}')
|
||||||
|
STATIC_RELEASE_ROOTLESS_URL="https://download.docker.com/linux/static/stable/$(uname -m)/docker-rootless-extras-${STABLE_LATEST}.tgz"
|
||||||
|
|
||||||
|
# User settings
|
||||||
|
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
|
||||||
|
|
||||||
|
# Install rootless extras
|
||||||
|
curl -o \
|
||||||
|
/tmp/rootless.tgz -L \
|
||||||
|
"${STATIC_RELEASE_ROOTLESS_URL}"
|
||||||
|
tar -xf \
|
||||||
|
/tmp/rootless.tgz \
|
||||||
|
--strip-components 1 \
|
||||||
|
--directory /usr/local/bin/ \
|
||||||
|
'docker-rootless-extras/dockerd-rootless.sh' \
|
||||||
|
'docker-rootless-extras/rootlesskit' \
|
||||||
|
'docker-rootless-extras/rootlesskit-docker-proxy' \
|
||||||
|
'docker-rootless-extras/vpnkit'
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
if [ -z ${SKIP_CLEAN+x} ]; then
|
||||||
|
apt-get autoclean
|
||||||
|
rm -rf \
|
||||||
|
/var/lib/apt/lists/* \
|
||||||
|
/var/tmp/* \
|
||||||
|
/tmp/*
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Installing Docker"
|
|
||||||
curl -fsSL https://get.docker.com/rootless | sh
|
|
||||||
|
|
||||||
dockerd --version
|
|
||||||
docker --version
|
|
||||||
|
|
||||||
echo "Installing Docker Compose"
|
|
||||||
mkdir -p "${DOCKER_BIN}"/cli-plugins
|
|
||||||
COMPOSE_RELEASE=$(curl -sX GET "https://api.github.com/repos/docker/compose/releases/latest" \
|
|
||||||
| awk '/tag_name/{print $4;exit}' FS='[""]');
|
|
||||||
COMPOSE_OS=$(uname -s)
|
|
||||||
curl -L https://github.com/docker/compose/releases/download/"${COMPOSE_RELEASE}"/docker-compose-"${COMPOSE_OS,,}"-"$(uname -m)" -o "${DOCKER_BIN}"/cli-plugins/docker-compose
|
|
||||||
chmod +x "${DOCKER_BIN}"/cli-plugins/docker-compose
|
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
apt-get update && apt-get install -y \
|
|
||||||
ca-certificates \
|
|
||||||
curl \
|
|
||||||
dbus-user-session \
|
|
||||||
fuse-overlayfs \
|
|
||||||
kmod \
|
|
||||||
iptables \
|
|
||||||
openssh-client \
|
|
||||||
uidmap \
|
|
||||||
wget \
|
|
||||||
slirp4netns \
|
|
||||||
pigz \
|
|
||||||
xz-utils \
|
|
||||||
iproute2 \
|
|
||||||
xfsprogs \
|
|
||||||
btrfs-progs \
|
|
||||||
e2fsprogs && \
|
|
||||||
rm -rf /var/lib/apt/list/*
|
|
@ -45,7 +45,7 @@ Pin: release a=unstable
|
|||||||
Pin-Priority: 10
|
Pin-Priority: 10
|
||||||
EOF
|
EOF
|
||||||
apt-get update
|
apt-get update
|
||||||
apt-get install -y -t unstable firefox p11-kit-modules
|
apt-get install -o Dpkg::Options::="--force-confnew" -y -t unstable firefox p11-kit-modules
|
||||||
else
|
else
|
||||||
apt-mark unhold firefox || :
|
apt-mark unhold firefox || :
|
||||||
apt-get remove firefox
|
apt-get remove firefox
|
||||||
|
@ -8,8 +8,22 @@ if [ "${ARCH}" == "arm64" ] ; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Install terraform
|
||||||
curl -fsSL https://apt.releases.hashicorp.com/gpg | apt-key add -
|
curl -fsSL https://apt.releases.hashicorp.com/gpg | apt-key add -
|
||||||
apt-add-repository "deb [arch=$(dpkg --print-architecture)] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
|
echo \
|
||||||
|
"deb [arch=$(dpkg --print-architecture)] https://apt.releases.hashicorp.com $(lsb_release -cs) main" \
|
||||||
|
> /etc/apt/sources.list.d/hashicorp.list
|
||||||
apt-get update
|
apt-get update
|
||||||
apt-get install -y terraform
|
apt-get install -y \
|
||||||
|
terraform
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
chown -R 1000:0 $HOME
|
||||||
|
find /usr/share/ -name "icon-theme.cache" -exec rm -f {} \;
|
||||||
|
if [ -z ${SKIP_CLEAN+x} ]; then
|
||||||
|
apt-get autoclean
|
||||||
|
rm -rf \
|
||||||
|
/var/lib/apt/lists/* \
|
||||||
|
/var/tmp/* \
|
||||||
|
/tmp/*
|
||||||
|
fi
|
||||||
|
@ -48,9 +48,12 @@ Pin-Priority: 1001
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Desktop icon
|
# Desktop icon
|
||||||
if [[ "${DISTRO}" == @(fedora37|fedora38|fedora39|fedora40) ]]; then
|
if [[ "${DISTRO}" == @(fedora37|fedora38|fedora39) ]]; then
|
||||||
cp /usr/share/applications/mozilla-thunderbird.desktop $HOME/Desktop/
|
cp /usr/share/applications/mozilla-thunderbird.desktop $HOME/Desktop/
|
||||||
chmod +x $HOME/Desktop/mozilla-thunderbird.desktop
|
chmod +x $HOME/Desktop/mozilla-thunderbird.desktop
|
||||||
|
elif [[ "${DISTRO}" == "fedora40" ]]; then
|
||||||
|
cp /usr/share/applications/org.mozilla.thunderbird.desktop $HOME/Desktop/
|
||||||
|
chmod +x $HOME/Desktop/org.mozilla.thunderbird.desktop
|
||||||
else
|
else
|
||||||
cp /usr/share/applications/thunderbird.desktop $HOME/Desktop/
|
cp /usr/share/applications/thunderbird.desktop $HOME/Desktop/
|
||||||
chmod +x $HOME/Desktop/thunderbird.desktop
|
chmod +x $HOME/Desktop/thunderbird.desktop
|
||||||
|
Loading…
Reference in New Issue
Block a user