-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathinstall.sh
More file actions
312 lines (248 loc) · 7.82 KB
/
install.sh
File metadata and controls
312 lines (248 loc) · 7.82 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
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
########## Variables ####################
#"$DIR/path/to/file"
DIR=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
#default website
WEBSITE="example.com"
#default admin subwebsite
ADMINSD="tools"
#default origin subwebsite
ORIGINSD="origin"
#default IP address
IP="127.0.0.1"
#default db root password
DB_ROOTP="rootpass"
#default db user
DB_USER="db_user"
#default db name
DB_NAME="db_name"
#default db user password
DB_PASS="db_pass"
#default global db access - not implemented
DB_GLOB=false
#default ftp user
FTP_USER="ftpuser"
#default ftp password
FTP_PASS="ftppass"
#default admin user
ADMIN_USER="adminname"
#default admin pass
ADMIN_PASS="adminpass"
#default filemanager user
FILEM_USER="admin"
#default filemanager pass
FILEM_PASS="admin"
for i in "$@"
do
case $i in
-w=*|--website=*)
WEBSITE="${i#*=}"
shift
;;
-ip=*|--ip=*)
IP="${i#*=}"
shift
;;
-dbrp=*|--dbrootpass=*)
DB_ROOTP="${i#*=}"
shift
;;
-dbu=*|--dbuser=*)
DB_USER="${i#*=}"
shift
;;
-dbn=*|--dbname=*)
DB_NAME="${i#*=}"
shift
;;
-dbp=*|--dbpass=*)
DB_PASS="${i#*=}"
shift
;;
-dbg=*|--dbglobal=*)
DB_GLOB="${i#*=}"
shift
;;
-ftpu=*|--ftpuser=*)
FTP_USER="${i#*=}"
shift
;;
-ftpp=*|--ftppass=*)
FTP_PASS="${i#*=}"
shift
;;
-asd=*|--adminsd=*)
ADMINSD="${i#*=}"
shift
;;
-osd=*|--originsd=*)
ORIGINSD="${i#*=}"
shift
;;
-au=*|--adminuser=*)
ADMIN_USER="${i#*=}"
shift
;;
-ap=*|--adminpass=*)
ADMIN_PASS="${i#*=}"
shift
;;
-fmu=*|--filemuser=*)
FILEM_USER="${i#*=}"
shift
;;
-fmp=*|--filempass=*)
FILEM_PASS="${i#*=}"
shift
;;
--default)
DEFAULT=YES
shift # past argument with no value
;;
*)
# unknown option
;;
esac
done
########## Update all Packages ##############
sudo apt-get update
sudo apt-get upgrade -y
########## Required #########################
sudo apt-get install git-core
sudo apt-get install unzip
########## Admin Folder #####################
sudo mkdir /var/www
sudo mkdir /var/www/html
sudo mkdir /var/www/admin
############################################
############## Installation ################
############################################
########## Install NGINX ###################
sudo apt-get install nginx -y
########## Adjust Firewall #################
#sudo ufw allow 'Nginx Full'
########## Install MariaDb #################
sudo apt-get install mariadb-server mariadb-client -y
########## Install PHP7.2 ##################
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php -y
sudo apt-get update
sudo apt-get install php7.2-fpm php7.2-common php7.2-mbstring php7.2-xmlrpc php7.2-gd php7.2-xml php7.2-mysql php7.2-cli php7.2-zip php7.2-curl php7.2-gd -y
########## Install VSFTPD ##################
sudo apt-get install vsftpd -y
########## Install PHPMYADMIN ##############
sudo mkdir /var/www/admin/phpmyadmin
cd /var/www/admin/phpmyadmin
sudo wget -c https://files.phpmyadmin.net/phpMyAdmin/4.8.0.1/phpMyAdmin-4.8.0.1-english.zip -O phpmyadmin.zip
sudo unzip phpmyadmin.zip
sudo mv phpMyAdmin-4.8.0.1-english/* .
sudo rm phpmyadmin.zip
sudo rm -r phpMyAdmin-4.8.0.1-english
cd /
########## Install Adminer #################
sudo mkdir /var/www/admin/adminer
cd /var/www/admin/adminer
sudo wget -c https://www.adminer.org/latest-en.php -O index.php
cd /
########## Install File manager ############
sudo mkdir /var/www/admin/filemanager
cd /var/www/admin/filemanager
sudo git clone https://github.com/prasathmani/tinyfilemanager
sudo mv tinyfilemanager/tinyfilemanager.php index.php
sudo rm -r tinyfilemanager
cd /
########## Install Net2FTP #################
sudo mkdir /var/www/admin/net2ftp
cd /var/www/admin/net2ftp
sudo wget -c http://www.net2ftp.com/download/net2ftp_v1.1.zip -O net2ftp.zip
sudo unzip net2ftp.zip
sudo mv net2ftp_v1.1/files_to_upload/* .
sudo rm net2ftp.zip
sudo rm -r net2ftp_v1.1
cd /
########## Custom Admin Panel ######################
sudo cp -r "$DIR"/admin/* /var/www/admin
sudo echo "<?php phpinfo();?>" | sudo tee -a /var/www/admin/phpinfo.php
########## Lets Encrypt Installation #################
sudo apt-get update
sudo apt-get install software-properties-common -y
sudo add-apt-repository ppa:certbot/certbot -y
sudo apt-get update
sudo apt-get install certbot -y
############################################
############## Configuration ###############
############################################
########## Configure Nginx #################
#Backup old config files
sudo mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.old
sudo mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.old
#Copy new config files
sudo cp "$DIR"/nginx/nginx.conf /etc/nginx/
sudo cp "$DIR"/nginx/sites-available/default /etc/nginx/sites-available/
sudo cp "$DIR"/nginx/snippets/* /etc/nginx/snippets/
sudo cp "$DIR"/html/* /var/www/html
#Edit website name
sudo sed -i "s/example.com/$WEBSITE/g" /etc/nginx/sites-available/default
sudo sed -i "s/tools/$ADMINSD/g" /etc/nginx/sites-available/default
sudo sed -i "s/origin/$ORIGINSD/g" /etc/nginx/sites-available/default
sudo sed -i "s/example.com/$WEBSITE/g" /etc/nginx/snippets/ssl-example.com.conf
sudo mv /etc/nginx/snippets/ssl-example.com.conf /etc/nginx/snippets/ssl-"$WEBSITE".conf
#Make cache directory
sudo mkdir /etc/nginx/cache
sudo chown -R www-data:www-data /etc/nginx/cache
sudo chmod -R g+w /etc/nginx/cache
#Restart nginx for changes to take place
sudo service nginx restart
########## Configure Mariadb ###############
sudo echo -e "\n\n$DB_ROOTP\n$DB_ROOTP\n\n\n\n\n " | mysql_secure_installation
sudo mysql -u root -p=$DB_ROOTP <<_EOF_
CREATE DATABASE $DB_NAME;
CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';
FLUSH PRIVILEGES;
_EOF_
if [ "$DB_GLOB" = true ] ; then
sudo mysql -u root -p=$DB_ROOTP <<_EOF_
GRANT ALL ON * . * TO '$DB_USER'@'localhost';
FLUSH PRIVILEGES;
_EOF_
else
sudo mysql -u root -p=$DB_ROOTP <<_EOF_
GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS' WITH GRANT OPTION;
FLUSH PRIVILEGES;
_EOF_
fi
########## Download WordPress ##############
cd /var/www/html/
sudo wget -c https://wordpress.org/latest.zip -O wordpress.zip
sudo unzip wordpress.zip
sudo mv wordpress/* .
sudo rm wordpress.zip
sudo rm -r wordpress
cd /
########## Php Config ######################
sudo mv /etc/php/7.2/fpm/php.ini /etc/php/7.2/fpm/php.ini.old
sudo cp "$DIR"/php/php.ini /etc/php/7.2/fpm/
sudo service php7.2-fpm restart
########## Add FTP USER ####################
sudo adduser --quiet --disabled-password --shell /bin/bash --home /home/$FTP_USER --gecos "User" $FTP_USER
sudo echo "$FTP_USER:$FTP_PASS" | chpasswd
sudo usermod -a -G www-data $FTP_USER
sudo usermod -g www-data $FTP_USER
sudo chown -R www-data:www-data /var/www
sudo chmod -R g+w /var/www
########## FTP Config ######################
sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/ssl/private/vsftpdserverkey.pem -out /etc/ssl/certs/vsftpdcertificate.pem -days 365
sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.old
sudo cp "$DIR"/vsftpd/vsftpd.conf /etc/
sudo echo "$FTP_USER" | sudo tee -a /etc/vsftpd.userlist
sudo sed -i "s/<ip_address>/$IP/g" /etc/vsftpd.conf
sudo service vsftpd restart
########## Simple File Manager Config ############
sed -i "/\/\/12345/d" /var/www/admin/filemanager/index.php
sed -i 's/$root_path = $_SERVER.*/$root_path = "\/var\/www";/g' /var/www/admin/filemanager/index.php
FILEMD_PASS=$(echo -n $FILEM_PASS | md5sum | cut -f1 -d' ')
FILEMD_USER="'$FILEM_USER' => '$FILEMD_PASS',";
sed -i "s/.*\/\/admin/$FILEMD_USER/g" /var/www/admin/filemanager/index.php
########## Admin Folder Password ######################
sudo sh -c "echo -n '$ADMIN_USER:' >> /var/www/admin/.htpasswd"
sudo sh -c "openssl passwd -apr1 '$ADMIN_PASS' >> /var/www/admin/.htpasswd"
cat /var/www/admin/.htpasswd