Update start.sh
Browse files
start.sh
CHANGED
|
@@ -2,13 +2,15 @@
|
|
| 2 |
|
| 3 |
set -eu
|
| 4 |
|
|
|
|
| 5 |
CONFIG_PATH="${CONFIG_PATH:-/tmp/config.yaml}"
|
| 6 |
PORT="${PORT:-8317}"
|
| 7 |
AUTH_DIR="${AUTH_DIR:-/tmp/auths}"
|
| 8 |
|
|
|
|
| 9 |
REMOTE_SECRET="${REMOTE_SECRET:-${MANAGEMENT_PASSWORD:-}}"
|
| 10 |
-
ALLOW_REMOTE="${ALLOW_REMOTE:-true}"
|
| 11 |
-
DISABLE_PANEL="${DISABLE_PANEL:-false}"
|
| 12 |
DEBUG="${DEBUG:-false}"
|
| 13 |
LOG_TO_FILE="${LOG_TO_FILE:-false}"
|
| 14 |
USAGE_STATS_ENABLED="${USAGE_STATS_ENABLED:-true}" # 默认开启统计
|
|
@@ -16,14 +18,15 @@ REQUEST_RETRY="${REQUEST_RETRY:-3}"
|
|
| 16 |
SWITCH_PROJECT="${SWITCH_PROJECT:-true}"
|
| 17 |
SWITCH_PREVIEW_MODEL="${SWITCH_PREVIEW_MODEL:-true}"
|
| 18 |
|
|
|
|
| 19 |
mkdir -p "$(dirname "$CONFIG_PATH")" "$AUTH_DIR" || true
|
| 20 |
|
|
|
|
| 21 |
API_KEYS_INPUT="${API_KEYS:-}"
|
| 22 |
API_KEYS_YAML="[]"
|
| 23 |
if [ -n "$API_KEYS_INPUT" ]; then
|
| 24 |
tmp="/tmp/_keys.yaml"
|
| 25 |
: > "$tmp"
|
| 26 |
-
# 逗号拆分 -> 去空白/空行
|
| 27 |
echo "$API_KEYS_INPUT" | tr ',' '\n' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' | sed '/^$/d' | \
|
| 28 |
while IFS= read -r key; do
|
| 29 |
esc=$(printf '%s' "$key" | sed 's/\\/\\\\/g; s/"/\\"/g')
|
|
@@ -34,6 +37,7 @@ if [ -n "$API_KEYS_INPUT" ]; then
|
|
| 34 |
fi
|
| 35 |
fi
|
| 36 |
|
|
|
|
| 37 |
cat > "$CONFIG_PATH" <<EOF
|
| 38 |
port: ${PORT}
|
| 39 |
remote-management:
|
|
@@ -57,24 +61,37 @@ EOF
|
|
| 57 |
echo "INFO: config.yaml 已生成于 $CONFIG_PATH"
|
| 58 |
echo "INFO: auth-dir = $AUTH_DIR"
|
| 59 |
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
if
|
| 63 |
-
|
|
|
|
| 64 |
fi
|
| 65 |
-
# 2) 常见路径兜底
|
| 66 |
-
for p in \
|
| 67 |
-
/usr/local/bin/cli-proxy-api \
|
| 68 |
-
/usr/bin/cli-proxy-api \
|
| 69 |
-
/app/cli-proxy-api \
|
| 70 |
-
/CLIProxyAPI/cli-proxy-api
|
| 71 |
-
do
|
| 72 |
-
if [ -x "$p" ]; then
|
| 73 |
-
exec "$p" --config "$CONFIG_PATH"
|
| 74 |
-
fi
|
| 75 |
-
done
|
| 76 |
-
echo "FATAL: 找不到 cli-proxy-api 可执行文件。请检查基础镜像或可执行文件路径。" >&2
|
| 77 |
-
exit 127
|
| 78 |
}
|
| 79 |
|
| 80 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
|
| 3 |
set -eu
|
| 4 |
|
| 5 |
+
# ===== 基本参数(全部走 /tmp)=====
|
| 6 |
CONFIG_PATH="${CONFIG_PATH:-/tmp/config.yaml}"
|
| 7 |
PORT="${PORT:-8317}"
|
| 8 |
AUTH_DIR="${AUTH_DIR:-/tmp/auths}"
|
| 9 |
|
| 10 |
+
# ===== 管理与开关 =====
|
| 11 |
REMOTE_SECRET="${REMOTE_SECRET:-${MANAGEMENT_PASSWORD:-}}"
|
| 12 |
+
ALLOW_REMOTE="${ALLOW_REMOTE:-true}"
|
| 13 |
+
DISABLE_PANEL="${DISABLE_PANEL:-false}"
|
| 14 |
DEBUG="${DEBUG:-false}"
|
| 15 |
LOG_TO_FILE="${LOG_TO_FILE:-false}"
|
| 16 |
USAGE_STATS_ENABLED="${USAGE_STATS_ENABLED:-true}" # 默认开启统计
|
|
|
|
| 18 |
SWITCH_PROJECT="${SWITCH_PROJECT:-true}"
|
| 19 |
SWITCH_PREVIEW_MODEL="${SWITCH_PREVIEW_MODEL:-true}"
|
| 20 |
|
| 21 |
+
# ===== 目录准备 =====
|
| 22 |
mkdir -p "$(dirname "$CONFIG_PATH")" "$AUTH_DIR" || true
|
| 23 |
|
| 24 |
+
# ===== API Keys(逗号或换行)=====
|
| 25 |
API_KEYS_INPUT="${API_KEYS:-}"
|
| 26 |
API_KEYS_YAML="[]"
|
| 27 |
if [ -n "$API_KEYS_INPUT" ]; then
|
| 28 |
tmp="/tmp/_keys.yaml"
|
| 29 |
: > "$tmp"
|
|
|
|
| 30 |
echo "$API_KEYS_INPUT" | tr ',' '\n' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' | sed '/^$/d' | \
|
| 31 |
while IFS= read -r key; do
|
| 32 |
esc=$(printf '%s' "$key" | sed 's/\\/\\\\/g; s/"/\\"/g')
|
|
|
|
| 37 |
fi
|
| 38 |
fi
|
| 39 |
|
| 40 |
+
# ===== 写入 /tmp/config.yaml =====
|
| 41 |
cat > "$CONFIG_PATH" <<EOF
|
| 42 |
port: ${PORT}
|
| 43 |
remote-management:
|
|
|
|
| 61 |
echo "INFO: config.yaml 已生成于 $CONFIG_PATH"
|
| 62 |
echo "INFO: auth-dir = $AUTH_DIR"
|
| 63 |
|
| 64 |
+
# ===== 自动探测可执行文件并启动 =====
|
| 65 |
+
try_exec() {
|
| 66 |
+
if [ -x "$1" ]; then
|
| 67 |
+
echo "INFO: 使用可执行文件: $1"
|
| 68 |
+
exec "$1" --config "$CONFIG_PATH"
|
| 69 |
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 70 |
}
|
| 71 |
|
| 72 |
+
# 1) PATH 中尝试(大写/小写名称)
|
| 73 |
+
if command -v CLIProxyAPI >/dev/null 2>&1; then
|
| 74 |
+
exec CLIProxyAPI --config "$CONFIG_PATH"
|
| 75 |
+
fi
|
| 76 |
+
if command -v cli-proxy-api >/dev/null 2>&1; then
|
| 77 |
+
exec cli-proxy-api --config "$CONFIG_PATH"
|
| 78 |
+
fi
|
| 79 |
+
|
| 80 |
+
# 2) 常见绝对路径(优先常用的 /CLIProxyAPI/CLIProxyAPI)
|
| 81 |
+
try_exec /CLIProxyAPI/CLIProxyAPI
|
| 82 |
+
try_exec /CLIProxyAPI/cli-proxy-api
|
| 83 |
+
try_exec /usr/local/bin/CLIProxyAPI
|
| 84 |
+
try_exec /usr/bin/CLIProxyAPI
|
| 85 |
+
try_exec /bin/CLIProxyAPI
|
| 86 |
+
try_exec /usr/local/bin/cli-proxy-api
|
| 87 |
+
try_exec /usr/bin/cli-proxy-api
|
| 88 |
+
try_exec /bin/cli-proxy-api
|
| 89 |
+
|
| 90 |
+
# 3) 兜底:列目录帮助定位
|
| 91 |
+
echo "FATAL: 找不到 CLIProxyAPI 可执行文件。列出常见目录帮助排查:"
|
| 92 |
+
echo "------ ls -l /CLIProxyAPI ------"
|
| 93 |
+
ls -l /CLIProxyAPI 2>/dev/null || true
|
| 94 |
+
echo "------ which -a CLIProxyAPI / cli-proxy-api ------"
|
| 95 |
+
which -a CLIProxyAPI 2>/dev/null || true
|
| 96 |
+
which -a cli-proxy-api 2>/dev/null || true
|
| 97 |
+
exit 127
|