#!/bin/bash export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:$PATH source <(curl -f -s --connect-timeout 10 --retry 3 https://dl.acepanel.net/public.sh) if [ $? -ne 0 ]; then echo "Download public.sh failed, please check the network or try again later." exit 1 fi slug=${1} version=${2} node_path="${setup_path}/server/nodejs/${slug}" in_china=$(curl --retry 2 -m 10 -L -k https://www.qualcomm.cn/cdn-cgi/trace 2>/dev/null | grep -qx 'loc=CN' && echo "true" || echo "false") # 架构映射 case ${ARCH} in x86_64) NODE_ARCH="x64" ;; aarch64) NODE_ARCH="arm64" ;; esac # 准备安装目录 rm -rf ${node_path} mkdir -p ${node_path} cd ${node_path} # 下载Node.js安装包 NODE_TARBALL="node-v${version}-linux-${NODE_ARCH}.tar.xz" if ${in_china}; then # 阿里云镜像站不知道是不是抽风了,2025年5月底之后就没更新了,改用腾讯镜像站 NODE_URL="https://mirrors.tencent.com/nodejs-release/v${version}/${NODE_TARBALL}" echo "Downloading ${NODE_TARBALL} from Tencent mirror..." else NODE_URL="https://nodejs.org/dist/v${version}/${NODE_TARBALL}" echo "Downloading ${NODE_TARBALL} from nodejs.org..." fi aria2c -x8 \ -U "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36" \ -o ${NODE_TARBALL} \ ${NODE_URL} if [ $? -ne 0 ]; then rm -rf ${node_path} error "Failed to download Node.js ${version}" fi # 解压 tar -xJf ${NODE_TARBALL} if [ $? -ne 0 ]; then rm -rf ${node_path} error "Failed to extract Node.js ${version}" fi # Node.js解压后会在node-v{version}-linux-{arch}目录下,移动到当前目录 mv node-v${version}-linux-${NODE_ARCH}/* . rmdir node-v${version}-linux-${NODE_ARCH} rm -f ${NODE_TARBALL} # 验证安装 if [ ! -f "${node_path}/bin/node" ]; then rm -rf ${node_path} error "Node.js ${version} installation failed" fi # 设置软链接 ln -sf ${node_path}/bin/corepack /usr/local/bin/corepack${slug} ln -sf ${node_path}/bin/node /usr/local/bin/node${slug} ln -sf ${node_path}/bin/npm /usr/local/bin/npm${slug} ln -sf ${node_path}/bin/npx /usr/local/bin/npx${slug} [ ! -f /usr/local/bin/corepack ] && ln -sf ${node_path}/bin/corepack /usr/local/bin/corepack [ ! -f /usr/local/bin/node ] && ln -sf ${node_path}/bin/node /usr/local/bin/node [ ! -f /usr/local/bin/npm ] && ln -sf ${node_path}/bin/npm /usr/local/bin/npm [ ! -f /usr/local/bin/npx ] && ln -sf ${node_path}/bin/npx /usr/local/bin/npx # 国内设置npm镜像 if ${in_china}; then ${node_path}/bin/npm config set --global registry https://registry.npmmirror.com fi # 创建环境变量配置 cat >${node_path}/env.sh <