File size: 4,803 Bytes
f24d146 ac6db14 f24d146 03ad329 f24d146 03ad329 f24d146 03ad329 f24d146 03ad329 f24d146 03ad329 f24d146 03ad329 f24d146 03ad329 beabd69 b31fe4b 03ad329 ac6db14 f24d146 ac6db14 f24d146 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 |
#!/bin/sh
# 将安装路径修改为 /data/nezha,以保证在 Hugging Face Spaces 中具有写权限
NZ_BASE_PATH="/data/nezha"
NZ_DASHBOARD_PATH="${NZ_BASE_PATH}/dashboard"
red='\033[0;31m'
green='\033[0;32m'
yellow='\033[0;33m'
plain='\033[0m'
err() {
printf "${red}%s${plain}\n" "$*" >&2
}
warn() {
printf "${red}%s${plain}\n" "$*"
}
success() {
printf "${green}%s${plain}\n" "$*"
}
info() {
printf "${yellow}%s${plain}\n" "$*"
}
println() {
printf "$*\n"
}
mustn() {
set -- "$@"
if ! "$@" >/dev/null 2>&1; then
err "运行 '$*' 失败。"
exit 1
fi
}
deps_check() {
deps="curl wget unzip grep"
for dep in $deps; do
if ! command -v "$dep" >/dev/null 2>&1; then
err "未找到依赖 $dep,请先安装。"
exit 1
fi
done
}
geo_check() {
api_list="https://blog.cloudflare.com/cdn-cgi/trace https://developers.cloudflare.com/cdn-cgi/trace"
ua="Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0"
for url in $api_list; do
text="$(curl -A "$ua" -m 10 -s "$url")"
endpoint="$(echo "$text" | sed -n 's/.*h=\([^ ]*\).*/\1/p')"
if echo "$text" | grep -qw 'CN'; then
isCN=true
break
elif echo "$url" | grep -q "$endpoint"; then
break
fi
done
}
env_check() {
uname=$(uname -m)
case "$uname" in
amd64|x86_64)
os_arch="amd64"
;;
i386|i686)
os_arch="386"
;;
aarch64|arm64)
os_arch="arm64"
;;
*arm*)
os_arch="arm"
;;
s390x)
os_arch="s390x"
;;
riscv64)
os_arch="riscv64"
;;
*)
err "未知架构:$uname"
exit 1
;;
esac
}
init() {
deps_check
env_check
## 检测是否为国内IP
if [ -z "$CN" ]; then
geo_check
if [ -n "$isCN" ]; then
CN=true
GITHUB_RAW_URL="gitee.com/naibahq/scripts/raw/main"
GITHUB_URL="gitee.com"
Docker_IMG="registry.cn-shanghai.aliyuncs.com\/naibahq\/nezha"
else
GITHUB_RAW_URL="raw.githubusercontent.com/nezhahq/scripts/main"
GITHUB_URL="github.com"
Docker_IMG="ghcr.io\/nezhahq\/nezha"
fi
fi
IS_DOCKER_NEZHA=0
}
install() {
echo "> 安装"
# 创建哪吒监控目录
mkdir -p "$NZ_DASHBOARD_PATH"
modify_config
restart_and_update
}
modify_config() {
echo "> 修改配置"
# 下载配置文件
echo "正在下载配置文件"
wget -t 2 -T 60 -O /tmp/nezha-config.yaml "https://${GITHUB_RAW_URL}/extras/config.yaml"
# 设置配置参数,从环境变量读取,如果没有则使用默认值
nz_site_title=${NZ_SITE_TITLE:-"哪吒监控"}
nz_port=${NZ_PORT:-"7860"} # Hugging Face Spaces 默认使用 7860 端口
nz_hostport=${NZ_HOSTPORT:-"example.com:443"}
nz_tls=${NZ_TLS:-"true"}
nz_lang=${NZ_LANG:-"zh_CN"}
sed -i "s/nz_port/${nz_port}/g" /tmp/nezha-config.yaml
sed -i "s/nz_language/${nz_lang}/" /tmp/nezha-config.yaml
sed -i "s/nz_site_title/${nz_site_title}/" /tmp/nezha-config.yaml
sed -i "s/nz_hostport/${nz_hostport}/" /tmp/nezha-config.yaml
sed -i "s/nz_tls/${nz_tls}/" /tmp/nezha-config.yaml
mkdir -p "$NZ_DASHBOARD_PATH/data"
mv -f /tmp/nezha-config.yaml "${NZ_DASHBOARD_PATH}/data/config.yaml"
# 确保数据目录具有写权限
chmod -R 777 "${NZ_DASHBOARD_PATH}/data"
success "Dashboard 配置修改成功"
}
restart_and_update() {
echo "> 重启并更新"
restart_and_update_standalone
success "哪吒监控更新成功"
}
restart_and_update_standalone() {
_version=$(curl -m 10 -sL "https://api.github.com/repos/nezhahq/nezha/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g')
if [ -z "$_version" ]; then
err "获取 Dashboard 版本号失败,请检查网络连接"
exit 1
else
echo "当前最新版本为: ${_version}"
fi
if [ -z "$CN" ]; then
NZ_DASHBOARD_URL="https://${GITHUB_URL}/nezhahq/nezha/releases/download/${_version}/dashboard-linux-${os_arch}.zip"
else
NZ_DASHBOARD_URL="https://${GITHUB_URL}/naibahq/nezha/releases/download/${_version}/dashboard-linux-${os_arch}.zip"
fi
wget -qO "$NZ_DASHBOARD_PATH/app.zip" "$NZ_DASHBOARD_URL" && \
unzip -qq -o "$NZ_DASHBOARD_PATH/app.zip" -d "$NZ_DASHBOARD_PATH" && \
mv "$NZ_DASHBOARD_PATH/dashboard-linux-$os_arch" "$NZ_DASHBOARD_PATH/app" && \
rm "$NZ_DASHBOARD_PATH/app.zip"
chmod +x "$NZ_DASHBOARD_PATH/app"
}
init
install |