Spaces:
Paused
Paused
File size: 4,029 Bytes
5426391 e323c1f 5426391 e3dd10f 89f3f85 5426391 89f3f85 5426391 e3dd10f 5426391 e3dd10f e323c1f e3dd10f 5426391 e3dd10f 5426391 89f3f85 5426391 98de71f 5426391 e3dd10f 89f3f85 98de71f 89f3f85 e323c1f e3dd10f 89f3f85 98de71f 89f3f85 98de71f e3dd10f 89f3f85 98de71f e323c1f 98de71f 89f3f85 e3dd10f 89f3f85 a562516 89f3f85 e3dd10f 89f3f85 e323c1f e3dd10f 89f3f85 e3dd10f 89f3f85 a562516 89f3f85 e323c1f 89f3f85 e3dd10f 89f3f85 e3dd10f 89f3f85 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | FROM ubuntu:24.04
ENV DEBIAN_FRONTEND=noninteractive
ENV DISPLAY=:1
ENV HOME=/tmp/godot-home
ENV GODOT_PROJECTS=/data/GodotProjects
# ============================================================
# Install desktop, VNC, noVNC and libraries
# ============================================================
RUN apt-get update && apt-get install -y \
xfce4 \
xfce4-goodies \
xfce4-terminal \
tigervnc-standalone-server \
novnc \
websockify \
dbus-x11 \
wget \
curl \
unzip \
git \
git-lfs \
ca-certificates \
mesa-utils \
libgl1-mesa-dri \
libglx-mesa0 \
libegl1 \
libx11-6 \
libxcursor1 \
libxinerama1 \
libxrandr2 \
libxi6 \
libxrender1 \
libxfixes3 \
libfontconfig1 \
libfreetype6 \
libasound2t64 \
libpulse0 \
xterm \
&& rm -rf /var/lib/apt/lists/*
# ============================================================
# Install Godot
# ============================================================
RUN cd /tmp && \
wget -O godot.zip \
https://github.com/godotengine/godot/releases/download/4.7.1-stable/Godot_v4.7.1-stable_linux.x86_64.zip && \
unzip godot.zip && \
mv Godot_v4.7.1-stable_linux.x86_64 /usr/local/bin/godot && \
chmod +x /usr/local/bin/godot && \
rm -f godot.zip
# ============================================================
# Create XFCE startup script
# ============================================================
RUN printf '%s\n' \
'#!/bin/sh' \
'unset SESSION_MANAGER' \
'unset DBUS_SESSION_BUS_ADDRESS' \
'export XDG_CURRENT_DESKTOP=XFCE' \
'export XDG_SESSION_DESKTOP=xfce' \
'export XDG_CONFIG_DIRS=/etc/xdg/xdg-xfce:/etc/xdg' \
'export XDG_DATA_DIRS=/usr/share/xfce4:/usr/local/share:/usr/share' \
'dbus-launch --exit-with-session startxfce4' \
> /usr/local/bin/start-xfce.sh \
&& chmod +x /usr/local/bin/start-xfce.sh
# ============================================================
# Run as Hugging Face UID 1000
# ============================================================
USER 1000
WORKDIR /tmp
EXPOSE 7860
# ============================================================
# Start VNC + XFCE + noVNC + Godot
# ============================================================
CMD ["bash", "-c", "\
set -e; \
\
echo '========================================'; \
echo ' GODOT REMOTE EDITOR'; \
echo '========================================'; \
\
if [ -z \"$VNC_PASSWORD\" ]; then \
echo 'ERROR: VNC_PASSWORD is not configured.'; \
echo 'Create a Space Secret named VNC_PASSWORD.'; \
exit 1; \
fi; \
\
if [ ! -d /data ]; then \
echo 'ERROR: /data Storage Bucket is not mounted.'; \
exit 1; \
fi; \
\
mkdir -p /tmp/godot-home; \
mkdir -p /tmp/godot-home/.config; \
mkdir -p /tmp/godot-home/.vnc; \
mkdir -p /data/GodotProjects; \
\
export HOME=/tmp/godot-home; \
\
VNC_DIR=$(mktemp -d /tmp/godot-vnc-XXXXXX); \
\
echo 'Creating VNC password...'; \
printf '%s\\n' \"$VNC_PASSWORD\" | vncpasswd -f > \"$VNC_DIR/passwd\"; \
chmod 600 \"$VNC_DIR/passwd\"; \
\
echo 'Cleaning old display files...'; \
vncserver -kill :1 >/dev/null 2>&1 || true; \
rm -f /tmp/.X1-lock; \
rm -f /tmp/.X11-unix/X1; \
mkdir -p /tmp/.X11-unix; \
\
echo 'Starting VNC + XFCE desktop...'; \
vncserver :1 \
-geometry 1280x720 \
-depth 24 \
-localhost no \
-rfbauth \"$VNC_DIR/passwd\" \
-xstartup /usr/local/bin/start-xfce.sh; \
\
sleep 6; \
\
echo 'Starting noVNC...'; \
websockify \
--web=/usr/share/novnc \
7860 \
localhost:5901 & \
\
sleep 4; \
\
echo 'Starting Godot Editor...'; \
echo 'Persistent projects: /data/GodotProjects'; \
\
godot \
--editor \
--path /data/GodotProjects \
>/tmp/godot.log 2>&1 & \
\
echo '========================================'; \
echo ' GODOT IS RUNNING'; \
echo '========================================'; \
echo 'Browser port: 7860'; \
echo 'Projects: /data/GodotProjects'; \
echo '========================================'; \
\
wait \
"] |