From 1d54706b7c1c8dacc3ec4cf736230c30fef85593 Mon Sep 17 00:00:00 2001 From: john Date: Fri, 26 Jun 2026 12:42:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20103=20=E7=99=BB=E5=BD=95?= =?UTF-8?q?=EF=BC=9AAPI/5174=20=E7=9B=91=E5=90=AC=200.0.0.0=EF=BC=8Cprevie?= =?UTF-8?q?w=20=E5=8F=8D=E4=BB=A3=20/auth=20=E5=88=B0=208085=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 105 nginx 需能访问 Studio 端口;5174 直连时也需把鉴权请求转发到 Admin API。 Co-authored-by: Cursor --- scripts/remote_restart.sh | 16 ++++++++++++---- scripts/vite-preview.config.mjs | 23 +++++++++++++++++++++++ server/index.mjs | 7 ++++--- 3 files changed, 39 insertions(+), 7 deletions(-) create mode 100644 scripts/vite-preview.config.mjs diff --git a/scripts/remote_restart.sh b/scripts/remote_restart.sh index 5cf84a9..3125976 100755 --- a/scripts/remote_restart.sh +++ b/scripts/remote_restart.sh @@ -27,6 +27,12 @@ BASE_PATH="${VITE_BASE_PATH:-/ops}" if [[ "${BASE_PATH}" != */ ]]; then BASE_PATH="${BASE_PATH}/" 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 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 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 & echo $! >"${API_PID_FILE}" sleep 2 @@ -63,15 +69,17 @@ if ! curl -sf "http://127.0.0.1:${API_PORT}/health" >/dev/null; then exit 1 fi -echo "==> 启动 vite preview @ 127.0.0.1:${PORT} (base=${BASE_PATH})..." -nohup npx vite preview --host 127.0.0.1 --port "${PORT}" --base "${BASE_PATH}" --outDir dist >>"${LOG}" 2>&1 & +echo "==> 启动 vite preview @ ${WEB_HOST}:${PORT} (base=${BASE_PATH})..." +nohup npx vite preview --config scripts/vite-preview.config.mjs >>"${LOG}" 2>&1 & echo $! >"${PID_FILE}" sleep 2 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}" curl -sf "${preview_url}" >/dev/null && echo " 首页 OK" + echo " /auth 反代 OK" echo " 登录请使用数据库中已初始化的 admin 账号" else echo "❌ 启动失败,最近日志:" >&2 diff --git a/scripts/vite-preview.config.mjs b/scripts/vite-preview.config.mjs new file mode 100644 index 0000000..d4c8084 --- /dev/null +++ b/scripts/vite-preview.config.mjs @@ -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, + }, + }, + }; +}); diff --git a/server/index.mjs b/server/index.mjs index fbe3b33..f66bd33 100644 --- a/server/index.mjs +++ b/server/index.mjs @@ -131,16 +131,17 @@ ready resolveCookieDomainForRequest, }); 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(); - 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('error', (err) => { if (err?.code === 'EADDRINUSE') { const owner = lookupPortOwner(port); console.error( - `Admin API 无法启动:127.0.0.1:${port} 已被占用${owner ? `,当前占用者是 ${owner}` : ''}。`, + `Admin API 无法启动:${host}:${port} 已被占用${owner ? `,当前占用者是 ${owner}` : ''}。`, ); console.error(`如需重启,可先停止旧进程,或修改 .env 中的 ADM_API_PORT。`); } else {