cacode commited on
Commit
297ee59
·
verified ·
1 Parent(s): e520895

Update start.sh

Browse files
Files changed (1) hide show
  1. start.sh +106 -109
start.sh CHANGED
@@ -1,110 +1,107 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- PORT="${PORT:-7860}"
5
-
6
- # 必须:code-server 登录密码
7
- if [[ -z "${PASSWORD:-}" && -z "${HASHED_PASSWORD:-}" ]]; then
8
- echo "[ERROR] Missing PASSWORD/HASHED_PASSWORD secret."
9
- exit 1
10
- fi
11
-
12
- # Hugging Face 持久化目录
13
- if [[ -d "/data" ]]; then
14
- WORKDIR="/data/workspace"
15
- EXT_DIR="/data/code-server/extensions"
16
- USER_DATA_DIR="/data/code-server/user-data"
17
- CODEX_DIR="/data/.codex"
18
- else
19
- WORKDIR="${HOME}/workspace"
20
- EXT_DIR="${HOME}/.local/share/code-server/extensions"
21
- USER_DATA_DIR="${HOME}/.local/share/code-server/user-data"
22
- CODEX_DIR="${HOME}/.codex"
23
- fi
24
-
25
- mkdir -p "$WORKDIR" "$EXT_DIR" "$USER_DATA_DIR" "${HOME}/.config/code-server" "$CODEX_DIR"
26
-
27
- # -------------------------
28
- # code-server 配置
29
- # -------------------------
30
- CONFIG_FILE="${HOME}/.config/code-server/config.yaml"
31
- {
32
- echo "bind-addr: 0.0.0.0:${PORT}"
33
- echo "auth: password"
34
- if [[ -n "${HASHED_PASSWORD:-}" ]]; then
35
- echo "hashed-password: ${HASHED_PASSWORD}"
36
- else
37
- echo "password: ${PASSWORD}"
38
- fi
39
- echo "cert: false"
40
- } > "$CONFIG_FILE"
41
-
42
- # -------------------------
43
- # Codex 配置文件 config.toml
44
- # -------------------------
45
- # 允许用环境变量覆盖;默认就是你给的参数
46
- : "${CODEX_MODEL_PROVIDER:=sub2api}"
47
- : "${CODEX_MODEL:=gpt-5.3-codex}"
48
- : "${CODEX_REASONING_EFFORT:=high}"
49
- : "${CODEX_NETWORK_ACCESS:=enabled}"
50
- : "${CODEX_DISABLE_RESPONSE_STORAGE:=true}"
51
- : "${CODEX_WSL_ACK:=true}"
52
- : "${CODEX_VERBOSITY:=high}"
53
- : "${CODEX_PROVIDER_NAME:=sub2api}"
54
- : "${CODEX_BASE_URL:=https://ai.qaq.al}"
55
- : "${CODEX_WIRE_API:=responses}"
56
- : "${CODEX_REQUIRES_OPENAI_AUTH:=true}"
57
-
58
- cat > "${CODEX_DIR}/config.toml" <<EOF
59
- model_provider = "${CODEX_MODEL_PROVIDER}"
60
- model = "${CODEX_MODEL}"
61
- model_reasoning_effort = "${CODEX_REASONING_EFFORT}"
62
- network_access = "${CODEX_NETWORK_ACCESS}"
63
- disable_response_storage = ${CODEX_DISABLE_RESPONSE_STORAGE}
64
- windows_wsl_setup_acknowledged = ${CODEX_WSL_ACK}
65
- model_verbosity = "${CODEX_VERBOSITY}"
66
-
67
- [model_providers.${CODEX_PROVIDER_NAME}]
68
- name = "${CODEX_PROVIDER_NAME}"
69
- base_url = "${CODEX_BASE_URL}"
70
- wire_api = "${CODEX_WIRE_API}"
71
- requires_openai_auth = ${CODEX_REQUIRES_OPENAI_AUTH}
72
- EOF
73
-
74
- # -------------------------
75
- # Codex auth.json
76
- # -------------------------
77
- # 推荐用 HF Secrets 注入 OPENAI_API_KEY
78
- # 或者直接放完整 JSON CODEX_AUTH_JSON
79
- if [[ -n "${CODEX_AUTH_JSON:-}" ]]; then
80
- printf '%s\n' "${CODEX_AUTH_JSON}" > "${CODEX_DIR}/auth.json"
81
- elif [[ -n "${OPENAI_API_KEY:-}" ]]; then
82
- cat > "${CODEX_DIR}/auth.json" <<EOF
83
- {
84
- "OPENAI_API_KEY": "${OPENAI_API_KEY}"
85
- }
86
- EOF
87
- else
88
- echo "[WARN] No OPENAI_API_KEY/CODEX_AUTH_JSON found. Codex auth.json not generated."
89
- fi
90
-
91
- chmod 600 "${CODEX_DIR}/auth.json" 2>/dev/null || true
92
- chmod 600 "${CODEX_DIR}/config.toml" 2>/dev/null || true
93
-
94
- # /data 的 codex 配置软链到 ~/.codex(避免路径不一致)
95
- if [[ "$CODEX_DIR" != "${HOME}/.codex" ]]; then
96
- rm -rf "${HOME}/.codex"
97
- ln -s "$CODEX_DIR" "${HOME}/.codex"
98
- fi
99
-
100
- echo "[INFO] Environment ready."
101
- echo "[INFO] Java: $(java -version 2>&1 | head -n1 || true)"
102
- echo "[INFO] Python: $(python3 --version || true)"
103
- echo "[INFO] Node: $(node --version || true)"
104
- echo "[INFO] g++: $(g++ --version | head -n1 || true)"
105
- echo "[INFO] Codex config path: ${HOME}/.codex/config.toml"
106
-
107
- exec code-server "$WORKDIR" \
108
- --extensions-dir "$EXT_DIR" \
109
- --user-data-dir "$USER_DATA_DIR" \
110
  --disable-telemetry
 
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ PORT="${PORT:-7860}"
5
+
6
+ # code-server 登录密码:必须在 HF Secrets 里配置
7
+ if [[ -z "${PASSWORD:-}" && -z "${HASHED_PASSWORD:-}" ]]; then
8
+ echo "[ERROR] Missing PASSWORD/HASHED_PASSWORD secret."
9
+ exit 1
10
+ fi
11
+
12
+ # Hugging Face 持久化目录支持
13
+ if [[ -d "/data" ]]; then
14
+ WORKDIR="/data/workspace"
15
+ EXT_DIR="/data/code-server/extensions"
16
+ USER_DATA_DIR="/data/code-server/user-data"
17
+ CODEX_DIR="/data/.codex"
18
+ else
19
+ WORKDIR="${HOME}/workspace"
20
+ EXT_DIR="${HOME}/.local/share/code-server/extensions"
21
+ USER_DATA_DIR="${HOME}/.local/share/code-server/user-data"
22
+ CODEX_DIR="${HOME}/.codex"
23
+ fi
24
+
25
+ mkdir -p "$WORKDIR" "$EXT_DIR" "$USER_DATA_DIR" "${HOME}/.config/code-server" "$CODEX_DIR"
26
+
27
+ # -------------------------
28
+ # code-server 配置
29
+ # -------------------------
30
+ cat > "${HOME}/.config/code-server/config.yaml" <<EOF
31
+ bind-addr: 0.0.0.0:${PORT}
32
+ auth: password
33
+ cert: false
34
+ EOF
35
+
36
+ if [[ -n "${HASHED_PASSWORD:-}" ]]; then
37
+ echo "hashed-password: ${HASHED_PASSWORD}" >> "${HOME}/.config/code-server/config.yaml"
38
+ else
39
+ echo "password: ${PASSWORD}" >> "${HOME}/.config/code-server/config.yaml"
40
+ fi
41
+
42
+ # -------------------------
43
+ # Codex config.toml(默认使用你给的配置)
44
+ # -------------------------
45
+ : "${CODEX_MODEL_PROVIDER:=sub2api}"
46
+ : "${CODEX_MODEL:=gpt-5.3-codex}"
47
+ : "${CODEX_REASONING_EFFORT:=high}"
48
+ : "${CODEX_NETWORK_ACCESS:=enabled}"
49
+ : "${CODEX_DISABLE_RESPONSE_STORAGE:=true}"
50
+ : "${CODEX_WSL_ACK:=true}"
51
+ : "${CODEX_VERBOSITY:=high}"
52
+
53
+ : "${CODEX_PROVIDER_NAME:=sub2api}"
54
+ : "${CODEX_BASE_URL:=https://ai.qaq.al}"
55
+ : "${CODEX_WIRE_API:=responses}"
56
+ : "${CODEX_REQUIRES_OPENAI_AUTH:=true}"
57
+
58
+ cat > "${CODEX_DIR}/config.toml" <<EOF
59
+ model_provider = "${CODEX_MODEL_PROVIDER}"
60
+ model = "${CODEX_MODEL}"
61
+ model_reasoning_effort = "${CODEX_REASONING_EFFORT}"
62
+ network_access = "${CODEX_NETWORK_ACCESS}"
63
+ disable_response_storage = ${CODEX_DISABLE_RESPONSE_STORAGE}
64
+ windows_wsl_setup_acknowledged = ${CODEX_WSL_ACK}
65
+ model_verbosity = "${CODEX_VERBOSITY}"
66
+
67
+ [model_providers.${CODEX_PROVIDER_NAME}]
68
+ name = "${CODEX_PROVIDER_NAME}"
69
+ base_url = "${CODEX_BASE_URL}"
70
+ wire_api = "${CODEX_WIRE_API}"
71
+ requires_openai_auth = ${CODEX_REQUIRES_OPENAI_AUTH}
72
+ EOF
73
+
74
+ # -------------------------
75
+ # Codex auth.json(只从 Secrets 生成,不要写死到仓库)
76
+ # -------------------------
77
+ if [[ -n "${CODEX_AUTH_JSON:-}" ]]; then
78
+ printf '%s\n' "${CODEX_AUTH_JSON}" > "${CODEX_DIR}/auth.json"
79
+ elif [[ -n "${OPENAI_API_KEY:-}" ]]; then
80
+ cat > "${CODEX_DIR}/auth.json" <<EOF
81
+ {
82
+ "OPENAI_API_KEY": "${OPENAI_API_KEY}"
83
+ }
84
+ EOF
85
+ else
86
+ echo "[WARN] OPENAI_API_KEY / CODEX_AUTH_JSON not found. auth.json not generated."
87
+ fi
88
+
89
+ chmod 600 "${CODEX_DIR}/config.toml" 2>/dev/null || true
90
+ chmod 600 "${CODEX_DIR}/auth.json" 2>/dev/null || true
91
+
92
+ # 若走 /data,软链到 ~/.codex
93
+ if [[ "${CODEX_DIR}" != "${HOME}/.codex" ]]; then
94
+ rm -rf "${HOME}/.codex"
95
+ ln -s "${CODEX_DIR}" "${HOME}/.codex"
96
+ fi
97
+
98
+ echo "[INFO] Java: $(java -version 2>&1 | head -n1 || true)"
99
+ echo "[INFO] Python: $(python --version || true)"
100
+ echo "[INFO] Pip: $(pip --version || true)"
101
+ echo "[INFO] Node: $(node --version || true)"
102
+ echo "[INFO] g++: $(g++ --version | head -n1 || true)"
103
+
104
+ exec code-server "$WORKDIR" \
105
+ --extensions-dir "$EXT_DIR" \
106
+ --user-data-dir "$USER_DATA_DIR" \
 
 
 
107
  --disable-telemetry