habppyar commited on
Commit
e1d3417
·
verified ·
1 Parent(s): 889693b

Delete start.sh

Browse files
Files changed (1) hide show
  1. start.sh +0 -155
start.sh DELETED
@@ -1,155 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- PORT="${PORT:-7860}"
5
- HOST="${HOST:-0.0.0.0}"
6
-
7
- export HOME="${HOME:-/home/node}"
8
-
9
- # 1) 公网安全:必须有 basic auth 密码
10
- if [[ -z "${OPENCODE_SERVER_PASSWORD:-}" ]]; then
11
- echo "[FATAL] OPENCODE_SERVER_PASSWORD is not set. Refusing to start."
12
- exit 1
13
- fi
14
-
15
- # 2) 关键修复:把 huggingface_hub / hf-xet 的本地目录指到可写位置
16
- # 官方定义:HF_HOME 是根目录;HF_XET_CACHE 默认在 $HF_HOME/xet <!--citation:1-->
17
- export HF_HOME="${HF_HOME:-${HOME}/.cache/huggingface}"
18
- export HF_HUB_CACHE="${HF_HUB_CACHE:-${HF_HOME}/hub}"
19
- export HF_XET_CACHE="${HF_XET_CACHE:-${HF_HOME}/xet}"
20
- export HF_ASSETS_CACHE="${HF_ASSETS_CACHE:-${HF_HOME}/assets}"
21
- export HF_HUB_DISABLE_PROGRESS_BARS=1
22
-
23
- mkdir -p "${HF_HOME}" "${HF_HUB_CACHE}" "${HF_XET_CACHE}" "${HF_ASSETS_CACHE}"
24
-
25
- # 3) 持久化参数
26
- BACKUP_INTERVAL_SECONDS="${BACKUP_INTERVAL_SECONDS:-120}"
27
- BUCKET_PREFIX="${BUCKET_PREFIX:-opencode-backup}"
28
- BACKUP_AUTH_JSON="${BACKUP_AUTH_JSON:-0}"
29
-
30
- bucket_ready() {
31
- [[ -n "${HF_TOKEN:-}" && -n "${HF_BUCKET_ID:-}" ]]
32
- }
33
-
34
- # OpenCode paths
35
- LOCAL_CONFIG_DIR="${HOME}/.config/opencode"
36
- LOCAL_DATA_DIR="${HOME}/.local/share/opencode"
37
- LOCAL_DB="${LOCAL_DATA_DIR}/opencode.db"
38
- LOCAL_AUTH="${LOCAL_DATA_DIR}/auth.json"
39
- LOCAL_OPENCODE_JSON="${LOCAL_CONFIG_DIR}/opencode.json"
40
-
41
- mkdir -p "${LOCAL_CONFIG_DIR}" "${LOCAL_DATA_DIR}"
42
-
43
- REMOTE_BASE="hf://buckets/${HF_BUCKET_ID}/${BUCKET_PREFIX}"
44
- REMOTE_DB="${REMOTE_BASE}/opencode.db"
45
- REMOTE_AUTH="${REMOTE_BASE}/auth.json"
46
- REMOTE_OPENCODE_JSON="${REMOTE_BASE}/opencode.json"
47
-
48
- hf_cp() {
49
- hf buckets cp --token "${HF_TOKEN}" "$1" "$2"
50
- }
51
-
52
- hf_cp_maybe() {
53
- set +e
54
- hf_cp "$1" "$2"
55
- local code=$?
56
- set -e
57
- return $code
58
- }
59
-
60
- echo "===== Startup diagnostics ====="
61
- echo "[INFO] id: $(id || true)"
62
- echo "[INFO] HOME=${HOME}"
63
- echo "[INFO] HF_HOME=${HF_HOME}"
64
- echo "[INFO] HF_XET_CACHE=${HF_XET_CACHE}"
65
- echo "[INFO] HF_BUCKET_ID=${HF_BUCKET_ID:-<empty>}"
66
- echo "[INFO] bucket_ready? $(bucket_ready && echo yes || echo no)"
67
- echo "[INFO] Remote base: ${REMOTE_BASE}"
68
-
69
- # (可选)打印 /data 挂载状态,便于你继续跟踪 HF 的 mount 权限问题
70
- if [[ -d "/data" ]]; then
71
- echo "[INFO] /data perms:"
72
- ls -ld /data || true
73
- echo "[INFO] /data mount:"
74
- grep -E "[[:space:]]/data[[:space:]]" /proc/mounts || true
75
- fi
76
-
77
- # 4) 启动前:尽力从 bucket 恢复(首次没有文件会提示 not found,属正常)
78
- if bucket_ready; then
79
- echo "[INFO] Restoring from bucket (best effort)..."
80
-
81
- if [[ ! -f "${LOCAL_OPENCODE_JSON}" ]]; then
82
- hf_cp_maybe "${REMOTE_OPENCODE_JSON}" "${LOCAL_OPENCODE_JSON}" \
83
- && echo "[INFO] Restored opencode.json" \
84
- || echo "[INFO] No remote opencode.json (ok on first run)."
85
- fi
86
-
87
- if [[ ! -f "${LOCAL_DB}" ]]; then
88
- hf_cp_maybe "${REMOTE_DB}" "${LOCAL_DB}" \
89
- && echo "[INFO] Restored opencode.db" \
90
- || echo "[INFO] No remote opencode.db (ok on first run)."
91
- fi
92
-
93
- if [[ "${BACKUP_AUTH_JSON}" == "1" && ! -f "${LOCAL_AUTH}" ]]; then
94
- hf_cp_maybe "${REMOTE_AUTH}" "${LOCAL_AUTH}" \
95
- && echo "[INFO] Restored auth.json" \
96
- || echo "[INFO] No remote auth.json (ok on first run)."
97
- fi
98
- else
99
- echo "[WARN] Persistence disabled: HF_TOKEN or HF_BUCKET_ID missing."
100
- fi
101
-
102
- # 5) 确保 config 存在(env 注入优先)
103
- if [[ -n "${OPENCODE_CONFIG_CONTENT:-}" ]]; then
104
- echo "[INFO] Writing opencode.json from OPENCODE_CONFIG_CONTENT"
105
- printf "%s" "${OPENCODE_CONFIG_CONTENT}" > "${LOCAL_OPENCODE_JSON}"
106
- elif [[ ! -f "${LOCAL_OPENCODE_JSON}" ]]; then
107
- echo "[INFO] No opencode.json found; copying example."
108
- cp -f "${HOME}/opencode.json.example" "${LOCAL_OPENCODE_JSON}"
109
- fi
110
-
111
- # 6) 后台备份:SQLite 用 .backup 生成一致性快照再上传
112
- backup_loop() {
113
- echo "[INFO] Backup loop started (interval=${BACKUP_INTERVAL_SECONDS}s)."
114
- while true; do
115
- if bucket_ready; then
116
- if [[ -f "${LOCAL_DB}" ]]; then
117
- TMP_DB="/tmp/opencode.db.backup"
118
- if sqlite3 "${LOCAL_DB}" ".backup '${TMP_DB}'" >/dev/null 2>&1; then
119
- hf_cp_maybe "${TMP_DB}" "${REMOTE_DB}" \
120
- && echo "[INFO] Uploaded DB -> ${REMOTE_DB}" \
121
- || echo "[WARN] Failed to upload DB."
122
- else
123
- echo "[WARN] sqlite3 .backup failed."
124
- fi
125
- fi
126
-
127
- if [[ -f "${LOCAL_OPENCODE_JSON}" ]]; then
128
- hf_cp_maybe "${LOCAL_OPENCODE_JSON}" "${REMOTE_OPENCODE_JSON}" \
129
- && echo "[INFO] Uploaded opencode.json -> ${REMOTE_OPENCODE_JSON}" \
130
- || echo "[WARN] Failed to upload opencode.json."
131
- fi
132
-
133
- if [[ "${BACKUP_AUTH_JSON}" == "1" && -f "${LOCAL_AUTH}" ]]; then
134
- hf_cp_maybe "${LOCAL_AUTH}" "${REMOTE_AUTH}" \
135
- && echo "[INFO] Uploaded auth.json -> ${REMOTE_AUTH}" \
136
- || echo "[WARN] Failed to upload auth.json."
137
- fi
138
- fi
139
- sleep "${BACKUP_INTERVAL_SECONDS}"
140
- done
141
- }
142
-
143
- backup_loop &
144
-
145
- # 7) 启动 opencode web
146
- export XDG_CACHE_HOME="/tmp/.cache"
147
- export TMPDIR="/tmp"
148
- mkdir -p "${XDG_CACHE_HOME}" "${TMPDIR}"
149
-
150
- echo "[INFO] Starting: opencode web --hostname ${HOST} --port ${PORT}"
151
- exec opencode web \
152
- --hostname "${HOST}" \
153
- --port "${PORT}" \
154
- --print-logs \
155
- --log-level INFO