chore: consolidate admin cleanup and colima config

This commit is contained in:
john
2026-06-28 08:20:43 +08:00
parent fffa1f7c7d
commit dcf8fd1ff9
19 changed files with 426 additions and 89 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
# gadm.tkmind.cn → memind_admvite preview :5174 + Admin API :8085
# md.tkmind.cn → memind_admvite preview :5174 + Admin API :8085
# 生产 nginx 需把 /ops/ 反代到 5174,勿再指向 Memind/ops dev server
:8091 {
reverse_proxy 127.0.0.1:5174 {
+5 -5
View File
@@ -1,10 +1,10 @@
# gadm.tkmind.cn @ 105 nginx → Studio LAN 10.10.0.2fallback 58.38.22.103
# md.tkmind.cn @ 105 nginx → Studio LAN 10.10.0.2fallback 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;
+2 -2
View File
@@ -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 ...;
+10 -7
View File
@@ -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
+15
View File
@@ -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
View File
@@ -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
+9 -6
View File
@@ -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
+1 -1
View File
@@ -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,