Spaces:
Paused
Paused
Add HF persistent storage for code-server data, extensions, and settings
Browse files- Dockerfile +10 -3
- README.md +1 -0
- start_server.sh +30 -3
Dockerfile
CHANGED
|
@@ -45,14 +45,18 @@ RUN useradd -m -s /bin/zsh coder && \
|
|
| 45 |
echo 'coder ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
|
| 46 |
|
| 47 |
# Create code-server configuration directory
|
| 48 |
-
RUN mkdir -p /home/coder/.local/share/code-server/User
|
| 49 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 50 |
echo '{ \
|
| 51 |
"workbench.colorTheme": "Default Dark Modern", \
|
| 52 |
"telemetry.enableTelemetry": true, \
|
| 53 |
"telemetry.enableCrashReporter": true \
|
| 54 |
}' > /home/coder/.local/share/code-server/User/settings.json && \
|
| 55 |
-
chown -R coder:coder /home/coder/.local/share/code-server
|
| 56 |
|
| 57 |
# Install Python extension for code-server
|
| 58 |
RUN sudo -u coder code-server --install-extension ms-python.python
|
|
@@ -66,6 +70,9 @@ RUN chmod +x /home/coder/start_server.sh
|
|
| 66 |
ENV HOME=/home/coder \
|
| 67 |
PATH=/home/coder/.local/bin:$PATH
|
| 68 |
|
|
|
|
|
|
|
|
|
|
| 69 |
WORKDIR /home/coder
|
| 70 |
|
| 71 |
EXPOSE 7860
|
|
|
|
| 45 |
echo 'coder ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
|
| 46 |
|
| 47 |
# Create code-server configuration directory
|
| 48 |
+
RUN mkdir -p /home/coder/.local/share/code-server/User \
|
| 49 |
+
/home/coder/.local/share/code-server/extensions \
|
| 50 |
+
/data/files \
|
| 51 |
+
/data/projects \
|
| 52 |
+
/data/coder-config && \
|
| 53 |
+
chmod -R 777 /home/coder /data && \
|
| 54 |
echo '{ \
|
| 55 |
"workbench.colorTheme": "Default Dark Modern", \
|
| 56 |
"telemetry.enableTelemetry": true, \
|
| 57 |
"telemetry.enableCrashReporter": true \
|
| 58 |
}' > /home/coder/.local/share/code-server/User/settings.json && \
|
| 59 |
+
chown -R coder:coder /home/coder/.local/share/code-server /data
|
| 60 |
|
| 61 |
# Install Python extension for code-server
|
| 62 |
RUN sudo -u coder code-server --install-extension ms-python.python
|
|
|
|
| 70 |
ENV HOME=/home/coder \
|
| 71 |
PATH=/home/coder/.local/bin:$PATH
|
| 72 |
|
| 73 |
+
# /data adalah persistent storage dari HF Spaces
|
| 74 |
+
VOLUME ["/data"]
|
| 75 |
+
|
| 76 |
WORKDIR /home/coder
|
| 77 |
|
| 78 |
EXPOSE 7860
|
README.md
CHANGED
|
@@ -6,6 +6,7 @@ colorTo: purple
|
|
| 6 |
sdk: docker
|
| 7 |
pinned: false
|
| 8 |
license: apache-2.0
|
|
|
|
| 9 |
---
|
| 10 |
|
| 11 |
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
|
| 6 |
sdk: docker
|
| 7 |
pinned: false
|
| 8 |
license: apache-2.0
|
| 9 |
+
storage: small
|
| 10 |
---
|
| 11 |
|
| 12 |
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
start_server.sh
CHANGED
|
@@ -8,8 +8,34 @@ if [ -n "$RCLONE_CONF" ]; then
|
|
| 8 |
echo "$RCLONE_CONF" > ~/.config/rclone/rclone.conf
|
| 9 |
fi
|
| 10 |
|
| 11 |
-
echo "======================
|
|
|
|
| 12 |
mkdir -p /data/files
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
/usr/local/bin/dufs /data/files \
|
| 14 |
--allow-upload \
|
| 15 |
--allow-delete \
|
|
@@ -24,7 +50,8 @@ sleep 1
|
|
| 24 |
|
| 25 |
echo "====================== Starting code-server (port 8443) ========================"
|
| 26 |
sudo -E -u coder code-server \
|
| 27 |
-
--bind-addr 127.0.0.1:8443
|
|
|
|
| 28 |
|
| 29 |
sleep 2
|
| 30 |
|
|
@@ -32,4 +59,4 @@ echo "====================== Starting nginx (port 7860) ========================
|
|
| 32 |
# Remove default nginx site configs
|
| 33 |
rm -f /etc/nginx/sites-enabled/default /etc/nginx/sites-enabled/* /etc/nginx/conf.d/default.conf 2>/dev/null || true
|
| 34 |
|
| 35 |
-
nginx -g "daemon off;"
|
|
|
|
| 8 |
echo "$RCLONE_CONF" > ~/.config/rclone/rclone.conf
|
| 9 |
fi
|
| 10 |
|
| 11 |
+
echo "====================== Setting up persistent storage ========================"
|
| 12 |
+
# Buat folder persistent di /data
|
| 13 |
mkdir -p /data/files
|
| 14 |
+
mkdir -p /data/projects
|
| 15 |
+
mkdir -p /data/coder-config/extensions
|
| 16 |
+
mkdir -p /data/coder-config/User
|
| 17 |
+
|
| 18 |
+
# Symlink config dan extensions code-server ke /data (persistent)
|
| 19 |
+
if [ ! -L /home/coder/.local/share/code-server/extensions ]; then
|
| 20 |
+
rm -rf /home/coder/.local/share/code-server/extensions
|
| 21 |
+
ln -sf /data/coder-config/extensions /home/coder/.local/share/code-server/extensions
|
| 22 |
+
fi
|
| 23 |
+
|
| 24 |
+
# Simpan settings user ke /data jika belum ada
|
| 25 |
+
if [ ! -f /data/coder-config/User/settings.json ]; then
|
| 26 |
+
cp /home/coder/.local/share/code-server/User/settings.json /data/coder-config/User/settings.json 2>/dev/null || \
|
| 27 |
+
echo '{"workbench.colorTheme": "Default Dark Modern"}' > /data/coder-config/User/settings.json
|
| 28 |
+
fi
|
| 29 |
+
|
| 30 |
+
# Symlink User settings ke /data
|
| 31 |
+
if [ ! -L /home/coder/.local/share/code-server/User ]; then
|
| 32 |
+
rm -rf /home/coder/.local/share/code-server/User
|
| 33 |
+
ln -sf /data/coder-config/User /home/coder/.local/share/code-server/User
|
| 34 |
+
fi
|
| 35 |
+
|
| 36 |
+
chown -R coder:coder /data 2>/dev/null || true
|
| 37 |
+
|
| 38 |
+
echo "====================== Starting dufs (port 5000) ========================"
|
| 39 |
/usr/local/bin/dufs /data/files \
|
| 40 |
--allow-upload \
|
| 41 |
--allow-delete \
|
|
|
|
| 50 |
|
| 51 |
echo "====================== Starting code-server (port 8443) ========================"
|
| 52 |
sudo -E -u coder code-server \
|
| 53 |
+
--bind-addr 127.0.0.1:8443 \
|
| 54 |
+
--user-data-dir /data/coder-config &
|
| 55 |
|
| 56 |
sleep 2
|
| 57 |
|
|
|
|
| 59 |
# Remove default nginx site configs
|
| 60 |
rm -f /etc/nginx/sites-enabled/default /etc/nginx/sites-enabled/* /etc/nginx/conf.d/default.conf 2>/dev/null || true
|
| 61 |
|
| 62 |
+
nginx -g "daemon off;"
|