FROM nvidia/cuda:12.5.1-cudnn-devel-ubuntu20.04 # Environment settings ENV DEBIAN_FRONTEND=noninteractive \ TZ=Asia/Kolkata \ PYTHONUNBUFFERED=1 # Install required OS packages (minimal set) RUN rm -f /etc/apt/sources.list.d/*.list && \ apt-get update && apt-get install -y --no-install-recommends \ curl \ ca-certificates \ sudo \ git \ wget \ procps \ git-lfs \ zip \ unzip \ htop \ vim \ nano \ bzip2 \ libx11-6 \ build-essential \ libsndfile-dev \ software-properties-common \ xfce4 xfce4-goodies \ x11vnc \ novnc websockify \ && rm -rf /var/lib/apt/lists/* # Clone repository RUN git clone https://github.com/browser-use/web-ui.git /web-ui WORKDIR /web-ui # Create a non-root user and switch to it RUN adduser --disabled-password --gecos '' --shell /bin/bash user \ && chown -R user:user /web-ui RUN echo "user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/90-user USER user # All users can use /home/user as their home directory ENV HOME=/home/user RUN mkdir $HOME/.cache $HOME/.config \ && chmod -R 777 $HOME # Set up the Conda environment ENV CONDA_AUTO_UPDATE_CONDA=false \ PATH=$HOME/miniconda/bin:$PATH RUN curl -sLo ~/miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh \ && chmod +x ~/miniconda.sh \ && ~/miniconda.sh -b -p ~/miniconda \ && rm ~/miniconda.sh \ && conda clean -ya # Create and activate Conda environment with Python 3.11 RUN conda create -y -n webui python=3.11 && \ echo "conda activate webui" >> ~/.bashrc # Install dependencies into Conda env RUN /home/user/miniconda/envs/webui/bin/pip install --no-cache-dir --upgrade pip uv==0.4.17 playwright && \ /home/user/miniconda/envs/webui/bin/pip install --no-cache-dir -r requirements.txt && \ /home/user/miniconda/envs/webui/bin/playwright install --with-deps chromium # Expose application port EXPOSE 7860 # Fix ownership and permissions RUN chown -R user:user /web-ui && chmod -R 755 /web-ui # Use Conda environment Python explicitly # CMD ["/home/user/miniconda/envs/webui/bin/python", "webui.py", "--ip", "0.0.0.0", "--port", "7860"] CMD bash -c "\ x11vnc -forever -nopw -display :0 & \ websockify --web=/usr/share/novnc/ 7860 localhost:5900 & \ /home/user/miniconda/envs/webui/bin/python webui.py --ip 0.0.0.0 --port 7860 \ "