diff --git a/README.md b/README.md index 98288c6..9c865fd 100644 --- a/README.md +++ b/README.md @@ -54,3 +54,25 @@ todo: ## 问题说明 1. windows上直接运行index.js可能会发现运行过程中的日志打印出中文乱码。建议通过yarn dev运行或者在package.json里点击dev脚本运行 + +## 安装说明 + +1.zy安装方案 +* [多平台安装教程](https://zy.catni.cn/otherShare/drpyS-build.html) + +2.自动化安装方案(直接薅道长羊毛) +* 终端执行 + +bash -c "$(curl -fsSLk https://github.com/hjdhnx/drpy-node/raw/refs/heads/main/autorun.sh)" + +* 添加定时方案 + +echo "30 7 * * * bash -c \"\$(curl -fsSLk https://github.com/hjdhnx/drpy-node/raw/refs/heads/main/autorun.sh)\"" >> /path/logfile.log 2>&1" | crontab - + +或者下载脚本到本地后 + +chmod a+x /path/autorun.sh + +echo "30 7 * * * bash /path/autorun.sh >> /path/logfile.log 2>&1" | crontab - + +命令说明 /patch 为脚本存放路径(脚本放在与源码同级的自定义目录中) diff --git a/autorun.sh b/autorun.sh index 1360000..99b674b 100644 --- a/autorun.sh +++ b/autorun.sh @@ -1,10 +1,19 @@ #!/bin/bash -echo "警告:此脚本只适用于Debian系列系统(包含Ubuntu),因为需要使用apt来安装软件。" -echo "警告:此脚本只适用于Debian系列系统(包含Ubuntu),因为需要使用apt来安装软件。" -echo "警告:此脚本只适用于Debian系列系统(包含Ubuntu),因为需要使用apt来安装软件。" -echo "警告:如果是群晖NAS自行安装node套件后同样可以使用脚本进行更新使用!!!" -echo "警告:脚本自动更新需要自行添加任务计划设定运行时间!!!" +# 定义颜色 +RED='\033[31m' +GREEN='\033[32m' +YELLOW='\033[33m' +BLUE='\033[34m' +PH='\033[35m' +QS='\033[36m' +NC='\033[0m' # No Color + +echo -e "${PH}警告:此脚本只适用于Debian系列系统(包含Ubuntu),因为需要使用apt来安装软件。${NC}" +echo -e "${PH}警告:此脚本只适用于Debian系列系统(包含Ubuntu),因为需要使用apt来安装软件。${NC}" +echo -e "${PH}警告:此脚本只适用于Debian系列系统(包含Ubuntu),因为需要使用apt来安装软件。${NC}" +echo -e "${YELLOW}警告:如果是群晖NAS自行安装node套件后同样可以使用脚本进行更新使用!!!${NC}" +echo -e "${GREEN}警告:脚本自动更新需要自行添加任务计划设定运行时间!!!${NC}" # 检查是否为群晖系统 is_syno_system() { # 群晖系统通常会有 /etc.defaults/VERSION 文件 @@ -17,11 +26,11 @@ is_syno_system() { # 检查是否为群晖系统 if is_syno_system; then - echo "检测到群晖系统,跳过apt检查。" + echo -e "${QS}检测到群晖系统,跳过apt检查。${NC}" else # 检查系统是否支持apt if ! command -v apt >/dev/null 2>&1; then - echo "错误:不支持的系统。" + echo -e "${GREEN}错误:不支持的系统。${NC}" exit 1 fi fi @@ -30,17 +39,17 @@ fi check_node_version() { local node_version=$(node -v) if [[ "$node_version" < "v20.0.0" ]]; then - echo "Node.js版本低于20.0.0,正在安装Node.js v20以上版本..." + echo -e "${YELLOW}Node.js版本低于20.0.0,正在安装Node.js v20以上版本...${NC}" install_node_v20 npm config set registry https://registry.npmmirror.com else - echo "Node.js版本符合要求(v20以上),跳过安装。" + echo -e "${GREEN}Node.js版本符合要求(v20以上),跳过安装。${NC}" fi } # 安装Node.js v20以上版本 install_node_v20() { - echo "正在安装NVM..." + echo -e "${YELLOW}正在安装NVM...${NC}" curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash # 启用NVM @@ -48,55 +57,55 @@ install_node_v20() { [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # 安装Node.js 20.18.1 - echo "正在安装Node.js 20.18.1..." + echo -e "${YELLOW}正在安装Node.js 20.18.1...${NC}" nvm install 20.18.1 # 设置默认Node.js版本 nvm alias default 20.18.1 - echo "Node.js 20.18.1安装完成。" + echo -e "${GREEN}Node.js 20.18.1安装完成。${NC}" } # 检查NVM是否存在,如果不存在则安装 if command -v nvm >/dev/null 2>&1; then - echo "NVM已安装,跳过NVM安装。" + echo -e "${GREEN}NVM已安装,跳过NVM安装。${NC}" else - echo "NVM未安装,正在安装NVM..." + echo -e "${YELLOW}NVM未安装,正在安装NVM...${NC}" curl -o- https://gitee.com/RubyMetric/nvm-cn/raw/main/install.sh | bash export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion - echo "NVM安装完成。" + echo -e "${GREEN}NVM安装完成。${NC}" fi # 安装Yarn和PM2 install_yarn_and_pm2() { if command -v yarn >/dev/null 2>&1; then - echo "Yarn已安装,跳过Yarn安装。" + echo -e "${GREEN}Yarn已安装,跳过Yarn安装。${NC}" yarn config set registry https://registry.yarnpkg.com else - echo "Yarn未安装,正在安装Yarn..." + echo -e "${YELLOW}Yarn未安装,正在安装Yarn...${NC}" nvm install-node # 安装最新版本的Node.js,自动选择大于v20的版本 nvm use default npm install -g yarn yarn config set registry https://registry.yarnpkg.com if [ $? -ne 0 ]; then - echo "Yarn安装失败,请手动安装Yarn后重试。" + echo -e "${RED}Yarn安装失败,请手动安装Yarn后重试。${NC}" exit 1 fi - echo "Yarn安装成功。" + echo -e "${GREEN}Yarn安装成功。${NC}" fi if command -v pm2 >/dev/null 2>&1; then - echo "PM2已安装,跳过PM2安装。" + echo -e "${GREEN}PM2已安装,跳过PM2安装。${NC}" else - echo "PM2未安装,正在安装PM2..." + echo -e "${YELLOW}PM2未安装,正在安装PM2...${NC}" npm install -g pm2 if [ $? -ne 0 ]; then - echo "PM2安装失败,请手动安装PM2后重试。" + echo -e "${RED}PM2安装失败,请手动安装PM2后重试。${NC}" exit 1 fi - echo "PM2安装成功。" + echo -e "${GREEN}PM2安装成功。${NC}" fi } @@ -107,21 +116,21 @@ check_node_version install_yarn_and_pm2 # 提示用户输入需要创建的目录,30秒后自动使用当前目录 -echo "请输入需要创建的目录路径(30秒内无输入则使用当前目录):" +echo -ne "${PH}请输入需要创建的目录路径(30秒内无输入则使用当前目录):${NC}" read -t 30 dir_path - +echo # 根据用户输入设置目录 if [[ -n $dir_path ]]; then mkdir -p "$dir_path" && cd "$dir_path" if [ $? -eq 0 ]; then - echo "目录 '$dir_path' 创建并进入成功。" + echo -e "${GREEN}目录 '$dir_path' 创建并进入成功。${NC}" REPO_DIR="$dir_path" else - echo "目录 '$dir_path' 创建失败,使用当前目录。" + echo -e "${RED}目录 '$dir_path' 创建失败,使用当前目录。${NC}" REPO_DIR=$(pwd) fi else - echo "已超时,使用当前目录:$(pwd)" + echo -e "${YELLOW}已超时,使用当前目录:$(pwd)" REPO_DIR=$(pwd) fi @@ -129,7 +138,7 @@ fi REMOTE_REPO="https://github.com/hjdhnx/drpy-node.git" # 代理远程仓库地址 -echo "如果拉取不顺利,请在脚本中找到$REMOTE_REPO自行注释修改为kk代理地址" +echo -e "${YELLOW}如果拉取不顺利,请在脚本中找到$REMOTE_REPO自行注释修改为kk代理地址${NC}" #REMOTE_REPO="https://kkgithub.com/hjdhnx/drpy-node.git" # 项目名称 @@ -141,11 +150,11 @@ get_device_ip() { # 这里使用的是ipinfo.io服务,你也可以使用其他服务 IP=$(curl -s https://ipinfo.io/ip) if [ $? -eq 0 ]; then - echo "= 设备IP地址:$IP" - echo "= 公网IP自行打码" + echo -e "${QS}= 设备IP地址:$IP${NC}" + echo -e "${QS}= 公网IP自行打码${NC}" return 0 else - echo "无法获取设备IP地址。" + echo -e "${RED}无法获取设备IP地址。${NC}" return 1 fi } @@ -155,9 +164,9 @@ get_local_ip() { # 使用ip命令获取局域网IP地址 local ip=$(ip addr show scope global | grep inet | grep -v inet6 | grep -v '127.0.0.1' | awk '{print $2}' | cut -d/ -f1 | head -n1) if [ -n "$ip" ]; then - echo "$ip" + echo -e "$ip" else - echo "无法获取局域网IP地址。" + echo -e "${RED}无法获取局域网IP地址。${NC}" exit 1 fi } @@ -171,7 +180,7 @@ create_env_json() { # 检查env.json文件是否存在 if [ ! -f "$env_json_path" ]; then - echo "env.json文件不存在,正在创建..." + echo -e "${YELLOW}env.json文件不存在,正在创建...${NC}" # 创建env.json文件并填充默认内容 cat > "$env_json_path" <