修复 103 登录:API/5174 监听 0.0.0.0,preview 反代 /auth 到 8085。

105 nginx 需能访问 Studio 端口;5174 直连时也需把鉴权请求转发到 Admin API。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
john
2026-06-26 12:42:03 +08:00
parent deb3f031fd
commit 1d54706b7c
3 changed files with 39 additions and 7 deletions
+12 -4
View File
@@ -27,6 +27,12 @@ BASE_PATH="${VITE_BASE_PATH:-/ops}"
if [[ "${BASE_PATH}" != */ ]]; then if [[ "${BASE_PATH}" != */ ]]; then
BASE_PATH="${BASE_PATH}/" BASE_PATH="${BASE_PATH}/"
fi fi
API_HOST="${ADM_API_HOST:-127.0.0.1}"
WEB_HOST="${ADM_WEB_HOST:-${API_HOST}}"
export ADM_API_HOST="${API_HOST}"
export ADM_WEB_HOST="${WEB_HOST}"
export ADM_PORT="${PORT}"
export VITE_BASE_PATH="${BASE_PATH%/}"
if [[ ! -d dist ]]; then if [[ ! -d dist ]]; then
echo "${ROOT}/dist 不存在,请先构建或 rsync dist" >&2 echo "${ROOT}/dist 不存在,请先构建或 rsync dist" >&2
@@ -52,7 +58,7 @@ lsof -ti "TCP:${PORT}" -sTCP:LISTEN 2>/dev/null | xargs kill -9 2>/dev/null || t
lsof -ti "TCP:${API_PORT}" -sTCP:LISTEN 2>/dev/null | xargs kill -9 2>/dev/null || true lsof -ti "TCP:${API_PORT}" -sTCP:LISTEN 2>/dev/null | xargs kill -9 2>/dev/null || true
sleep 1 sleep 1
echo "==> 启动 Admin API @ 127.0.0.1:${API_PORT}..." echo "==> 启动 Admin API @ ${API_HOST}:${API_PORT}..."
nohup node server/index.mjs >>"${API_LOG}" 2>&1 & nohup node server/index.mjs >>"${API_LOG}" 2>&1 &
echo $! >"${API_PID_FILE}" echo $! >"${API_PID_FILE}"
sleep 2 sleep 2
@@ -63,15 +69,17 @@ if ! curl -sf "http://127.0.0.1:${API_PORT}/health" >/dev/null; then
exit 1 exit 1
fi fi
echo "==> 启动 vite preview @ 127.0.0.1:${PORT} (base=${BASE_PATH})..." echo "==> 启动 vite preview @ ${WEB_HOST}:${PORT} (base=${BASE_PATH})..."
nohup npx vite preview --host 127.0.0.1 --port "${PORT}" --base "${BASE_PATH}" --outDir dist >>"${LOG}" 2>&1 & nohup npx vite preview --config scripts/vite-preview.config.mjs >>"${LOG}" 2>&1 &
echo $! >"${PID_FILE}" echo $! >"${PID_FILE}"
sleep 2 sleep 2
preview_url="http://127.0.0.1:${PORT}${BASE_PATH}" preview_url="http://127.0.0.1:${PORT}${BASE_PATH}"
if curl -sf "${preview_url}" >/dev/null; then login_probe="http://127.0.0.1:${PORT}/auth/status"
if curl -sf "${preview_url}" >/dev/null && curl -sf "${login_probe}" >/dev/null; then
echo "✅ memind_adm 已就绪: ${preview_url}" echo "✅ memind_adm 已就绪: ${preview_url}"
curl -sf "${preview_url}" >/dev/null && echo " 首页 OK" curl -sf "${preview_url}" >/dev/null && echo " 首页 OK"
echo " /auth 反代 OK"
echo " 登录请使用数据库中已初始化的 admin 账号" echo " 登录请使用数据库中已初始化的 admin 账号"
else else
echo "❌ 启动失败,最近日志:" >&2 echo "❌ 启动失败,最近日志:" >&2
+23
View File
@@ -0,0 +1,23 @@
import { defineConfig, loadEnv } from 'vite';
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd(), '');
const backend = env.ADM_DEV_BACKEND ?? 'http://127.0.0.1:8085';
const basePath = env.VITE_BASE_PATH?.trim() || '/ops';
const base = basePath.endsWith('/') ? basePath : `${basePath}/`;
return {
base,
preview: {
host: env.ADM_WEB_HOST ?? env.ADM_API_HOST ?? '127.0.0.1',
port: Number(env.ADM_PORT ?? 5174),
strictPort: true,
allowedHosts: ['gadm.tkmind.cn', 'localhost', '127.0.0.1', '10.10.0.2', '58.38.22.103'],
proxy: {
'/api': backend,
'/auth': backend,
'/admin-api': backend,
},
},
};
});
+4 -3
View File
@@ -131,16 +131,17 @@ ready
resolveCookieDomainForRequest, resolveCookieDomainForRequest,
}); });
const app = createAdminApp(services); const app = createAdminApp(services);
const server = app.listen(port, '127.0.0.1', () => { const host = process.env.ADM_API_HOST?.trim() || '127.0.0.1';
const server = app.listen(port, host, () => {
writePidFile(); writePidFile();
console.log(`TKMind Admin API @ http://127.0.0.1:${port}`); console.log(`TKMind Admin API @ http://${host}:${port}`);
}); });
server.on('close', removePidFile); server.on('close', removePidFile);
server.on('error', (err) => { server.on('error', (err) => {
if (err?.code === 'EADDRINUSE') { if (err?.code === 'EADDRINUSE') {
const owner = lookupPortOwner(port); const owner = lookupPortOwner(port);
console.error( console.error(
`Admin API 无法启动:127.0.0.1:${port} 已被占用${owner ? `,当前占用者是 ${owner}` : ''}`, `Admin API 无法启动:${host}:${port} 已被占用${owner ? `,当前占用者是 ${owner}` : ''}`,
); );
console.error(`如需重启,可先停止旧进程,或修改 .env 中的 ADM_API_PORT。`); console.error(`如需重启,可先停止旧进程,或修改 .env 中的 ADM_API_PORT。`);
} else { } else {