| COPY / / # buildkit |
| LABEL org.opencontainers.image.authors=Kasm Tech "info@kasmweb.com" |
| LABEL com.kasmweb.image=true |
| LABEL com.kasmweb.gpu_acceleration_egl=nvidia |
| ARG DISTRO=ubuntu |
| ARG EXTRA_SH=noop.sh |
| ARG LANG=en_US.UTF-8 |
| ARG LANGUAGE=en_US:en |
| ARG LC_ALL=en_US.UTF-8 |
| ARG START_PULSEAUDIO=1 |
| ARG START_XFCE4=1 |
| ARG TZ=Etc/UTC |
| ENV AUDIO_PORT=4901 DEBIAN_FRONTEND=noninteractive DISPLAY=:1 DISTRO=ubuntu GOMP_SPINCOUNT=0 HOME=/home/kasm-user INST_SCRIPTS=/dockerstartup/install KASMVNC_AUTO_RECOVER=true KASM_VNC_PATH=/usr/share/kasmvnc LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 LD_LIBRARY_PATH=/opt/libjpeg-turbo/lib64/:/usr/local/lib/:/usr/lib/x86_64-linux-gnu:/usr/lib/i386-linux-gnu:/usr/local/nvidia/lib:/usr/local/nvidia/lib64 MAX_FRAME_RATE=24 NO_VNC_PORT=6901 OMP_WAIT_POLICY=PASSIVE PULSE_RUNTIME_PATH=/var/run/pulse SDL_GAMECONTROLLERCONFIG=030000005e040000be02000014010000,XInput Controller,platform:Linux,a:b0,b:b1,x:b2,y:b3,back:b8,guide:b16,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:b12,dpdown:b13,dpleft:b14,dpright:b15,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7 SHELL=/bin/bash START_PULSEAUDIO=1 STARTUPDIR=/dockerstartup START_XFCE4=1 TERM=xterm VNC_COL_DEPTH=24 VNCOPTIONS=-PreferBandwidth -DynamicQualityMin=4 -DynamicQualityMax=7 -DLP_ClipDelay=0 VNC_PORT=5901 VNC_PORT=5901 VNC_PW=vncpassword VNC_RESOLUTION=1280x1024 VNC_RESOLUTION=1280x720 VNC_VIEW_ONLY_PW=vncviewonlypassword TZ=Etc/UTC |
| EXPOSE [4901/tcp 6901/tcp 5901/tcp] |
| WORKDIR /home/kasm-user |
| USER 1000 |
| ENTRYPOINT ["/dockerstartup/kasm_default_profile.sh" "/dockerstartup/vnc_startup.sh" "/dockerstartup/kasm_startup.sh"] |
| CMD ["--wait"] |
| USER root |
| ENV HOME=/home/kasm-default-profile |
| ENV STARTUPDIR=/dockerstartup |
| ENV INST_SCRIPTS=/dockerstartup/install |
| WORKDIR /home/kasm-default-profile |
| ENV DEBIAN_FRONTEND=noninteractive |
| RUN /bin/sh -c dpkg --add-architecture i386 && apt-get update && apt-get install -y --no-install-recommends curl ca-certificates gnupg libgl1-mesa-dri libglu1-mesa mesa-utils libfuse2t64 libgtk-3-0t64 libwebkit2gtk-4.1-0 xdg-utils desktop-file-utils fonts-dejavu p7zip-full unzip file cabextract xz-utils wine wine64 wine32 winetricks zenity xvfb libodbc2 libodbc2:i386 && rm -rf /var/lib/apt/lists/* # buildkit |
| RUN /bin/sh -c curl -fsSL -o /tmp/firefox.tar.xz "https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=de" && tar -xJf /tmp/firefox.tar.xz -C /opt/ && ln -sf /opt/firefox/firefox /usr/local/bin/firefox && rm -f /tmp/firefox.tar.xz && printf '[Desktop Entry]\nName=Firefox\nComment=Web Browser\nExec=/usr/local/bin/firefox %%u\nIcon=/opt/firefox/browser/chrome/icons/default/default128.png\nType=Application\nCategories=Network;WebBrowser;\nTerminal=false\nStartupNotify=true\n' > /usr/share/applications/firefox.desktop # buildkit |
| ENV WINEPREFIX=/home/kasm-default-profile/.wine |
| ENV WINEARCH=win64 |
| RUN /bin/sh -c mkdir -p "$WINEPREFIX" # buildkit |
| RUN /bin/sh -c xvfb-run -a wineboot --init || true # buildkit |
| RUN /bin/sh -c xvfb-run -a winetricks -q corefonts && rm -rf /root/.cache/winetricks # buildkit |
| ARG UCENTER_URL=https://content.u-blox.com/sites/default/files/2025-06/u-center_v25.06_installer.zip |
| RUN |1 UCENTER_URL=https://content.u-blox.com/sites/default/files/2025-06/u-center_v25.06_installer.zip /bin/sh -c curl -fsSL -o /tmp/u-center.zip "$UCENTER_URL" && mkdir -p /tmp/u-center && unzip -q /tmp/u-center.zip -d /tmp/u-center && find /tmp/u-center -maxdepth 2 -type f \( -iname "*.exe" -o -iname "*setup*" \) -print0 | head -z -n 1 > /tmp/ucenter_exe.txt && UCENTER_EXE=$(tr -d '\0' < /tmp/ucenter_exe.txt) && echo "Installer found: $UCENTER_EXE" && xvfb-run -a wine "$UCENTER_EXE" /S && rm -rf /tmp/u-center /tmp/u-center.zip /tmp/ucenter_exe.txt # buildkit |
| RUN |1 UCENTER_URL=https://content.u-blox.com/sites/default/files/2025-06/u-center_v25.06_installer.zip /bin/sh -c rm -f "$WINEPREFIX/wineserver" && rm -rf /tmp/wine-* /tmp/.wine-* # buildkit |
| RUN |1 UCENTER_URL=https://content.u-blox.com/sites/default/files/2025-06/u-center_v25.06_installer.zip /bin/sh -c cat > /usr/local/bin/start-ucenter <<'EOF'
#!/bin/bash
set -e
export WINEPREFIX=/home/kasm-user/.wine
export WINEARCH=win64
# Falls eine veraltete wineserver-Referenz auf ein nicht erreichbares
# /tmp/wine-* Verzeichnis zeigt, entfernen wir sie, damit Wine einen neuen
# Server startet.
if [ -f "$WINEPREFIX/wineserver" ]; then
server_dir=$(cat "$WINEPREFIX/wineserver" 2>/dev/null || true)
if [ -n "$server_dir" ] && [ ! -x "/tmp/$server_dir" ]; then
rm -f "$WINEPREFIX/wineserver"
fi
fi
exec wine "C:\\Program Files\\u-blox\\u-center_v25.06\\u-center.exe" "$@"
EOF # buildkit |
| RUN |1 UCENTER_URL=https://content.u-blox.com/sites/default/files/2025-06/u-center_v25.06_installer.zip /bin/sh -c chmod +x /usr/local/bin/start-ucenter # buildkit |
| RUN |1 UCENTER_URL=https://content.u-blox.com/sites/default/files/2025-06/u-center_v25.06_installer.zip /bin/sh -c mkdir -p $HOME/Desktop && printf '[Desktop Entry]\nType=Application\nName=u-center\nExec=/usr/local/bin/start-ucenter\nIcon=applications-engineering\nCategories=Engineering;GNSS;\nTerminal=false\nStartupNotify=true\n' > /usr/share/applications/u-center.desktop && cp /usr/share/applications/u-center.desktop $HOME/Desktop/ && cp /usr/share/applications/firefox.desktop $HOME/Desktop/ || true && chmod +x $HOME/Desktop/*.desktop || true # buildkit |
| ENV LIBGL_ALWAYS_SOFTWARE=1 GALLIUM_DRIVER=llvmpipe __GLX_VENDOR_LIBRARY_NAME=mesa MESA_GL_VERSION_OVERRIDE=4.5 WINEPREFIX=/home/kasm-user/.wine WINEARCH=win64 |
| RUN |1 UCENTER_URL=https://content.u-blox.com/sites/default/files/2025-06/u-center_v25.06_installer.zip /bin/sh -c chown -R 1000:0 $HOME # buildkit |
| ENV HOME=/home/kasm-user |
| WORKDIR /home/kasm-user |
| RUN |1 UCENTER_URL=https://content.u-blox.com/sites/default/files/2025-06/u-center_v25.06_installer.zip /bin/sh -c mkdir -p $HOME && chown -R 1000:0 $HOME # buildkit |
| USER 1000 |