Update entrypoint.sh
Browse files- entrypoint.sh +5 -168
entrypoint.sh
CHANGED
|
@@ -78,13 +78,13 @@ cat <<EOF > "$HOME/.claude/settings.json"
|
|
| 78 |
}
|
| 79 |
EOF
|
| 80 |
|
| 81 |
-
# 4. 自动生成 Codex 配置
|
| 82 |
# 修复要点:
|
| 83 |
-
# a. 顶层键必须位于任何 [table] 段之前,否则键被归入 table 导致配置失效;
|
| 84 |
# b. hfspace 容器 seccomp 拦截 CLONE_NEWUSER 且无 bwrap,沙箱双路径全阻断,
|
| 85 |
# 必须 sandbox_mode="danger-full-access" + approval_policy="never" 让 Codex 完全跳过沙箱;
|
| 86 |
-
# c. 通道用实测可用的中转网关:wire_api="responses"、env_key="OPENAI_API_KEY";
|
| 87 |
-
# d. 凭证解析:优先 CODEX_API_KEY 环境变量,其次 /data/.codex/gw_token。
|
| 88 |
CODEX_KEY_RESOLVED="${CODEX_API_KEY:-}"
|
| 89 |
if [ -z "$CODEX_KEY_RESOLVED" ] && [ -f /data/.codex/gw_token ]; then
|
| 90 |
CODEX_KEY_RESOLVED="$(head -n 1 /data/.codex/gw_token | tr -d '[:space:]')"
|
|
@@ -133,167 +133,4 @@ chmod 600 /data/.codex/gw_token 2>/dev/null || true
|
|
| 133 |
|
| 134 |
# 7. 切换并启动
|
| 135 |
cd /data/app
|
| 136 |
-
exec "$@"
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
# cc、cursor可用版本
|
| 159 |
-
# #!/bin/bash
|
| 160 |
-
# set -e
|
| 161 |
-
|
| 162 |
-
# # 导出环境变量供子进程使用
|
| 163 |
-
# export CURSOR_API_KEY="${CURSOR_API_KEY:-}"
|
| 164 |
-
|
| 165 |
-
# # 检查并包装 claude 二进制,让其每次执行都强制携带跳过权限参数
|
| 166 |
-
# CLAUDE_BIN=$(which claude 2>/dev/null || echo "/usr/local/bin/claude")
|
| 167 |
-
# if [ -f "$CLAUDE_BIN" ] && [ ! -f "${CLAUDE_BIN}.orig" ]; then
|
| 168 |
-
# mv "$CLAUDE_BIN" "${CLAUDE_BIN}.orig"
|
| 169 |
-
# cat << 'EOF' > "$CLAUDE_BIN"
|
| 170 |
-
# #!/bin/sh
|
| 171 |
-
# exec "$0.orig" --dangerously-skip-permissions "$@"
|
| 172 |
-
# EOF
|
| 173 |
-
# chmod +x "$CLAUDE_BIN"
|
| 174 |
-
# fi
|
| 175 |
-
|
| 176 |
-
# # 1. 创建持久化挂载目录
|
| 177 |
-
# mkdir -p /data/.claude /data/.codex /data/.cloudcli /data/app /data/.taskmaster /data/.cursor /data/.config/cursor
|
| 178 |
-
|
| 179 |
-
# # 2. 软链接映射到持久化盘
|
| 180 |
-
# if [ ! -L "$HOME/.claude" ]; then
|
| 181 |
-
# rm -rf "$HOME/.claude"
|
| 182 |
-
# ln -s /data/.claude "$HOME/.claude"
|
| 183 |
-
# fi
|
| 184 |
-
|
| 185 |
-
# if [ ! -L "$HOME/.cloudcli" ]; then
|
| 186 |
-
# rm -rf "$HOME/.cloudcli"
|
| 187 |
-
# ln -s /data/.cloudcli "$HOME/.cloudcli"
|
| 188 |
-
# fi
|
| 189 |
-
|
| 190 |
-
# if [ ! -L "$HOME/.taskmaster" ]; then
|
| 191 |
-
# rm -rf "$HOME/.taskmaster"
|
| 192 |
-
# ln -s /data/.taskmaster "$HOME/.taskmaster"
|
| 193 |
-
# fi
|
| 194 |
-
|
| 195 |
-
# if [ ! -L "$HOME/.codex" ]; then
|
| 196 |
-
# rm -rf "$HOME/.codex"
|
| 197 |
-
# ln -s /data/.codex "$HOME/.codex"
|
| 198 |
-
# fi
|
| 199 |
-
|
| 200 |
-
# if [ ! -L "$HOME/.cursor" ]; then
|
| 201 |
-
# rm -rf "$HOME/.cursor"
|
| 202 |
-
# ln -s /data/.cursor "$HOME/.cursor"
|
| 203 |
-
# fi
|
| 204 |
-
|
| 205 |
-
# mkdir -p "$HOME/.config"
|
| 206 |
-
# if [ ! -L "$HOME/.config/cursor" ]; then
|
| 207 |
-
# rm -rf "$HOME/.config/cursor"
|
| 208 |
-
# ln -s /data/.config/cursor "$HOME/.config/cursor"
|
| 209 |
-
# fi
|
| 210 |
-
|
| 211 |
-
# # 3. 自动生成 Claude 配置
|
| 212 |
-
# mkdir -p "$HOME/.claude"
|
| 213 |
-
# cat <<EOF > "$HOME/.claude/settings.json"
|
| 214 |
-
# {
|
| 215 |
-
# "cleanupPeriodDays": 720,
|
| 216 |
-
# "env": {
|
| 217 |
-
# "ANTHROPIC_BASE_URL": "${ANTHROPIC_BASE_URL:-}",
|
| 218 |
-
# "ANTHROPIC_AUTH_TOKEN": "${ANTHROPIC_AUTH_TOKEN:-}",
|
| 219 |
-
# "CLAUDE_CODE_ATTRIBUTION_HEADER": "0",
|
| 220 |
-
# "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
|
| 221 |
-
# "DISABLE_INSTALLATION_CHECKS": "1",
|
| 222 |
-
# "CLAUDE_CODE_PROXY_RESOLVES_HOSTS": "1",
|
| 223 |
-
# "CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1",
|
| 224 |
-
# "ENABLE_TOOL_SEARCH": "0",
|
| 225 |
-
# "DISABLE_AUTOUPDATER": "1",
|
| 226 |
-
# "API_TIMEOUT_MS": "1200000",
|
| 227 |
-
# "CLAUDE_STREAM_IDLE_TIMEOUT_MS": "1200000",
|
| 228 |
-
# "CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS": "1200000",
|
| 229 |
-
# "CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS": "1200000",
|
| 230 |
-
# "BASH_DEFAULT_TIMEOUT_MS": "1800000",
|
| 231 |
-
# "IS_SANDBOX": "1",
|
| 232 |
-
# "ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-sonnet-d",
|
| 233 |
-
# "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-sonnet-d",
|
| 234 |
-
# "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-d",
|
| 235 |
-
# "ANTHROPIC_MODEL": "claude-sonnet-d",
|
| 236 |
-
# "ANTHROPIC_REASONING_MODEL": "claude-sonnet-d"
|
| 237 |
-
# },
|
| 238 |
-
# "permissions": {
|
| 239 |
-
# "defaultMode": "bypassPermissions",
|
| 240 |
-
# "additionalDirectories": [
|
| 241 |
-
# "/home/node",
|
| 242 |
-
# "/data",
|
| 243 |
-
# "/data/app",
|
| 244 |
-
# "/home/node/app"
|
| 245 |
-
# ],
|
| 246 |
-
# "allow": [
|
| 247 |
-
# "Bash(*)",
|
| 248 |
-
# "Read(*)",
|
| 249 |
-
# "Write(*)",
|
| 250 |
-
# "Edit(*)",
|
| 251 |
-
# "MultiEdit(*)",
|
| 252 |
-
# "Glob(*)",
|
| 253 |
-
# "Grep(*)",
|
| 254 |
-
# "LS(*)",
|
| 255 |
-
# "*"
|
| 256 |
-
# ]
|
| 257 |
-
# },
|
| 258 |
-
# "hasCompletedOnboarding":true,
|
| 259 |
-
# "dangerouslySkipPermissions": true,
|
| 260 |
-
# "skipDangerousModePermissionPrompt": true,
|
| 261 |
-
# "skipWebFetchPreflight": true
|
| 262 |
-
# }
|
| 263 |
-
# EOF
|
| 264 |
-
|
| 265 |
-
# # 4. 自动生成 Codex 配置
|
| 266 |
-
# mkdir -p "$HOME/.codex"
|
| 267 |
-
# cat <<EOF > "$HOME/.codex/config.toml"
|
| 268 |
-
# cli_auth_credentials_store = "file"
|
| 269 |
-
# model_provider = "${CODEX_PROVIDER:-custom}"
|
| 270 |
-
# model = "${CODEX_MODEL:-gpt-5.6-sol}"
|
| 271 |
-
# [model_providers.custom]
|
| 272 |
-
# name = "Custom"
|
| 273 |
-
# base_url = "${CODEX_BASE_URL:-https://api.openai.com/v1}"
|
| 274 |
-
# wire_api = "responses"
|
| 275 |
-
# requires_openai_auth = true
|
| 276 |
-
# EOF
|
| 277 |
-
|
| 278 |
-
# cat <<EOF > "$HOME/.codex/auth.json"
|
| 279 |
-
# {
|
| 280 |
-
# "OPENAI_API_KEY": "${CODEX_API_KEY:-sk-dummy-key}"
|
| 281 |
-
# }
|
| 282 |
-
# EOF
|
| 283 |
-
|
| 284 |
-
# # 5. 生成 Cursor 全路径凭证 (核心修复点)
|
| 285 |
-
# # 基础目录创建
|
| 286 |
-
# mkdir -p "$HOME/.cursor"
|
| 287 |
-
# cat <<EOF > "$HOME/.cursor/cli-config.json"
|
| 288 |
-
# {
|
| 289 |
-
# "permissions": {
|
| 290 |
-
# "allow": ["Shell(*)", "Read", "Write"],
|
| 291 |
-
# "deny": []
|
| 292 |
-
# },
|
| 293 |
-
# "version": 1
|
| 294 |
-
# }
|
| 295 |
-
# EOF
|
| 296 |
-
|
| 297 |
-
# # 6. 切换工作目录并启动
|
| 298 |
-
# cd /data/app
|
| 299 |
-
# exec "$@"
|
|
|
|
| 78 |
}
|
| 79 |
EOF
|
| 80 |
|
| 81 |
+
# 4. 自动生成 Codex 配置(依据 readme.md 实测结论修复 bwrap 命名空间报错)
|
| 82 |
# 修复要点:
|
| 83 |
+
# a. 顶层键必须位于任何 [table] 段之前,否则键被归入 table 导致配置失效(实测注意点);
|
| 84 |
# b. hfspace 容器 seccomp 拦截 CLONE_NEWUSER 且无 bwrap,沙箱双路径全阻断,
|
| 85 |
# 必须 sandbox_mode="danger-full-access" + approval_policy="never" 让 Codex 完全跳过沙箱;
|
| 86 |
+
# c. 通道用实测可用的中转网关:wire_api="responses"、env_key="OPENAI_API_KEY"(移除 requires_openai_auth);
|
| 87 |
+
# d. 凭证解析:优先 CODEX_API_KEY 环境变量,其次 /data/.codex/gw_token(持久盘凭证文件)。
|
| 88 |
CODEX_KEY_RESOLVED="${CODEX_API_KEY:-}"
|
| 89 |
if [ -z "$CODEX_KEY_RESOLVED" ] && [ -f /data/.codex/gw_token ]; then
|
| 90 |
CODEX_KEY_RESOLVED="$(head -n 1 /data/.codex/gw_token | tr -d '[:space:]')"
|
|
|
|
| 133 |
|
| 134 |
# 7. 切换并启动
|
| 135 |
cd /data/app
|
| 136 |
+
exec "$@"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|