forked from ansoncloud8/am-serv00-nezha
-
Notifications
You must be signed in to change notification settings - Fork 0
/
install-dashboard.sh
133 lines (116 loc) · 4.76 KB
/
install-dashboard.sh
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
#!/bin/bash
USERNAME=$(whoami) && \
WORKDIR="/home/${USERNAME}/.nezha-dashboard"
get_current_version() {
# 如果VERSION文件不存在,设置CURRENT_VERSION为空
if [ ! -f ${WORKDIR}/VERSION ]; then
CURRENT_VERSION=""
else
CURRENT_VERSION=$(cat ${WORKDIR}/VERSION)
fi
}
get_latest_version() {
# Get latest release version number
RELEASE_LATEST=$(curl -s https://api.github.com/repos/ansoncloud8/am-nezha-freebsd/releases/latest | jq -r '.tag_name')
if [[ -z "$RELEASE_LATEST" ]]; then
echo "error: Failed to get the latest release version, please check your network."
exit 1
fi
}
download_nezha() {
DOWNLOAD_LINK="https://github.com/ansoncloud8/am-nezha-freebsd/releases/latest/download/dashboard"
if ! wget -qO "$INSTALLER_FILE" "$DOWNLOAD_LINK"; then
echo 'error: Download failed! Please check your network or try again.'
return 1
fi
curl -s https://api.github.com/repos/ansoncloud8/am-nezha-freebsd/releases/latest | jq -r '.tag_name' > ${WORKDIR}/VERSION
return 0
}
install_nezha() {
install -m 755 ${TMP_DIRECTORY}/dashboard ${WORKDIR}/dashboard
}
generate_config(){
echo "关于 Gitee Oauth2 应用:在 https://gitee.com/oauth/applications 创建,无需审核,Callback 填 http(s)://域名或IP/oauth2/callback"
printf "请输入 OAuth2 提供商(github/gitlab/jihulab/gitee,默认 github): "
read -r nz_oauth2_type
printf "请输入 Oauth2 应用的 Client ID: "
read -r nz_github_oauth_client_id
printf "请输入 Oauth2 应用的 Client Secret: "
read -r nz_github_oauth_client_secret
printf "请输入 GitHub/Gitee 登录名作为管理员,多个以逗号隔开: "
read -r nz_admin_logins
printf "请输入站点标题: "
read -r nz_site_title
printf "请输入站点访问端口: "
read -r nz_site_port
printf "请输入用于 Agent 接入的 RPC 端口: "
read -r nz_grpc_port
if [ -z "$nz_admin_logins" ] || [ -z "$nz_github_oauth_client_id" ] || [ -z "$nz_github_oauth_client_secret" ] || [ -z "$nz_site_title" ] || [ -z "$nz_site_port" ] || [ -z "$nz_grpc_port" ]; then
echo "error! 所有选项都不能为空"
return 1
rm -rf ${WORKDIR}
exit
fi
if [ -z "$nz_oauth2_type" ]; then
nz_oauth2_type=github
fi
wget -O ${WORKDIR}/data/config.yaml "https://raw.githubusercontent.com/naiba/nezha/master/script/config.yaml"
sed -i '' "s/nz_oauth2_type/${nz_oauth2_type}/" ${WORKDIR}/data/config.yaml
sed -i '' "s/nz_admin_logins/${nz_admin_logins}/" ${WORKDIR}/data/config.yaml
sed -i '' "s/nz_grpc_port/${nz_grpc_port}/" ${WORKDIR}/data/config.yaml
sed -i '' "s/nz_github_oauth_client_id/${nz_github_oauth_client_id}/" ${WORKDIR}/data/config.yaml
sed -i '' "s/nz_github_oauth_client_secret/${nz_github_oauth_client_secret}/" ${WORKDIR}/data/config.yaml
sed -i '' "s/nz_language/zh-CN/" ${WORKDIR}/data/config.yaml
sed -i '' "s/nz_site_title/${nz_site_title}/" ${WORKDIR}/data/config.yaml
sed -i '' "s/80/${nz_site_port}/" ${WORKDIR}/data/config.yaml
}
generate_run() {
cat > ${WORKDIR}/start.sh << EOF
#!/bin/bash
pgrep -f 'dashboard' | xargs -r kill
cd ${WORKDIR}
exec ${WORKDIR}/dashboard >/dev/null 2>&1
EOF
chmod +x ${WORKDIR}/start.sh
}
run_nezha(){
nohup ${WORKDIR}/start.sh >/dev/null 2>&1 &
IP_ADDRESS=$(devil vhost list public | awk '/Public addresses/ {flag=1; next} flag && $1 ~ /^[0-9.]+$/ {print $1; exit}' | xargs echo -n)
printf "nezha-dashboard已经准备就绪,请按下回车键启动\n"
read
printf "正在启动nezha-dashboard,请耐心等待...\n"
sleep 3
if pgrep -f "dashboard" > /dev/null; then
echo "nezha-dashboard 已启动,请使用浏览器访问 http://${IP_ADDRESS}:${nz_site_port} 进行进一步配置。"
echo "如果你配置了 Proxy 或者 Cloudflared Argo Tunnel,也可以使用域名访问 nezha-dashboard。"
echo
echo "如果你想使用 pm2 管理 nezha-dashboard,请执行:pm2 start ~/.nezha-dashboard/start.sh --name nezha-dashboard"
else
rm -rf "${WORKDIR}"
echo "nezha-dashboard启动失败,请检查端口开放情况,并保证参数填写正确,再重新安装!"
fi
}
mkdir -p ${WORKDIR}/data
cd ${WORKDIR}
TMP_DIRECTORY="$(mktemp -d)"
INSTALLER_FILE="${TMP_DIRECTORY}/dashboard"
get_current_version
get_latest_version
[ ! -e ${WORKDIR}/data/config.yaml ] && generate_config
[ ! -e ${WORKDIR}/start.sh ] && generate_run
if [ "${RELEASE_LATEST}" != "${CURRENT_VERSION}" ]; then
download_nezha
EXIT_CODE=$?
if [ ${EXIT_CODE} -eq 0 ]; then
:
else
rm -r "$TMP_DIRECTORY"
run_nezha
exit
fi
install_nezha
rm -rf "$TMP_DIRECTORY"
run_nezha
exit
fi
run_nezha