Gendle commited on
Commit
ab71ac4
·
verified ·
1 Parent(s): f941ea6

Upload entrypoint.sh with huggingface_hub

Browse files
Files changed (1) hide show
  1. entrypoint.sh +28 -74
entrypoint.sh CHANGED
@@ -1331,96 +1331,50 @@ else
1331
  echo " ⚠️ Image Proxy 未就绪,Web UI 可能不可用"
1332
  fi
1333
 
1334
- # ==================== 设置自定义用户凭据 ====================
1335
- # 策略:通过 BFF API 修改凭据先改密码,再改用户名
1336
- echo "🔐 配凭据..."
 
1337
  sleep 3
1338
 
1339
  # 等待 BFF 就绪
1340
- echo " 🔗 等待 BFF 就绪..."
1341
  for i in $(seq 1 15); do
1342
  if curl -sf http://127.0.0.1:7861/health >/dev/null 2>&1; then
1343
- echo " ✅ BFF 已就绪"
1344
- sleep 3
1345
  break
1346
  fi
1347
  [ "$i" -lt 15 ] && sleep 2
1348
  done
1349
 
1350
- # 确保 admin/123456 默认凭据存在
1351
- echo " 🔄 重置默认凭据..."
1352
- node -e "
1353
- const{DatabaseSync}=require('node:sqlite');
1354
- const{randomBytes,scryptSync}=require('node:crypto');
1355
- const os=require('node:os'),p=require('node:path'),fs=require('node:fs');
1356
- const h=process.env.HERMES_WEB_UI_HOME?.trim()||p.join(os.homedir(),'.hermes-web-ui');
1357
- const f=p.join(h,'hermes-web-ui.db');
1358
- if(!fs.existsSync(f)){process.exit(1)}
1359
- const db=new DatabaseSync(f);
 
 
 
 
 
1360
  db.exec('CREATE TABLE IF NOT EXISTS 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)');
1361
  const s=randomBytes(16).toString('hex');
1362
- const hash=scryptSync('123456',s,64).toString('hex');
1363
- const ph='scrypt:'+s+':'+hash;
1364
- const e=db.prepare('SELECT id FROM users WHERE username=?').get('admin');
1365
  const n=Date.now();
1366
- if(e?.id){db.prepare('UPDATE users SET password_hash=?,role=\"super_admin\",status=\"active\",updated_at=? WHERE id=?').run(ph,n,e.id)}
1367
- else{db.prepare('INSERT INTO users(username,password_hash,role,status,created_at,updated_at) VALUES(?,?,\"super_admin\",\"active\",?,?)').run('admin',ph,n,n)}
 
1368
  db.close()
1369
- " 2>/dev/null && echo " ✅ 默认凭据已就绪" || echo " ⚠️ 默认凭据设置可能失败"
1370
-
1371
- sleep 2
1372
-
1373
- # Step 1: 登录 admin/123456
1374
- TOKEN=$(curl -sf -X POST http://127.0.0.1:7861/api/auth/login \
1375
- -H "Content-Type: application/json" \
1376
- -d '{"username":"admin","password":"123456"}' 2>/dev/null | \
1377
- node -e "let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{try{console.log(JSON.parse(d).token)}catch(e){}})" 2>/dev/null)
1378
-
1379
- if [ -n "$TOKEN" ]; then
1380
- echo " ✅ 管理令牌已获取"
1381
-
1382
- # Step 2: 先改密码
1383
- curl -sf -X POST http://127.0.0.1:7861/api/auth/change-password \
1384
- -H "Content-Type: application/json" \
1385
- -H "Authorization: Bearer $TOKEN" \
1386
- -d '{"currentPassword":"123456","newPassword":"hm951753"}' >/dev/null 2>&1
1387
- sleep 1
1388
-
1389
- # 重新登录验证密码
1390
- TOKEN2=$(curl -sf -X POST http://127.0.0.1:7861/api/auth/login \
1391
- -H "Content-Type: application/json" \
1392
- -d '{"username":"admin","password":"hm951753"}' 2>/dev/null | \
1393
- node -e "let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{try{console.log(JSON.parse(d).token)}catch(e){}})" 2>/dev/null)
1394
-
1395
- if [ -n "$TOKEN2" ]; then
1396
- echo " ✅ 密码已修改"
1397
-
1398
- # Step 3: 改用户名
1399
- curl -sf -X POST http://127.0.0.1:7861/api/auth/change-username \
1400
- -H "Content-Type: application/json" \
1401
- -H "Authorization: Bearer $TOKEN2" \
1402
- -d '{"currentPassword":"hm951753","newUsername":"Gendle"}' >/dev/null 2>&1
1403
- sleep 1
1404
-
1405
- # Step 4: 最终验证
1406
- TOKEN3=$(curl -sf -X POST http://127.0.0.1:7861/api/auth/login \
1407
- -H "Content-Type: application/json" \
1408
- -d '{"username":"Gendle","password":"hm951753"}' 2>/dev/null | \
1409
- node -e "let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{try{console.log(JSON.parse(d).token)}catch(e){}})" 2>/dev/null)
1410
-
1411
- if [ -n "$TOKEN3" ]; then
1412
- echo " ✅ 凭据配置完成: Gendle / hm951753"
1413
- else
1414
- echo " ⚠️ 最终验证失败,请手动测试登录"
1415
- fi
1416
- else
1417
- echo " ⚠️ 密码修改后无法重新登录"
1418
- fi
1419
- else
1420
- echo " ⚠️ admin 登录失败,凭据配置未完成"
1421
- echo " 💡 请使用默认凭据 admin/123456 登录后自行修改"
1422
  fi
