Gendle commited on
Commit
df0ee84
·
verified ·
1 Parent(s): a0978fc

Upload entrypoint.sh with huggingface_hub

Browse files
Files changed (1) hide show
  1. entrypoint.sh +75 -51
entrypoint.sh CHANGED
@@ -1331,66 +1331,90 @@ else
1331
  echo " ⚠️ Image Proxy 未就绪,Web UI 可能不可用"
1332
  fi
1333
 
1334
- # ==================== 设置默认用户凭据 ====================
1335
- echo "🔐 配置默认用户凭据 (Gendle/hm951753)..."
1336
-
1337
- # 等待 BFF 初始化完成并创建数据库
1338
- sleep 5
1339
-
1340
- SETUP_CREDENTIALS=$(cat <<'CREDSCRIPT'
1341
- const { DatabaseSync } = require("node:sqlite");
1342
- const { randomBytes, scryptSync } = require("node:crypto");
1343
- const os = require("node:os");
1344
- const path = require("node:path");
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
- var users = db.prepare("SELECT username, role FROM users").all();
1374
- console.log("Users: " + JSON.stringify(users));
1375
- db.close();
1376
- CREDSCRIPT
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1377
  )
1378
 
1379
- # Wait for BFF to fully initialize (DB might not exist immediately)
1380
- for i in $(seq 1 6); do
1381
- if echo "$SETUP_CREDENTIALS" | node - 2>/dev/null; then
 
 
 
1382
  break
1383
  fi
1384
- if [ "$i" -lt 6 ]; then
1385
- echo " ⏳ 等待 BFF 初始化... ($i/6)"
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