FROM nvidia/cuda:12.5.1-cudnn-devel-ubuntu20.04 # Environment settings ENV DEBIAN_FRONTEND=noninteractive \ TZ=Asia/Kolkata \ PYTHONUNBUFFERED=1 \ RESOLUTION=1280x720x24 \ VNC_PASSWORD=password # 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 \ ca-certificates \ sudo \ git git-lfs \ curl wget net-tools \ procps \ zip unzip \ htop \ vim nano \ bzip2 \ libx11-6 \ build-essential \ libsndfile-dev \ software-properties-common \ xfce4 xfce4-goodies \ x11vnc xvfb \ novnc websockify \ supervisor \ tigervnc-standalone-server \ tigervnc-common \ && rm -rf /var/lib/apt/lists/* # # Proper noVNC setup X11 and logs (fixed) # RUN mkdir -p /opt/novnc && \ # ln -s /usr/share/novnc/* /opt/novnc/ && \ # ln -s /usr/share/novnc/utils /opt/novnc/utils &&\ # mkdir -p /var/log/x11vnc && \ # touch /var/log/x11vnc.log && \ # chmod 755 /var/log/x11vnc && \ # chmod 644 /var/log/x11vnc.log && \ # chmod -R 755 /opt/novnc && \ # chmod +x /opt/novnc/utils/* # Proper noVNC setup X11 and logs (fixed) RUN mkdir -p /opt/novnc && \ ln -s /usr/share/novnc/* /opt/novnc/ && \ ln -s /usr/share/novnc/utils /opt/novnc/utils && \ \ # Fix X11 socket dir mkdir -p /tmp/.X11-unix && \ chmod 1777 /tmp/.X11-unix && \ \ # Fix logs for x11vnc mkdir -p /var/log/x11vnc && \ touch /var/log/x11vnc.log && \ chmod 755 /var/log/x11vnc && \ chmod 644 /var/log/x11vnc.log && \ \ # Fix novnc perms chmod -R 755 /opt/novnc && \ chmod +x /opt/novnc/utils/* # Clone repository RUN git clone https://github.com/browser-use/web-ui.git WORKDIR /web-ui RUN pwd && ls -la /web-ui COPY webui_with_vnc.py start.sh /web-ui/ # Create supervisor directory first RUN mkdir -p /etc/supervisor/conf.d # Copy your custom supervisor config COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf # COPY /web-ui/src/utils/config.py /web-ui/src/utils/config_1.py RUN ls -la /web-ui/src/utils/ COPY config.py /web-ui/src/utils/config.py # 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 $HOME/.vnc\ && chmod -R 777 $HOME RUN touch ~/.vnc/x11vnc.log # 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 # Fix permissions for X11 and logs (fixed) RUN chown user:user /var/log/x11vnc /var/log/x11vnc.log || true # Set up supervisor and permissions RUN mkdir -p /etc/supervisor/conf.d && \ mkdir -p /var/log/supervisor && \ mkdir -p /home/user/.vnc && \ chown -R user:user /home/user # Final permission fixes RUN chmod -R 755 /web-ui && \ chown -R user:user /var/log/supervisor || true # Install dependencies into Conda env RUN /home/user/miniconda/envs/webui/bin/pip install --no-cache-dir --upgrade pip uv==0.4.17 playwright gradio python-dotenv && \ /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"] # Start supervisor # CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"] CMD ["/web-ui/start.sh"]