# Use Ubuntu 22.04 as the base image FROM ubuntu:22.04 # Set environment variables ENV DEBIAN_FRONTEND=noninteractive ENV USER=appuser ENV HOME=/home/$USER ENV DISPLAY=:1 ENV VNC_PORT=5901 ENV NOVNC_PORT=7860 ENV X11VNC_LOG=/tmp/x11vnc.log # Install dependencies RUN apt-get update && apt-get install -y \ wget \ gnupg \ curl \ xvfb \ fluxbox \ x11vnc \ novnc \ && rm -rf /var/lib/apt/lists/* # 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 \ && rm -rf /var/lib/apt/lists/* # Install TeamViewer RUN wget https://download.teamviewer.com/download/linux/teamviewer_amd64.deb \ && apt-get update \ && apt-get install -y ./teamviewer_amd64.deb \ && rm teamviewer_amd64.deb \ && rm -rf /var/lib/apt/lists/* # Create non-root user RUN useradd -m -s /bin/bash $USER # Fix permissions for X11 RUN mkdir -p /tmp/.X11-unix \ && chmod 1777 /tmp/.X11-unix \ && chown $USER:$USER /tmp/.X11-unix # Fluxbox config RUN mkdir -p $HOME/.fluxbox COPY fluxbox_menu $HOME/.fluxbox/menu RUN chown -R $USER:$USER $HOME/.fluxbox # Setup noVNC RUN ln -s /usr/share/novnc/vnc.html /usr/share/novnc/index.html # Copy startup script RUN mkdir -p $HOME/scripts COPY start.sh $HOME/scripts/start.sh RUN chmod +x $HOME/scripts/start.sh # Switch user USER $USER WORKDIR $HOME # Expose noVNC port EXPOSE $NOVNC_PORT # Start script CMD ["/home/appuser/scripts/start.sh"]