FROM kasmweb/core-ubuntu-jammy:1.17.0
USER root

ENV HOME=/home/kasm-default-profile
ENV STARTUPDIR=/dockerstartup
ENV INST_SCRIPTS=$STARTUPDIR/install
WORKDIR $HOME

######### Customize Container Here ###########

# Installing python, pip, and libraries (but don't change default yet)
RUN apt-get update && \
    apt install -y wget build-essential libncursesw5-dev libssl-dev \
    libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev && \
    add-apt-repository ppa:deadsnakes/ppa && \
    apt-get update && \
    apt install -y python3.12 python3.12-dev python3.12-tk \
    gnome-screenshot wmctrl ffmpeg socat xclip curl && \
    apt-get clean && rm -rf /var/lib/apt/lists/*

# Install Firefox (do this BEFORE changing default Python, as add-apt-repository needs system Python)
ENV DEBIAN_FRONTEND=noninteractive \
    INST_DIR=$STARTUPDIR/install
COPY ./src/ $INST_DIR
RUN bash ${INST_DIR}/ubuntu/install/firefox/install_firefox.sh

# Now set Python 3.12 as the default python3
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1 && \
    update-alternatives --set python3 /usr/bin/python3.12

# Install pip for Python 3.12
RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.12

# Disable SSL requirement
RUN sed -i 's/require_ssl: true/require_ssl: false/g' /usr/share/kasmvnc/kasmvnc_defaults.yaml
RUN sed -i 's/-sslOnly//g' /dockerstartup/vnc_startup.sh

# Enable sudo support for kasm-user
RUN echo "kasm-user:password" | chpasswd
RUN usermod -aG sudo kasm-user
RUN echo "kasm-user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

######### End Customizations ###########

RUN chown 1000:0 $HOME
RUN $STARTUPDIR/set_user_permission.sh $HOME
ENV HOME=/home/kasm-user
WORKDIR $HOME
RUN mkdir -p $HOME && chown -R 1000:0 $HOME

# Install UV package manager
RUN python3.12 -m pip install uv

# Install cua-computer-server and cua-agent
RUN uv pip install --system cua-computer-server "cua-agent[all]"

# Install playwright and Firefox dependencies
RUN uv pip install --system playwright && \
    python3.12 -m playwright install --with-deps firefox

# Clean up uv cache to avoid issues and reduce size
RUN rm -rf /home/kasm-user/.cache/uv /root/.cache/uv

# Fix ownership of remaining cache files
RUN chown -R 1000:0 /home/kasm-user/.cache 2>/dev/null || true

# Running the python script on startup
RUN echo -e "#!/bin/bash\nsudo uv pip install --upgrade --system cua-computer-server \"cua-agent[all]\"\n/usr/bin/python3 -m computer_server" > $STARTUPDIR/custom_startup.sh \
    && chmod +x $STARTUPDIR/custom_startup.sh

USER 1000