BG5 commited on
Commit
a01f441
·
verified ·
1 Parent(s): 7e41780

Create install.override.sh

Browse files
Files changed (1) hide show
  1. install.override.sh +238 -0
install.override.sh ADDED
@@ -0,0 +1,238 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ PANEL_BASE_DIR=/opt
4
+ PANEL_PORT=10086
5
+ DEFAULT_ENTRANCE="entrance"
6
+ DEFAULT_USERNAME="1panel"
7
+ DEFAULT_PASSWORD="1panel_password"
8
+
9
+ CURRENT_DIR=$(
10
+ cd "$(dirname "$0")"
11
+ pwd
12
+ )
13
+
14
+ function log() {
15
+ message="[1Panel Log]: $1 "
16
+ echo -e "${message}" 2>&1 | tee -a ${CURRENT_DIR}/install.log
17
+ }
18
+
19
+ echo
20
+ cat << EOF
21
+ ██╗ ██████╗ █████╗ ███╗ ██╗███████╗██╗
22
+ ███║ ██╔══██╗██╔══██╗████╗ ██║██╔════╝██║
23
+ ╚██║ ██████╔╝███████║██╔██╗ ██║█████╗ ██║
24
+ ██║ ██╔═══╝ ██╔══██║██║╚██╗██║██╔══╝ ██║
25
+ ██║ ██║ ██║ ██║██║ ╚████║███████╗███████╗
26
+ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚══════╝╚══════╝
27
+ EOF
28
+
29
+ log "======================= 开始安装 ======================="
30
+
31
+ function Prepare_System(){
32
+ if which 1panel >/dev/null 2>&1; then
33
+ log "1Panel Linux 服务器运维管理面板已安装,请勿重复安装"
34
+ #exit 1
35
+ 1panel
36
+ fi
37
+ }
38
+
39
+ function Set_Dir(){
40
+ if [[ ! -d $PANEL_BASE_DIR ]]; then
41
+ mkdir -p $PANEL_BASE_DIR
42
+ log "安装路径已设置为 $PANEL_BASE_DIR"
43
+ fi
44
+
45
+ }
46
+
47
+ function Install_Docker(){
48
+ if which docker >/dev/null 2>&1; then
49
+ log "检测到 Docker 已安装,跳过安装步骤"
50
+ log "启动 Docker "
51
+ systemctl start docker 2>&1 | tee -a ${CURRENT_DIR}/install.log
52
+ else
53
+ log "... 在线安装 docker"
54
+
55
+ curl -fsSL https://get.docker.com -o get-docker.sh 2>&1 | tee -a ${CURRENT_DIR}/install.log
56
+ if [[ ! -f get-docker.sh ]];then
57
+ log "docker 在线安装脚本下载失败,请稍候重试"
58
+ exit 1
59
+ fi
60
+ if [[ $(curl -s ipinfo.io/country) == "CN" ]]; then
61
+ sh get-docker.sh --mirror Aliyun 2>&1 | tee -a ${CURRENT_DIR}/install.log
62
+ else
63
+ sh get-docker.sh 2>&1 | tee -a ${CURRENT_DIR}/install.log
64
+ fi
65
+
66
+ log "... 启动 docker"
67
+ systemctl enable docker; systemctl daemon-reload; systemctl start docker 2>&1 | tee -a ${CURRENT_DIR}/install.log
68
+
69
+ docker_config_folder="/etc/docker"
70
+ if [[ ! -d "$docker_config_folder" ]];then
71
+ mkdir -p "$docker_config_folder"
72
+ fi
73
+
74
+ docker version >/dev/null 2>&1
75
+ if [[ $? -ne 0 ]]; then
76
+ log "docker 安装失败"
77
+ exit 1
78
+ else
79
+ log "docker 安装成功"
80
+ fi
81
+ fi
82
+ }
83
+
84
+ function Install_Compose(){
85
+ docker-compose version >/dev/null 2>&1
86
+ if [[ $? -ne 0 ]]; then
87
+ log "... 在线安装 docker-compose"
88
+
89
+ arch=$(uname -m)
90
+ if [ "$arch" == 'armv7l' ]; then
91
+ arch='armv7'
92
+ fi
93
+ curl -L https://resource.fit2cloud.com/docker/compose/releases/download/v2.16.0/docker-compose-$(uname -s | tr A-Z a-z)-$arch -o /usr/local/bin/docker-compose 2>&1 | tee -a ${CURRENT_DIR}/install.log
94
+ if [[ ! -f /usr/local/bin/docker-compose ]];then
95
+ log "docker-compose 下载失败,请稍候重试"
96
+ exit 1
97
+ fi
98
+ chmod +x /usr/local/bin/docker-compose
99
+ ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
100
+
101
+ docker-compose version >/dev/null 2>&1
102
+ if [[ $? -ne 0 ]]; then
103
+ log "docker-compose 安装失败"
104
+ exit 1
105
+ else
106
+ log "docker-compose 安装成功"
107
+ fi
108
+ else
109
+ compose_v=`docker-compose -v`
110
+ if [[ $compose_v =~ 'docker-compose' ]];then
111
+ read -p "检测到已安装 Docker Compose 版本较低(需大于等于 v2.0.0 版本),是否升级 [y/n] : " UPGRADE_DOCKER_COMPOSE
112
+ if [[ "$UPGRADE_DOCKER_COMPOSE" == "Y" ]] || [[ "$UPGRADE_DOCKER_COMPOSE" == "y" ]]; then
113
+ rm -rf /usr/local/bin/docker-compose /usr/bin/docker-compose
114
+ Install_Compose
115
+ else
116
+ log "Docker Compose 版本为 $compose_v,可能会影响应用商店的正常使用"
117
+ fi
118
+ else
119
+ log "检测到 Docker Compose 已安装,跳过安装步骤"
120
+ fi
121
+ fi
122
+ }
123
+
124
+ function Set_Port(){
125
+ PANEL_PORT=${PANEL_PORT:-10086}
126
+ log "您设置的端口为:$PANEL_PORT"
127
+ }
128
+
129
+ function Set_Firewall(){
130
+ if which firewall-cmd >/dev/null 2>&1; then
131
+ if systemctl status firewalld | grep -q "Active: active" >/dev/null 2>&1;then
132
+ log "防火墙开放 $PANEL_PORT 端口"
133
+ firewall-cmd --zone=public --add-port=$PANEL_PORT/tcp --permanent
134
+ firewall-cmd --reload
135
+ else
136
+ log "防火墙未开启,忽略端口开放"
137
+ fi
138
+ fi
139
+
140
+ if which ufw >/dev/null 2>&1; then
141
+ if systemctl status ufw | grep -q "Active: active" >/dev/null 2>&1;then
142
+ log "防火墙开放 $PANEL_PORT 端口"
143
+ ufw allow $PANEL_PORT/tcp
144
+ ufw reload
145
+ else
146
+ log "防火墙未开启,忽略端口开放"
147
+ fi
148
+ fi
149
+ }
150
+
151
+ function Set_Username(){
152
+ PANEL_USERNAME=${PANEL_USERNAME:-$DEFAULT_USERNAME}
153
+ log "您设置的用户名称为:$PANEL_USERNAME"
154
+ }
155
+
156
+ function Set_Password(){
157
+ PANEL_PASSWORD=${PANEL_PASSWORD:-$DEFAULT_PASSWORD}
158
+ }
159
+
160
+
161
+ function Init_Panel(){
162
+ log "配置 1Panel Service"
163
+
164
+ RUN_BASE_DIR=$PANEL_BASE_DIR/1panel
165
+ mkdir -p $RUN_BASE_DIR
166
+ rm -rf $RUN_BASE_DIR/*
167
+
168
+ cd ${CURRENT_DIR}
169
+
170
+ cp ./1panel /usr/local/bin && chmod +x /usr/local/bin/1panel
171
+ if [[ ! -f /usr/bin/1panel ]]; then
172
+ ln -s /usr/local/bin/1panel /usr/bin/1panel >/dev/null 2>&1
173
+ fi
174
+
175
+ cp ./1pctl /usr/local/bin && chmod +x /usr/local/bin/1pctl
176
+ sed -i -e "s#BASE_DIR=.*#BASE_DIR=${PANEL_BASE_DIR}#g" /usr/local/bin/1pctl
177
+ sed -i -e "s#ORIGINAL_PORT=.*#ORIGINAL_PORT=${PANEL_PORT}#g" /usr/local/bin/1pctl
178
+ sed -i -e "s#ORIGINAL_USERNAME=.*#ORIGINAL_USERNAME=${PANEL_USERNAME}#g" /usr/local/bin/1pctl
179
+ ESCAPED_PANEL_PASSWORD=$(echo "$PANEL_PASSWORD" | sed 's/[!@#$%*_,.?]/\\&/g')
180
+ sed -i -e "s#ORIGINAL_PASSWORD=.*#ORIGINAL_PASSWORD=${ESCAPED_PANEL_PASSWORD}#g" /usr/local/bin/1pctl
181
+ PANEL_ENTRANCE=${PANEL_ENTRANCE:-$DEFAULT_ENTRANCE}
182
+ sed -i -e "s#ORIGINAL_ENTRANCE=.*#ORIGINAL_ENTRANCE=${PANEL_ENTRANCE}#g" /usr/local/bin/1pctl
183
+ if [[ ! -f /usr/bin/1pctl ]]; then
184
+ ln -s /usr/local/bin/1pctl /usr/bin/1pctl >/dev/null 2>&1
185
+ fi
186
+
187
+ # cp ./1panel.service /etc/systemd/system
188
+ #
189
+ # systemctl enable 1panel; systemctl daemon-reload 2>&1 | tee -a ${CURRENT_DIR}/install.log
190
+ #
191
+ # log "启动 1Panel 服务"
192
+ # systemctl start 1panel | tee -a ${CURRENT_DIR}/install.log
193
+ #
194
+ # for b in {1..30}
195
+ # do
196
+ # sleep 3
197
+ # service_status=`systemctl status 1panel 2>&1 | grep Active`
198
+ # if [[ $service_status == *running* ]];then
199
+ # log "1Panel 服务启动成功!"
200
+ # break;
201
+ # else
202
+ # log "1Panel 服务启动出错!"
203
+ # exit 1
204
+ # fi
205
+ # done
206
+ }
207
+
208
+ function Show_Result(){
209
+ log ""
210
+ log "=================感谢您的耐心等待,安装已经完成=================="
211
+ log ""
212
+ log "请用浏览器访问面板:"
213
+ log "面板地址: http://\$LOCAL_IP:$PANEL_PORT/$PANEL_ENTRANCE"
214
+ log "用户名称: $PANEL_USERNAME"
215
+ log "用户密码: $PANEL_PASSWORD"
216
+ log ""
217
+ log "项目官网: https://1panel.cn"
218
+ log "项目文档: https://1panel.cn/docs"
219
+ log "代码仓库: https://github.com/1Panel-dev/1Panel"
220
+ log ""
221
+ log "如果使用的是云服务器,请至安全组开放 $PANEL_PORT 端口"
222
+ log ""
223
+ log "================================================================"
224
+ }
225
+
226
+ function main(){
227
+ Prepare_System
228
+ Set_Dir
229
+ # Install_Docker
230
+ # Install_Compose
231
+ Set_Port
232
+ Set_Firewall
233
+ Set_Username
234
+ Set_Password
235
+ Init_Panel
236
+ Show_Result
237
+ }
238
+ main