FROM ubuntu:22.04 # Set environment variables ENV DEBIAN_FRONTEND=noninteractive ENV HOME=/home/user ENV PATH=/home/user/.local/bin:$PATH # 1. Install System Dependencies RUN apt-get update && apt-get install -y \ python3 \ python3-pip \ curl \ wget \ gnupg \ xz-utils \ software-properties-common \ libgbm1 \ libnss3 \ libasound2 \ dbus-x11 \ matchbox-window-manager \ x11-xserver-utils \ x11-utils \ xauth \ x11-xkb-utils \ xkb-data \ libxfont2 \ libxrandr2 \ libxcursor1 \ libxi6 \ libxinerama1 \ libxkbfile1 \ libxtst6 \ ssl-cert \ libyaml-tiny-perl \ libhash-merge-simple-perl \ liblist-moreutils-perl \ libtry-tiny-perl \ libdatetime-timezone-perl # 2. Fix 'libswitch-perl' Dependency (The Bulletproof Way) # We add the focal repo temporarily to get the missing library RUN echo "deb http://archive.ubuntu.com/ubuntu focal universe" >> /etc/apt/sources.list && \ apt-get update && \ apt-get install -y libswitch-perl && \ sed -i '/focal/d' /etc/apt/sources.list && \ apt-get update # 3. Install KasmVNC v1.3.1 RUN wget https://github.com/kasmtech/KasmVNC/releases/download/v1.3.1/kasmvncserver_jammy_1.3.1_amd64.deb && \ apt-get install -y ./kasmvncserver_*.deb && \ rm kasmvncserver_*.deb # 4. Install Brave Browser RUN 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 [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-get update && apt-get install -y brave-browser # 5. User Setup RUN useradd -m -u 1000 user USER user WORKDIR $HOME # 6. Configure KasmVNC (Custom Landing Page) RUN mkdir -p $HOME/.vnc/www RUN echo '