XJFKKK commited on
Commit
f24d146
·
verified ·
1 Parent(s): d21f842

Create nezha.sh

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