Upload entrypoint.sh with huggingface_hub
Browse files- entrypoint.sh +70 -64
entrypoint.sh
CHANGED
|
@@ -1332,88 +1332,94 @@ else
|
|
| 1332 |
fi
|
| 1333 |
|
| 1334 |
# ==================== 设置自定义用户凭据 ====================
|
| 1335 |
-
# 策略:通过 BFF API 修改凭据(
|
| 1336 |
echo "🔐 配置用户凭据..."
|
| 1337 |
sleep 3
|
| 1338 |
|
| 1339 |
-
#
|
| 1340 |
-
|
| 1341 |
-
|
| 1342 |
-
|
| 1343 |
-
|
| 1344 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1345 |
|
| 1346 |
-
#
|
| 1347 |
-
|
| 1348 |
-
|
| 1349 |
-
|
| 1350 |
-
|
| 1351 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1352 |
-H "Content-Type: application/json" \
|
| 1353 |
-
-d '{"username":"admin","password":"123456"}' 2>/dev/null
|
| 1354 |
-
|
| 1355 |
|
| 1356 |
-
if [ -n "$
|
| 1357 |
-
echo " ✅ 已
|
| 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 $
|
| 1372 |
-d '{"currentPassword":"123456","newPassword":"hm951753"}' >/dev/null 2>&1
|
| 1373 |
-
|
| 1374 |
-
echo " ✅ 密码已改为 hm951753"
|
| 1375 |
-
fi
|
| 1376 |
|
| 1377 |
-
|
| 1378 |
-
|
| 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":"
|
| 1385 |
-
|
| 1386 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 $
|
| 1390 |
-
-d '{"currentPassword":"
|
| 1391 |
-
|
|
|
|
|
|
|
|
|
|
| 1392 |
-H "Content-Type: application/json" \
|
| 1393 |
-
-
|
| 1394 |
-
-
|
| 1395 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1396 |
else
|
| 1397 |
-
echo " ⚠️
|
| 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
|
|
|
|
| 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
|