Upload entrypoint.sh with huggingface_hub
Browse files- entrypoint.sh +75 -51
entrypoint.sh
CHANGED
|
@@ -1331,66 +1331,90 @@ else
|
|
| 1331 |
echo " ⚠️ Image Proxy 未就绪,Web UI 可能不可用"
|
| 1332 |
fi
|
| 1333 |
|
| 1334 |
-
# ==================== 设置
|
| 1335 |
-
|
| 1336 |
-
|
| 1337 |
-
|
| 1338 |
-
|
| 1339 |
-
|
| 1340 |
-
|
| 1341 |
-
|
| 1342 |
-
|
| 1343 |
-
|
| 1344 |
-
|
| 1345 |
-
const fs = require("node:fs");
|
| 1346 |
-
|
| 1347 |
-
// Match hermes-web-ui CLI: DB at $HERMES_WEB_UI_HOME or $HOME/.hermes-web-ui/hermes-web-ui.db
|
| 1348 |
-
const WEB_UI_HOME = process.env.HERMES_WEB_UI_HOME?.trim()
|
| 1349 |
-
|| path.join(os.homedir(), ".hermes-web-ui");
|
| 1350 |
-
const DB_FILE = path.join(WEB_UI_HOME, "hermes-web-ui.db");
|
| 1351 |
-
|
| 1352 |
-
function hashPassword(password) {
|
| 1353 |
-
const salt = randomBytes(16).toString("hex");
|
| 1354 |
-
const hash = scryptSync(password, salt, 64).toString("hex");
|
| 1355 |
-
return "scrypt:" + salt + ":" + hash;
|
| 1356 |
-
}
|
| 1357 |
-
|
| 1358 |
-
if (!fs.existsSync(DB_FILE)) {
|
| 1359 |
-
console.error("DB not found: " + DB_FILE);
|
| 1360 |
-
process.exit(1);
|
| 1361 |
-
}
|
| 1362 |
-
|
| 1363 |
-
const db = new DatabaseSync(DB_FILE);
|
| 1364 |
-
|
| 1365 |
-
// Force recreate users table to fix any schema corruption
|
| 1366 |
-
db.exec("DROP TABLE IF EXISTS users");
|
| 1367 |
-
db.exec("CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL UNIQUE, password_hash TEXT NOT NULL, role TEXT NOT NULL DEFAULT 'admin', status TEXT NOT NULL DEFAULT 'active', created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, last_login_at INTEGER)");
|
| 1368 |
-
|
| 1369 |
-
const now = Date.now();
|
| 1370 |
-
db.prepare("INSERT INTO users (username, password_hash, role, status, created_at, updated_at) VALUES (?, ?, 'super_admin', 'active', ?, ?)")
|
| 1371 |
-
.run("Gendle", hashPassword("hm951753"), now, now);
|
| 1372 |
|
| 1373 |
-
|
| 1374 |
-
|
| 1375 |
-
|
| 1376 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1377 |
)
|
| 1378 |
|
| 1379 |
-
#
|
| 1380 |
-
for i in $(seq 1
|
| 1381 |
-
if
|
|
|
|
|
|
|
|
|
|
| 1382 |
break
|
| 1383 |
fi
|
| 1384 |
-
if [ "$i" -lt
|
| 1385 |
-
|
| 1386 |
-
sleep 5
|
| 1387 |
else
|
| 1388 |
-
echo " ⚠️
|
| 1389 |
fi
|
| 1390 |
done
|
| 1391 |
|
| 1392 |
-
echo " 🔑 登录凭据: Gendle / hm951753"
|
| 1393 |
-
|
| 1394 |
# 再次验证模型配置(BFF 启动可能修改 config.yaml)
|
| 1395 |
if [ -f "$CONFIG_FILE" ]; then
|
| 1396 |
if command -v yq &>/dev/null; then
|
|
|
|
| 1331 |
echo " ⚠️ Image Proxy 未就绪,Web UI 可能不可用"
|
| 1332 |
fi
|
| 1333 |
|
| 1334 |
+
# ==================== 设置自定义用户凭据 ====================
|
| 1335 |
+
# 策略:通过 BFF API 修改凭据(不使用直接 SQLite 操作,避免 BFF 进程内缓存不一致)
|
| 1336 |
+
echo "🔐 配置用户凭据..."
|
| 1337 |
+
sleep 3
|
| 1338 |
+
|
| 1339 |
+
# Step 1: 先确保默认凭据存在(BFF 可能还没创建)
|
| 1340 |
+
# 使用 hermes-web-ui CLI 重置默认登录(确保 admin/123456 存在)
|
| 1341 |
+
if [ -f "/opt/hermes-web-ui/node_modules/.bin/hermes-web-ui" ]; then
|
| 1342 |
+
echo " 🔄 确保默认凭据就绪..."
|
| 1343 |
+
node /opt/hermes-web-ui/node_modules/.bin/hermes-web-ui reset-default-login 2>/dev/null || true
|
| 1344 |
+
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1345 |
|
| 1346 |
+
# Step 2: 使用 AUTH_TOKEN 修改用户名和密码
|
| 1347 |
+
# 先登录获取 token,然后通过 API 修改
|
| 1348 |
+
CRED_CURL=$(cat <<'CURLSCRIPT'
|
| 1349 |
+
#!/bin/bash
|
| 1350 |
+
# 登录获取 token
|
| 1351 |
+
LOGIN_RESP=$(curl -sf -X POST http://127.0.0.1:7861/api/auth/login \
|
| 1352 |
+
-H "Content-Type: application/json" \
|
| 1353 |
+
-d '{"username":"admin","password":"123456"}' 2>/dev/null)
|
| 1354 |
+
LOGIN_TOKEN=$(echo "$LOGIN_RESP" | node -e "process.stdin.on('data',d=>{try{console.log(JSON.parse(d).token)}catch(e){console.log('')}})")
|
| 1355 |
+
|
| 1356 |
+
if [ -n "$LOGIN_TOKEN" ]; then
|
| 1357 |
+
echo " ✅ 已登录 (admin),正在修改凭据..."
|
| 1358 |
+
|
| 1359 |
+
# 修改用户名
|
| 1360 |
+
curl -sf -X POST http://127.0.0.1:7861/api/auth/change-username \
|
| 1361 |
+
-H "Content-Type: application/json" \
|
| 1362 |
+
-H "Authorization: Bearer $LOGIN_TOKEN" \
|
| 1363 |
+
-d '{"currentPassword":"123456","newUsername":"Gendle"}' >/dev/null 2>&1
|
| 1364 |
+
if [ $? -eq 0 ]; then
|
| 1365 |
+
echo " ✅ 用户名已改为 Gendle"
|
| 1366 |
+
fi
|
| 1367 |
+
|
| 1368 |
+
# 修改密码
|
| 1369 |
+
curl -sf -X POST http://127.0.0.1:7861/api/auth/change-password \
|
| 1370 |
+
-H "Content-Type: application/json" \
|
| 1371 |
+
-H "Authorization: Bearer $LOGIN_TOKEN" \
|
| 1372 |
+
-d '{"currentPassword":"123456","newPassword":"hm951753"}' >/dev/null 2>&1
|
| 1373 |
+
if [ $? -eq 0 ]; then
|
| 1374 |
+
echo " ✅ 密码已改为 hm951753"
|
| 1375 |
+
fi
|
| 1376 |
+
|
| 1377 |
+
echo " ✅ 凭据配置完成: Gendle / hm951753"
|
| 1378 |
+
else
|
| 1379 |
+
echo " ⚠️ 默认 admin 登录失败,尝试通过 AUTH_TOKEN 设置..."
|
| 1380 |
+
# Fallback: 重置默认登录后尝试
|
| 1381 |
+
sleep 2
|
| 1382 |
+
LOGIN_RESP2=$(curl -sf -X POST http://127.0.0.1:7861/api/auth/login \
|
| 1383 |
+
-H "Content-Type: application/json" \
|
| 1384 |
+
-d '{"username":"admin","password":"123456"}' 2>/dev/null)
|
| 1385 |
+
LOGIN_TOKEN2=$(echo "$LOGIN_RESP2" | node -e "process.stdin.on('data',d=>{try{console.log(JSON.parse(d).token)}catch(e){console.log('')}})")
|
| 1386 |
+
if [ -n "$LOGIN_TOKEN2" ]; then
|
| 1387 |
+
curl -sf -X POST http://127.0.0.1:7861/api/auth/change-username \
|
| 1388 |
+
-H "Content-Type: application/json" \
|
| 1389 |
+
-H "Authorization: Bearer $LOGIN_TOKEN2" \
|
| 1390 |
+
-d '{"currentPassword":"123456","newUsername":"Gendle"}' >/dev/null 2>&1
|
| 1391 |
+
curl -sf -X POST http://127.0.0.1:7861/api/auth/change-password \
|
| 1392 |
+
-H "Content-Type: application/json" \
|
| 1393 |
+
-H "Authorization: Bearer $LOGIN_TOKEN2" \
|
| 1394 |
+
-d '{"currentPassword":"123456","newPassword":"hm951753"}' >/dev/null 2>&1
|
| 1395 |
+
echo " ✅ 凭据配置完成: Gendle / hm951753"
|
| 1396 |
+
else
|
| 1397 |
+
echo " ⚠️ 无法修改凭据,请稍后在 Web 设置中手动修改"
|
| 1398 |
+
fi
|
| 1399 |
+
fi
|
| 1400 |
+
CURLSCRIPT
|
| 1401 |
)
|
| 1402 |
|
| 1403 |
+
# 等待 BFF 就绪后执行
|
| 1404 |
+
for i in $(seq 1 10); do
|
| 1405 |
+
if curl -sf http://127.0.0.1:7861/health >/dev/null 2>&1; then
|
| 1406 |
+
echo " 🔗 BFF 已就绪,开始配置凭据..."
|
| 1407 |
+
sleep 3 # 给 BFF 一些时间完成初始化
|
| 1408 |
+
bash -c "$CRED_CURL"
|
| 1409 |
break
|
| 1410 |
fi
|
| 1411 |
+
if [ "$i" -lt 10 ]; then
|
| 1412 |
+
sleep 3
|
|
|
|
| 1413 |
else
|
| 1414 |
+
echo " ⚠️ BFF 未在 30 秒内就绪"
|
| 1415 |
fi
|
| 1416 |
done
|
| 1417 |
|
|
|
|
|
|
|
| 1418 |
# 再次验证模型配置(BFF 启动可能修改 config.yaml)
|
| 1419 |
if [ -f "$CONFIG_FILE" ]; then
|
| 1420 |
if command -v yq &>/dev/null; then
|