chore: consolidate admin cleanup and colima config
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# gadm.tkmind.cn → memind_adm(vite preview :5174 + Admin API :8085)
|
||||
# md.tkmind.cn → memind_adm(vite preview :5174 + Admin API :8085)
|
||||
# 生产 nginx 需把 /ops/ 反代到 5174,勿再指向 Memind/ops dev server
|
||||
:8091 {
|
||||
reverse_proxy 127.0.0.1:5174 {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# gadm.tkmind.cn @ 105 nginx → Studio LAN 10.10.0.2(fallback 58.38.22.103)
|
||||
# md.tkmind.cn @ 105 nginx → Studio LAN 10.10.0.2(fallback 58.38.22.103)
|
||||
# memind_adm: preview :5174, Admin API :8085(根路径部署,/ 直达后台)
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name gadm.tkmind.cn;
|
||||
server_name md.tkmind.cn;
|
||||
|
||||
location /.well-known/acme-challenge/ {
|
||||
root /var/www/certbot;
|
||||
@@ -18,9 +18,9 @@ server {
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
server_name gadm.tkmind.cn;
|
||||
ssl_certificate /etc/letsencrypt/live/gadm.tkmind.cn/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/gadm.tkmind.cn/privkey.pem;
|
||||
server_name md.tkmind.cn;
|
||||
ssl_certificate /etc/letsencrypt/live/md.tkmind.cn/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/md.tkmind.cn/privkey.pem;
|
||||
include /etc/letsencrypt/options-ssl-nginx.conf;
|
||||
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# gadm.tkmind.cn — memind_adm 独立管理端(替换原 Memind /ops Vite dev)
|
||||
# md.tkmind.cn — memind_adm 独立管理端(替换原 Memind /ops Vite dev)
|
||||
#
|
||||
# 前置:100 服务器 remote_restart.sh 已启动
|
||||
# Admin API: 127.0.0.1:8085
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name gadm.tkmind.cn;
|
||||
server_name md.tkmind.cn;
|
||||
|
||||
# ssl_certificate ...;
|
||||
|
||||
|
||||
@@ -4,24 +4,27 @@ set -euo pipefail
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
PORT="${ADM_PORT:-5174}"
|
||||
API_PORT="${ADM_API_PORT:-8085}"
|
||||
NODE_PATH="${LOCAL_NODE_PATH:-/opt/homebrew/opt/node@24/bin:/opt/homebrew/opt/node@22/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin}"
|
||||
NODE_BIN="${NODE_BIN:-/opt/homebrew/opt/node@24/bin/node}"
|
||||
LOG="${ROOT}/adm-preview.log"
|
||||
API_LOG="${ROOT}/adm-api.log"
|
||||
PID_FILE="${ROOT}/.adm-preview.pid"
|
||||
API_PID_FILE="${ROOT}/.adm-api.pid"
|
||||
|
||||
export PATH="${NODE_PATH}:${PATH}"
|
||||
command -v node >/dev/null 2>&1 || { echo "❌ 未找到 node" >&2; exit 1; }
|
||||
[[ -x "${NODE_BIN}" ]] || { echo "❌ NODE_BIN 不可执行: ${NODE_BIN}" >&2; exit 1; }
|
||||
NODE_DIR="$(dirname "${NODE_BIN}")"
|
||||
export PATH="${NODE_DIR}:${PATH}"
|
||||
NPM_BIN="${NPM_BIN:-${NODE_DIR}/npm}"
|
||||
[[ -x "${NPM_BIN}" ]] || { echo "❌ NPM_BIN 不可执行: ${NPM_BIN}" >&2; exit 1; }
|
||||
|
||||
cd "${ROOT}"
|
||||
|
||||
if [[ ! -d node_modules ]]; then
|
||||
echo "==> 安装依赖..."
|
||||
npm install
|
||||
"${NPM_BIN}" install
|
||||
fi
|
||||
|
||||
echo "==> 本机构建..."
|
||||
npm run build
|
||||
"${NPM_BIN}" run build
|
||||
|
||||
echo "==> 停止旧进程 (port ${PORT}, ${API_PORT})..."
|
||||
lsof -ti "TCP:${PORT}" -sTCP:LISTEN 2>/dev/null | xargs kill 2>/dev/null || true
|
||||
@@ -32,7 +35,7 @@ lsof -ti "TCP:${API_PORT}" -sTCP:LISTEN 2>/dev/null | xargs kill -9 2>/dev/null
|
||||
rm -f "${PID_FILE}" "${API_PID_FILE}"
|
||||
|
||||
echo "==> 启动本机 Admin API @ 127.0.0.1:${API_PORT}..."
|
||||
nohup node server/index.mjs >>"${API_LOG}" 2>&1 &
|
||||
nohup "${NODE_BIN}" server/index.mjs >>"${API_LOG}" 2>&1 &
|
||||
echo $! >"${API_PID_FILE}"
|
||||
sleep 2
|
||||
|
||||
@@ -43,7 +46,7 @@ if ! curl -sf "http://127.0.0.1:${API_PORT}/health" >/dev/null; then
|
||||
fi
|
||||
|
||||
echo "==> 启动本机 vite preview @ 127.0.0.1:${PORT}..."
|
||||
nohup npm run dev:preview -- --host 127.0.0.1 --port "${PORT}" >>"${LOG}" 2>&1 &
|
||||
nohup "${NPM_BIN}" run dev:preview -- --host 127.0.0.1 --port "${PORT}" >>"${LOG}" 2>&1 &
|
||||
echo $! >"${PID_FILE}"
|
||||
sleep 2
|
||||
|
||||
|
||||
Executable
+15
@@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
|
||||
cd "${ROOT}"
|
||||
|
||||
set -a
|
||||
source "${ROOT}/.env"
|
||||
if [[ -f "${ROOT}/.env.colima" ]]; then
|
||||
source "${ROOT}/.env.colima"
|
||||
fi
|
||||
set +a
|
||||
|
||||
exec bash "${ROOT}/scripts/local_restart.sh"
|
||||
+10
-9
@@ -116,6 +116,10 @@ say "打包 Memind 共享模块到 memind-lib"
|
||||
rm -rf "${MEMIND_LIB}"
|
||||
mkdir -p "${MEMIND_LIB}"
|
||||
find "${MEMIND_SRC}" -maxdepth 1 -name '*.mjs' -exec cp -f {} "${MEMIND_LIB}/" \;
|
||||
# 同步技能目录(skills/ 下的 SKILL.md 是技能目录来源)
|
||||
if [[ -d "${MEMIND_SRC}/skills" ]]; then
|
||||
cp -a "${MEMIND_SRC}/skills" "${MEMIND_LIB}/"
|
||||
fi
|
||||
[[ -f "${MEMIND_LIB}/user-auth.mjs" ]] || {
|
||||
echo "memind-lib 缺少 user-auth.mjs" >&2
|
||||
exit 1
|
||||
@@ -225,15 +229,12 @@ done
|
||||
|
||||
say "安装运行依赖"
|
||||
cd "${RELEASE_DIR}"
|
||||
export PATH="/opt/homebrew/bin:/opt/homebrew/opt/node@24/bin:/opt/homebrew/opt/node@22/bin:/usr/local/bin:/usr/bin:/bin:${PATH}"
|
||||
if command -v npm >/dev/null 2>&1; then
|
||||
NPM_BIN="$(command -v npm)"
|
||||
elif [[ -x /opt/homebrew/opt/node@24/bin/npm ]]; then
|
||||
NPM_BIN="/opt/homebrew/opt/node@24/bin/npm"
|
||||
else
|
||||
echo "npm not found on remote" >&2
|
||||
exit 1
|
||||
fi
|
||||
NODE_BIN="${NODE_BIN:-/opt/homebrew/opt/node@24/bin/node}"
|
||||
[[ -x "${NODE_BIN}" ]] || { echo "NODE_BIN is not executable: ${NODE_BIN}" >&2; exit 1; }
|
||||
NODE_DIR="$(dirname "${NODE_BIN}")"
|
||||
export PATH="${NODE_DIR}:${PATH}"
|
||||
NPM_BIN="${NPM_BIN:-${NODE_DIR}/npm}"
|
||||
[[ -x "${NPM_BIN}" ]] || { echo "NPM_BIN is not executable: ${NPM_BIN}" >&2; exit 1; }
|
||||
if [[ -f package-lock.json ]]; then
|
||||
"${NPM_BIN}" ci --no-audit --no-fund
|
||||
else
|
||||
|
||||
@@ -4,15 +4,18 @@ set -euo pipefail
|
||||
|
||||
ROOT="${ADM_ROOT:-/Users/john/Project/memind_adm}"
|
||||
PORT="${ADM_PORT:-5174}"
|
||||
NODE_PATH="${LAN_NODE_PATH:-/opt/homebrew/opt/node@24/bin:/opt/homebrew/opt/node@22/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin}"
|
||||
NODE_BIN="${NODE_BIN:-/opt/homebrew/opt/node@24/bin/node}"
|
||||
API_PORT="${ADM_API_PORT:-8085}"
|
||||
LOG="${ROOT}/adm-preview.log"
|
||||
API_LOG="${ROOT}/adm-api.log"
|
||||
PID_FILE="${ROOT}/.adm-preview.pid"
|
||||
API_PID_FILE="${ROOT}/.adm-api.pid"
|
||||
|
||||
export PATH="${NODE_PATH}:${PATH}"
|
||||
command -v node >/dev/null 2>&1 || { echo "❌ 未找到 node" >&2; exit 1; }
|
||||
[[ -x "${NODE_BIN}" ]] || { echo "❌ NODE_BIN 不可执行: ${NODE_BIN}" >&2; exit 1; }
|
||||
NODE_DIR="$(dirname "${NODE_BIN}")"
|
||||
export PATH="${NODE_DIR}:${PATH}"
|
||||
NPM_BIN="${NPM_BIN:-${NODE_DIR}/npm}"
|
||||
[[ -x "${NPM_BIN}" ]] || { echo "❌ NPM_BIN 不可执行: ${NPM_BIN}" >&2; exit 1; }
|
||||
|
||||
cd "${ROOT}"
|
||||
|
||||
@@ -41,7 +44,7 @@ fi
|
||||
|
||||
if [[ ! -d node_modules ]]; then
|
||||
echo "==> 安装依赖..."
|
||||
npm install
|
||||
"${NPM_BIN}" install
|
||||
fi
|
||||
|
||||
echo "==> 停止旧进程 (port ${PORT}, ${API_PORT})..."
|
||||
@@ -59,7 +62,7 @@ lsof -ti "TCP:${API_PORT}" -sTCP:LISTEN 2>/dev/null | xargs kill -9 2>/dev/null
|
||||
sleep 1
|
||||
|
||||
echo "==> 启动 Admin API @ ${API_HOST}:${API_PORT}..."
|
||||
nohup node server/index.mjs >>"${API_LOG}" 2>&1 &
|
||||
nohup "${NODE_BIN}" server/index.mjs >>"${API_LOG}" 2>&1 &
|
||||
echo $! >"${API_PID_FILE}"
|
||||
sleep 2
|
||||
|
||||
@@ -70,7 +73,7 @@ if ! curl -sf "http://127.0.0.1:${API_PORT}/health" >/dev/null; then
|
||||
fi
|
||||
|
||||
echo "==> 启动 vite preview @ ${WEB_HOST}:${PORT} (base=${BASE_PATH})..."
|
||||
nohup npx vite preview --config scripts/vite-preview.config.mjs >>"${LOG}" 2>&1 &
|
||||
nohup "${NPM_BIN}" exec vite preview --config scripts/vite-preview.config.mjs >>"${LOG}" 2>&1 &
|
||||
echo $! >"${PID_FILE}"
|
||||
sleep 3
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ export default defineConfig(({ mode }) => {
|
||||
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'],
|
||||
allowedHosts: ['md.tkmind.cn', 'gadm.tkmind.cn', 'localhost', '127.0.0.1', '10.10.0.2', '58.38.22.103'],
|
||||
proxy: {
|
||||
'/api': backend,
|
||||
'/auth': backend,
|
||||
|
||||
Reference in New Issue
Block a user