Upload entrypoint.sh with huggingface_hub
Browse files- entrypoint.sh +28 -74
entrypoint.sh
CHANGED
|
@@ -1331,96 +1331,50 @@ else
|
|
| 1331 |
echo " ⚠️ Image Proxy 未就绪,Web UI 可能不可用"
|
| 1332 |
fi
|
| 1333 |
|
| 1334 |
-
# ====================
|
| 1335 |
-
#
|
| 1336 |
-
|
|
|
|
| 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 |
-
#
|
| 1351 |
-
|
| 1352 |
-
|
| 1353 |
-
|
| 1354 |
-
|
| 1355 |
-
|
| 1356 |
-
|
| 1357 |
-
|
| 1358 |
-
|
| 1359 |
-
const
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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
|
| 1363 |
-
const ph='scrypt:'+s+':'+
|
| 1364 |
-
const e=db.prepare('SELECT id FROM users WHERE username=?').get('admin');
|
| 1365 |
const n=Date.now();
|
| 1366 |
-
|
| 1367 |
-
|
|
|
|
| 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
|