Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7a8bd6a4ce | |||
| e8216d37f6 | |||
| 622d7e6d0b | |||
| b9d47e0f05 | |||
| ac0d107dba | |||
| 3b4a70c399 | |||
| 7010c9d34a | |||
| 3f80164190 |
@@ -23,9 +23,21 @@ KEEP_BACKUPS=3
|
|||||||
[[ "$(id -u)" == "0" ]] || { echo "❌ 请用 root / sudo 运行" >&2; exit 1; }
|
[[ "$(id -u)" == "0" ]] || { echo "❌ 请用 root / sudo 运行" >&2; exit 1; }
|
||||||
[[ "$(uname -s)" == "Linux" ]] || { echo "❌ 仅支持 Linux" >&2; exit 1; }
|
[[ "$(uname -s)" == "Linux" ]] || { echo "❌ 仅支持 Linux" >&2; exit 1; }
|
||||||
command -v curl >/dev/null || { echo "❌ 需要 curl" >&2; exit 1; }
|
command -v curl >/dev/null || { echo "❌ 需要 curl" >&2; exit 1; }
|
||||||
command -v node >/dev/null || { echo "❌ 需要 Node.js ≥ 22" >&2; exit 1; }
|
# node 可能装在普通用户的 nvm 下(root PATH 看不见)。查找顺序:
|
||||||
NODE_MAJOR=$(node -e 'console.log(process.versions.node.split(".")[0])')
|
# 1. 显式 NODE_BIN 环境变量(自升级路径:worker 传自己的 process.execPath)
|
||||||
[[ "${NODE_MAJOR}" -ge 22 ]] || { echo "❌ Node ≥ 22(当前 $(node -v))" >&2; exit 1; }
|
# 2. PATH;3. 已装 unit 的 ExecStart(升级场景,上次装机时已解析对);4. SUDO_USER 登录环境
|
||||||
|
NODE_BIN="${NODE_BIN:-}"
|
||||||
|
[[ -n "${NODE_BIN}" && -x "${NODE_BIN}" ]] || NODE_BIN="$(command -v node || true)"
|
||||||
|
if [[ -z "${NODE_BIN}" && -f "/etc/systemd/system/${SERVICE}.service" ]]; then
|
||||||
|
NODE_BIN="$(awk -F= '/^ExecStart=/{print $2}' "/etc/systemd/system/${SERVICE}.service" | awk '{print $1}')"
|
||||||
|
[[ -x "${NODE_BIN}" ]] || NODE_BIN=""
|
||||||
|
fi
|
||||||
|
if [[ -z "${NODE_BIN}" && -n "${SUDO_USER:-}" ]]; then
|
||||||
|
NODE_BIN="$(su - "${SUDO_USER}" -c 'command -v node' 2>/dev/null || true)"
|
||||||
|
fi
|
||||||
|
[[ -n "${NODE_BIN}" ]] || { echo "❌ 需要 Node.js ≥ 22(NODE_BIN/PATH/unit/SUDO_USER 均未找到 node)" >&2; exit 1; }
|
||||||
|
NODE_MAJOR=$("${NODE_BIN}" -e 'console.log(process.versions.node.split(".")[0])')
|
||||||
|
[[ "${NODE_MAJOR}" -ge 22 ]] || { echo "❌ Node ≥ 22(当前 $("${NODE_BIN}" -v))" >&2; exit 1; }
|
||||||
command -v docker >/dev/null || { echo "❌ 需要 Docker(worker 用它起沙箱容器)" >&2; exit 1; }
|
command -v docker >/dev/null || { echo "❌ 需要 Docker(worker 用它起沙箱容器)" >&2; exit 1; }
|
||||||
|
|
||||||
if [[ "${1:-}" == "--uninstall" ]]; then
|
if [[ "${1:-}" == "--uninstall" ]]; then
|
||||||
@@ -76,6 +88,9 @@ if [[ ! -f "${APP_DIR}/.env" ]]; then
|
|||||||
PORT=${PORT}
|
PORT=${PORT}
|
||||||
# 调用方 x-api-key(已随机生成;server 侧需配同一值)
|
# 调用方 x-api-key(已随机生成;server 侧需配同一值)
|
||||||
WORKER_API_KEY=$(rnd)
|
WORKER_API_KEY=$(rnd)
|
||||||
|
# Web UI 登录(/ui,查看连接信息 + 一键升级;首次安装随机密码,请尽快修改)
|
||||||
|
SANDBOX_UI_USER=admin
|
||||||
|
SANDBOX_UI_PASSWORD=$(rnd | head -c 16)
|
||||||
ENV
|
ENV
|
||||||
chmod 600 "${APP_DIR}/.env"
|
chmod 600 "${APP_DIR}/.env"
|
||||||
fi
|
fi
|
||||||
@@ -88,7 +103,7 @@ Wants=network-online.target
|
|||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
EnvironmentFile=${APP_DIR}/.env
|
EnvironmentFile=${APP_DIR}/.env
|
||||||
ExecStart=$(command -v node) ${APP_DIR}/current/dist/server.js
|
ExecStart=${NODE_BIN} ${APP_DIR}/current/dist/server.js
|
||||||
WorkingDirectory=${APP_DIR}/current
|
WorkingDirectory=${APP_DIR}/current
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=3
|
RestartSec=3
|
||||||
|
|||||||
Reference in New Issue
Block a user