# Use Ubuntu 22.04 as base FROM ubuntu:22.04 # Prevent interactive prompts during installation ENV DEBIAN_FRONTEND=noninteractive # Update and install basic dependencies RUN apt-get update && apt-get install -y \ curl \ git \ xvfb \ x11vnc \ fluxbox \ websockify \ nginx \ python3-pip \ libnss3 \ libatk1.0-0 \ libatk-bridge2.0-0 \ libcups2 \ libdrm2 \ libgtk-3-0 \ libgbm1 \ libasound2 \ x11-xserver-utils \ wget \ ca-certificates \ gnupg \ build-essential \ && rm -rf /var/lib/apt/lists/* # Install FastAPI and Uvicorn for health/info API RUN pip3 install fastapi uvicorn # Install Node.js 20 RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \ && apt-get install -y nodejs # Setup noVNC RUN mkdir -p /opt/noVNC && \ git clone https://github.com/novnc/noVNC.git /opt/noVNC && \ git clone https://github.com/novnc/websockify /opt/noVNC/utils/websockify && \ ln -s /opt/noVNC/vnc.html /opt/noVNC/index.html # Create a non-root user RUN useradd -m -u 1000 user ENV HOME=/home/user WORKDIR /home/user # Create vault directory RUN mkdir -p /app/vault && chown user:user /app/vault && chmod 777 /app/vault ENV VAULT_ROOT=/app/vault # Clone and build the application from the official repository # This avoids git storage and binary file issues in the Hugging Face Space repository RUN git clone https://github.com/hooosberg/WitNote.git /home/user/app-source WORKDIR /home/user/app-source RUN npm install # Build the Linux package RUN npm run build:linux # Install the built .deb package as root USER root # Find the .deb file and install it RUN apt-get update && apt-get install -y ./release/*.deb || apt-get install -f -y # Copy configuration and startup files from the build context WORKDIR /home/user COPY --chown=user:user api_server.py . COPY --chown=user:user nginx.conf . COPY --chown=user:user start.sh . RUN chmod +x start.sh # HF Spaces requirements USER user ENV DISPLAY=:99 EXPOSE 7860 # Launch using the startup script CMD ["/home/user/start.sh"]