-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathinstall.sh
More file actions
executable file
·244 lines (209 loc) · 6.12 KB
/
install.sh
File metadata and controls
executable file
·244 lines (209 loc) · 6.12 KB
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
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
#!/bin/bash
# shellcheck disable=SC1091
set -a
source .env
set +a
set -ue
CURRENT_DIR=$(pwd)
echo '
____ ___ _____ _____ ___ _ _____ ____
| _ \ / _ \_ _| ___|_ _| | | ____/ ___|
| | | | | | || | | |_ | || | | _| \___ \
| |_| | |_| || | | _| | || |___| |___ ___) |
|____/ \___/ |_| |_| |___|_____|_____|____/
'
echo '⚡ Welcome to tanhongit server setup script! ⚡'
echo '🚀 This script will help you to setup your server 🚀'
echo '🔥 Please run this script with sudo permission 🔥'
echo ''
setup() {
cd "$CURRENT_DIR" || exit
bash setup.sh
}
change_ssh_port() {
cd "$CURRENT_DIR/setup/system" || exit
bash change-port.sh
}
ssh_timeout() {
cd "$CURRENT_DIR/setup/system" || exit
bash ssh_timeout.sh
}
php() {
cd "$CURRENT_DIR/setup/develop/web/php" || exit
bash php-handler.sh
}
php_extension() {
cd "$CURRENT_DIR/setup/develop/web/php" || exit
bash php-extension.sh "$1"
}
lazydocker() {
cd "$CURRENT_DIR/setup/develop" || exit
bash lazydocker.sh
}
docker_setup() {
cd "$CURRENT_DIR/setup/develop" || exit
bash docker.sh
}
global_dev_setup() {
cd "$CURRENT_DIR/setup/packages" || exit
if [ "${2:-}" = "-f" ] || [ "${2:-}" = "--force" ]; then
bash global-dev-setup.sh --force
else
bash global-dev-setup.sh
fi
}
add_dev_user() {
cd "$CURRENT_DIR/setup/packages" || exit
shift # Remove first argument (command name)
bash add-user-to-dev.sh "$@"
}
zabbix_server() {
cd "$CURRENT_DIR/setup/system" || exit
sudo bash zabbix.sh server
}
zabbix_client() {
local server_ip="${1:-}"
cd "$CURRENT_DIR/setup/system" || exit
if [ -n "$server_ip" ]; then
sudo bash zabbix.sh client "$server_ip"
else
sudo bash zabbix.sh client
fi
}
update_zabbix_ip() {
local server_ip="${1:-}"
cd "$CURRENT_DIR/setup/system" || exit
if [ -n "$server_ip" ]; then
sudo bash update-zabbix-server-ip.sh "$server_ip"
else
sudo bash update-zabbix-server-ip.sh
fi
}
fix_mysql_frozen() {
cd "$CURRENT_DIR/setup/system" || exit
sudo bash fix-mysql-frozen.sh
}
hostname_setup() {
cd "$CURRENT_DIR/setup/system" || exit
sudo bash hostname-setup.sh "$@"
}
usage() {
echo "Usage: bash $0 [command] [args]"
echo ''
echo 'Commands:'
echo ' setup Show welcome message'
echo ' ssh_port Change ssh port'
echo ' ssh_timeout Configure SSH timeout (auto disconnect after 5min idle)'
echo ' php Install php'
echo ' php_extension Install php extension'
echo ' lazydocker Install lazydocker'
echo ' docker Install Docker & Docker Compose (with optional lazydocker)'
echo ' global_dev Setup NVM, NPM, Yarn, ZSH globally for all users'
echo ' add_dev_user Add user(s) to developers group for NVM/NPM/Yarn access'
echo ' zabbix_server Install Zabbix Server (auto-detect Nginx/Apache)'
echo ' zabbix_client Install Zabbix Agent (client) [server_ip]'
echo ' update_zabbix_ip Update Zabbix Server IP for installed agent [new_ip]'
echo ' hostname Change system hostname [new_hostname]'
echo ' fix_mysql Fix MySQL frozen issue after MariaDB to MySQL migration'
echo ''
echo 'Args for global_dev:'
echo ' -f, --force Force copy/update dotfiles to all existing users'
echo ''
echo 'Args for add_dev_user:'
echo ' <username> Username(s) to add to developers group'
echo ' --all, -a Add all non-system users to developers group'
echo ''
echo 'Args for ssh_port:'
echo ' [port] New ssh port (valid port number)'
echo ''
echo 'Args for php_extension:'
echo ' [version] PHP version (valid version number)'
echo ''
echo 'Args for zabbix_client:'
echo ' [server_ip] Zabbix Server IP (optional, will prompt if not provided)'
echo ''
echo 'Args for update_zabbix_ip:'
echo ' [new_ip] New Zabbix Server IP (optional, will prompt if not provided)'
echo ''
echo 'Args for hostname:'
echo ' [new_hostname] New hostname (optional, will prompt if not provided)'
echo ''
echo 'Example:'
echo " bash $0 setup"
echo " bash $0 ssh_port 12345"
echo " bash $0 ssh_timeout"
echo " bash $0 php"
echo " bash $0 php_extension 8.4"
echo " bash $0 lazydocker"
echo " bash $0 global_dev"
echo " bash $0 global_dev -f"
echo " bash $0 add_dev_user john"
echo " bash $0 add_dev_user john mary bob"
echo " bash $0 add_dev_user --all"
echo " bash $0 zabbix_server"
echo " bash $0 zabbix_client"
echo " bash $0 zabbix_client 192.168.1.100"
echo " bash $0 update_zabbix_ip"
echo " bash $0 update_zabbix_ip 192.168.1.200"
echo " bash $0 hostname"
echo " bash $0 hostname myserver"
echo " bash $0 fix_mysql"
echo " bash $0 docker"
echo ''
}
case "${1:-}" in
setup | s | a)
setup
;;
ssh_port | sp)
change_ssh_port
;;
ssh_timeout | st)
ssh_timeout
;;
php | php-install)
php
;;
php_extension | pe)
php_extension "${2:-}"
;;
lazydocker | ld)
lazydocker
;;
docker)
docker_setup
;;
global_dev | gd)
global_dev_setup "$@"
;;
add_dev_user | adu)
add_dev_user "$@"
;;
zabbix_server | zs)
zabbix_server
;;
zabbix_client | zc)
zabbix_client "${2:-}"
;;
update_zabbix_ip | uzi)
update_zabbix_ip "${2:-}"
;;
fix_mysql | fix_mysql_frozen | fmf)
fix_mysql_frozen
;;
hostname | hn)
shift # Remove command name
hostname_setup "$@"
;;
*)
usage
exit 1
;;
esac
# Run enable ssh service at the end to avoid ssh connection lost when changing ssh port if user forgets to enable ssh service after changing port
# Enable ssh service also if ssh is disabled
if ! systemctl is-enabled ssh >/dev/null 2>&1; then
echo "Enabling SSH service..."
sudo systemctl enable ssh
echo "✓ SSH service enabled"
fi