abc1181 commited on
Commit
0dabb03
Β·
verified Β·
1 Parent(s): cfa733d

Create start.sh

Browse files
Files changed (1) hide show
  1. start.sh +86 -0
start.sh ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ LOG() { echo "[$(date '+%H:%M:%S')] $*"; }
4
+
5
+ # ── Storage ──────────────────────────────────────────────────────
6
+ if [ -d "/data" ]; then DATA_DIR="/data"
7
+ else DATA_DIR="/root/.local/codeserver-data"; LOG "⚠️ No /data bucket"; fi
8
+
9
+ WORKSPACE="${DATA_DIR}/workspace"
10
+ CS_USER_DATA="${DATA_DIR}/vscode-user-data"
11
+ CS_LOGS="${DATA_DIR}/logs"
12
+ CS_EXTENSIONS_DIR="/root/.local/share/code-server/extensions"
13
+
14
+ mkdir -p "$WORKSPACE" "$CS_USER_DATA/User" "$CS_LOGS"
15
+ mkdir -p /tmp/nginx-client-body /tmp/nginx-proxy
16
+
17
+ # ── VS Code settings ─────────────────────────────────────────────
18
+ SETTINGS="$CS_USER_DATA/User/settings.json"
19
+ [ ! -f "$SETTINGS" ] && tee "$SETTINGS" > /dev/null << 'EOF'
20
+ {
21
+ "workbench.colorTheme": "Default Dark+",
22
+ "workbench.iconTheme": "vs-seti",
23
+ "editor.fontSize": 14, "editor.fontFamily": "monospace",
24
+ "editor.tabSize": 2, "editor.formatOnSave": true,
25
+ "editor.wordWrap": "on", "editor.minimap.enabled": true,
26
+ "editor.bracketPairColorization.enabled": true,
27
+ "terminal.integrated.fontSize": 13,
28
+ "terminal.integrated.scrollback": 5000,
29
+ "files.autoSave": "afterDelay", "files.autoSaveDelay": 1000,
30
+ "workbench.startupEditor": "none",
31
+ "git.autofetch": true, "extensions.autoUpdate": false,
32
+ "telemetry.telemetryLevel": "off", "update.mode": "none"
33
+ }
34
+ EOF
35
+
36
+ # ── code-server config ───────────────────────────────────────────
37
+ export PASSWORD="${PASSWORD:-codeserver123}"
38
+ mkdir -p /root/.config/code-server
39
+ cat > /root/.config/code-server/config.yaml << CONF
40
+ bind-addr: 0.0.0.0:8080
41
+ auth: password
42
+ password: ${PASSWORD}
43
+ cert: false
44
+ user-data-dir: ${CS_USER_DATA}
45
+ extensions-dir: ${CS_EXTENSIONS_DIR}
46
+ CONF
47
+
48
+ # ── Git / HF ─────────────────────────────────────────────────────
49
+ git config --global init.defaultBranch main
50
+ git config --global pull.rebase false
51
+ [ -n "${GIT_USER_NAME:-}" ] && git config --global user.name "$GIT_USER_NAME"
52
+ [ -n "${GIT_USER_EMAIL:-}" ] && git config --global user.email "$GIT_USER_EMAIL"
53
+ [ -n "${GITHUB_TOKEN:-}" ] && git config --global \
54
+ url."https://${GITHUB_TOKEN}@github.com/".insteadOf "https://github.com/"
55
+ [ -n "${HF_TOKEN:-}" ] && \
56
+ huggingface-cli login --token "$HF_TOKEN" --add-to-git-credential 2>/dev/null || true
57
+
58
+ # ── Services ─────────────────────────────────────────────────────
59
+ LOG "πŸ’» Starting code-server..."
60
+ code-server --config /root/.config/code-server/config.yaml \
61
+ --disable-telemetry --disable-update-check "$WORKSPACE" \
62
+ >> "$CS_LOGS/code-server.log" 2>&1 &
63
+ sleep 2
64
+
65
+ LOG "🌐 Starting browser server (Playwright)..."
66
+ cd /app && python3 browser_server.py \
67
+ >> "$CS_LOGS/browser.log" 2>&1 &
68
+ sleep 3
69
+
70
+ LOG "πŸ–₯️ Starting ttyd terminal..."
71
+ ttyd --port 7681 --writable --max-clients 5 bash \
72
+ >> "$CS_LOGS/ttyd.log" 2>&1 &
73
+ sleep 1
74
+
75
+ echo ""
76
+ echo "╔══════════════════════════════════════════════════════════╗"
77
+ echo "β•‘ πŸš€ Ready β•‘"
78
+ echo "╠══════════════════════════════════════════════════════════╣"
79
+ echo "β•‘ Editor : https://<space>.hf.space/ β•‘"
80
+ echo "β•‘ Browser : https://<space>.hf.space/browser/ β•‘"
81
+ echo "β•‘ Terminal : https://<space>.hf.space/terminal/ β•‘"
82
+ echo "β•‘ Password : $PASSWORD"
83
+ echo "β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•"
84
+
85
+ LOG "🌐 Starting nginx..."
86
+ exec nginx -g "daemon off;"