1423
 
 
 
 
1424
  # 再次验证模型配置(BFF 启动可能修改 config.yaml)
1425
  if [ -f "$CONFIG_FILE" ]; then
1426
  if command -v yq &>/dev/null; then
 
1331
  echo " ⚠️ Image Proxy 未就绪,Web UI 可能不可用"
1332
  fi
1333
 
1334
+ # ==================== 确保默认凭据可用 ====================
1335
+ # 使用 hermes-web-ui CLI 重置默认登录admin/123456
1336
+ # 登录后可在" → 账户"中修改用户名和密码
1337
+ echo "🔐 确保默认凭据可用 (admin/123456)..."
1338
  sleep 3
1339
 
1340
  # 等待 BFF 就绪
 
1341
  for i in $(seq 1 15); do
1342
  if curl -sf http://127.0.0.1:7861/health >/dev/null 2>&1; then
 
 
1343
  break
1344
  fi
1345
  [ "$i" -lt 15 ] && sleep 2
1346
  done
1347
 
1348
+ # 使用 CLI 重置默认凭据(可靠,由 hermes-web-ui 自己管理)
1349
+ HERMES_CLI="/opt/hermes-web-ui/node_modules/.bin/hermes-web-ui"
1350
+ if [ -f "$HERMES_CLI" ]; then
1351
+ node "$HERMES_CLI" reset-default-login 2>/dev/null && \
1352
+ echo " ✅ 默认凭据已就绪" || \
1353
+ echo " ⚠️ CLI 重置失败"
1354
+ else
1355
+ echo " ⚠️ CLI 未找到,使用内联脚本..."
1356
+ node -e "
1357
+ const{DatabaseSync}=require('node:sqlite');const{randomBytes,scryptSync}=require('node:crypto');
1358
+ const o=require('node:os'),p=require('node:path'),fs=require('node:fs');
1359
+ const h=process.env.HERMES_WEB_UI_HOME?.trim()||p.join(o.homedir(),'.hermes-web-ui');
1360
+ const d=p.join(h,'hermes-web-ui.db');
1361
+ if(!fs.existsSync(d)){process.exit(1)}
1362
+ const db=new DatabaseSync(d);
1363
  db.exec('CREATE TABLE IF NOT EXISTS 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)');
1364
  const s=randomBytes(16).toString('hex');
1365
+ const h2=scryptSync('123456',s,64).toString('hex');
1366
+ const ph='scrypt:'+s+':'+h2;
 
1367
  const n=Date.now();
1368
+ const e=db.prepare('SELECT id FROM users WHERE username=?').get('admin');
1369
+ if(e?.id){db.prepare('UPDATE users SET password_hash=?,role=\"super_admin\",updated_at=? WHERE id=?').run(ph,n,e.id)}
1370
+ else{db.prepare('INSERT INTO users(username,password_hash,role,status,created_at,updated_at) VALUES(\"admin\",?,\"super_admin\",\"active\",?,?)').run(ph,n,n)}
1371
  db.close()
1372
+ " 2>/dev/null && echo " ✅ 默认凭据已就绪" || echo " ⚠️ 内联脚本失败"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1373
  fi
1374
 
1375
+ echo " 🔑 默认登录: admin / 123456"
1376
+ echo " 💡 登录后请在 "设置 → 账户" 中修改用户名和密码"
1377
+
1378
  # 再次验证模型配置(BFF 启动可能修改 config.yaml)
1379
  if [ -f "$CONFIG_FILE" ]; then
1380
  if command -v yq &>/dev/null; then