# ============================================================ # Hugging Face Space — Linux Desktop (XFCE) via noVNC # Base: Ubuntu 24.04 + XFCE4 + Xvnc direct + noVNC # Access: http://your-space.hf.space (port 7860) # ============================================================ FROM ubuntu:24.04 ENV DEBIAN_FRONTEND=noninteractive ENV HOME=/home/georgesnoe ENV DISPLAY=:1 # ── System dependencies ────────────────────────────────────── RUN apt-get update && apt-get install -y \ # Desktop environment xfce4 \ xfce4-terminal \ xfce4-taskmanager \ xfce4-screenshooter \ thunar \ # VNC (Xvnc binary is in tigervnc-standalone-server) tigervnc-standalone-server \ tigervnc-common \ # noVNC novnc \ websockify \ # Browser firefox \ # Utilities wget \ curl \ git \ unzip \ sudo \ dbus-x11 \ xfonts-base \ xfonts-100dpi \ xfonts-75dpi \ fonts-liberation \ fonts-dejavu-core \ && curl -fsSL https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb \ -o /tmp/cloudflared.deb \ && dpkg -i /tmp/cloudflared.deb \ && rm /tmp/cloudflared.deb \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # ── Create non-root user ────────────────────────────────────── RUN useradd -m -s /bin/bash georgesnoe \ && echo "georgesnoe:georgesnoe" | chpasswd \ && usermod -aG sudo georgesnoe \ && echo "georgesnoe ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers # ── VNC dirs & xstartup ─────────────────────────────────────── RUN mkdir -p /home/georgesnoe/.vnc COPY xstartup /home/georgesnoe/.vnc/xstartup RUN chmod +x /home/georgesnoe/.vnc/xstartup \ && chown -R georgesnoe:georgesnoe /home/georgesnoe/.vnc # ── noVNC symlink ───────────────────────────────────────────── RUN ln -sf /usr/share/novnc/vnc.html /usr/share/novnc/index.html # ── Entrypoint ──────────────────────────────────────────────── COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh # ── Expose noVNC port (HF requires 7860) ────────────────────── EXPOSE 7860 CMD ["/entrypoint.sh"]