-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.sh
270 lines (140 loc) · 8.36 KB
/
setup.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
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
#!/bin/bash
NFS_IP="x.x.x.x"
NFS_LOGS="folder/folder/folder"
NFS_DATA="folder/folder/folder"
HOST_NIC="eth0"
HOST_IP="x.x.x.x"
HOST_SUBNET="32"
HOST_GATEWAY="x.x.x.x"
MYSQL_USER="root"
MYSQL_PASSWORD=""
NEXTCLOUD_USER="nextcloud"
NEXTCLOUD_PASSWORD="nextcloud"
# =================================================================================================================================================================================================== #
# --- UPDATE and UPGRADE ---
sudo apt update
sudo apt upgrade -y
sudo apt install -y openssh-server ufw wget git unzip htop
# =================================================================================================================================================================================================== #
# --- Allow SSH on FIREWALL ---
#sudo ufw default deny incoming
#sudo ufw default deny outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 2049/tcp
sudo ufw enable
# --- Setting up IP ---
sudo rm /etc/netplan/50-cloud-init.yaml
sudo wget https://raw.githubusercontent.com/LoBrol/ubuntu-nextcloud/main/file_to_be_copied/50-cloud-init.yaml -P /etc/netplan/
sudo sed -i 's/HOST_NIC/'${HOST_NIC}'/g' /etc/netplan/50-cloud-init.yaml
sudo sed -i 's/HOST_IP/'${HOST_IP}'/g' /etc/netplan/50-cloud-init.yaml
sudo sed -i 's/HOST_SUBNET/'${HOST_SUBNET}'/g' /etc/netplan/50-cloud-init.yaml
sudo sed -i 's/HOST_GATEWAY/'${HOST_GATEWAY}'/g' /etc/netplan/50-cloud-init.yaml
sudo netplan apply
# =================================================================================================================================================================================================== #
# --- Setting up NANO ---
sudo apt install -y nano
sudo rm /etc/nanorc
sudo wget https://raw.githubusercontent.com/LoBrol/ubuntu-nextcloud/main/file_to_be_copied/nanorc -P /etc/
# --- Setting up MOTD ---
sudo rm -rf /etc/legal
sudo chmod -x /etc/update-motd.d/10-help-text
sudo chmod -x /etc/update-motd.d/50-motd-news
sudo chmod -x /etc/update-motd.d/60-unminimize
# --- Setting up ZSH ---
sudo apt install -y zsh
echo "N exit" | sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
rm .zshrc
wget https://raw.githubusercontent.com/LoBrol/ubuntu-nextcloud/main/file_to_be_copied/.zshrc
wget https://raw.githubusercontent.com/LoBrol/ubuntu-nextcloud/main/file_to_be_copied/.p10k.zsh
chsh -s /bin/zsh
# --- Installing Avahi for mDNS ---
sudo apt install -y avahi-daemon
# =================================================================================================================================================================================================== #
# --- CONFIGURE NFS ---
sudo apt install -y nfs-common
sudo mkdir /mnt/NEXTCLOUD_LOGS
sudo mount ${NFS_IP}:${NFS_LOGS} /mnt/NEXTCLOUD_LOGS
echo "${NFS_IP}:${NFS_LOGS} /mnt/NEXTCLOUD_LOGS nfs defaults 0 0" | sudo tee -a /etc/fstab
sudo mkdir /mnt/NEXTCLOUD_DATA
sudo mount ${NFS_IP}:${NFS_DATA} /mnt/NEXTCLOUD_DATA
echo "${NFS_IP}:${NFS_DATA} /mnt/NEXTCLOUD_DATA nfs defaults 0 0" | sudo tee -a /etc/fstab
# --- CONFIGURE CACHE FOLDER ---
sudo mkdir /mnt/NEXTCLOUD_CACHE
sudo mount /dev/sdb1 /mnt/NEXTCLOUD_CACHE
echo "/dev/sdb1 /mnt/NEXTCLOUD_CACHE etx4 defaults 0 0" | sudo tee -a /etc/fstab
# =================================================================================================================================================================================================== #
# --- NEXTCLOUD ---
sudo apt install -y apache2 php libapache2-mod-php php-fpm libapache2-mod-fcgid mariadb-server php-gd php-mysql php-curl php-xml php-mbstring php-zip php-intl php-bcmath php-gmp
PHP_VERSION=$(php -v | grep '[1-9]\.[1-9]' -o -m 1)
FPM_CONF=$(ls /etc/apache2/conf-available/ | grep -E 'php.+-fpm' | awk -F '.conf' '{print $1}')
sudo a2dismod php${PHP_VERSION}
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo a2enconf ${FPM_CONF}
sudo a2enmod proxy
sudo a2enmod proxy_fcgi
sudo a2enmod setenvif
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime
sudo a2enmod ssl
sudo a2enmod http2
sudo a2dissite 000-default.conf
sudo rm /etc/apache2/apache2.conf
sudo wget https://raw.githubusercontent.com/LoBrol/ubuntu-nextcloud/main/file_to_be_copied/apache2.conf -P /etc/apache2/
sudo rm /etc/php/${PHP_VERSION}/fpm/php.ini
sudo wget https://raw.githubusercontent.com/LoBrol/ubuntu-nextcloud/main/file_to_be_copied/php.ini -P /etc/php/${PHP_VERSION}/fpm/
sudo rm /etc/php/${PHP_VERSION}/fpm/pool.d/www.conf
sudo wget https://raw.githubusercontent.com/LoBrol/ubuntu-nextcloud/main/file_to_be_copied/www.conf -P /etc/php/${PHP_VERSION}/fpm/pool.d/
sudo mysql --user ${MYSQL_USER} --password="${MYSQL_PASSWORD}" -e "CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
sudo mysql --user ${MYSQL_USER} --password="${MYSQL_PASSWORD}" -e "CREATE USER '${NEXTCLOUD_USER}'@'localhost' identified by '${NEXTCLOUD_PASSWORD}';"
sudo mysql --user ${MYSQL_USER} --password="${MYSQL_PASSWORD}" -e "GRANT ALL PRIVILEGES on nextcloud.* to '${NEXTCLOUD_USER}'@'localhost';"
sudo mysql --user ${MYSQL_USER} --password="${MYSQL_PASSWORD}" -e "FLUSH PRIVILEGES;"
sudo wget https://download.nextcloud.com/server/releases/latest.zip -P /var/www/
sudo unzip /var/www/latest.zip -d /var/www/
sudo rm /var/www/latest.zip
sudo chown -R www-data:www-data /var/www/nextcloud
sudo chown -R www-data:www-data /mnt/NEXTCLOUD_DATA
sudo chown -R www-data:www-data /mnt/NEXTCLOUD_LOGS
sudo chown -R www-data:www-data /mnt/NEXTCLOUD_CACHE
sudo wget https://raw.githubusercontent.com/LoBrol/ubuntu-nextcloud/main/file_to_be_copied/nextcloud.conf -P /etc/apache2/sites-available/
sudo wget https://raw.githubusercontent.com/LoBrol/ubuntu-nextcloud/main/file_to_be_copied/nextcloud_ssl.conf -P /etc/apache2/sites-available/
sudo a2ensite nextcloud.conf
sudo a2ensite nextcloud_ssl.conf
sudo service apache2 restart
# =================================================================================================================================================================================================== #
# --- MEMORY CACHING ---
sudo apt install -y php-apcu
sudo rm /etc/php/${PHP_VERSION}/mods-available/apcu.ini
sudo wget https://raw.githubusercontent.com/LoBrol/ubuntu-nextcloud/main/file_to_be_copied/apcu.ini -P /etc/php/${PHP_VERSION}/mods-available/
sudo phpenmod apcu
sudo rm /etc/php/${PHP_VERSION}/mods-available/igbinary.ini
sudo wget https://raw.githubusercontent.com/LoBrol/ubuntu-nextcloud/main/file_to_be_copied/igbinary.ini -P /etc/php/${PHP_VERSION}/mods-available/
sudo phpenmod igbinary
sudo systemctl restart php${PHP_VERSION}-fpm
sudo apt install -y redis-server php-redis
sudo phpenmod redis
sudo rm /etc/redis/redis.conf
sudo wget https://raw.githubusercontent.com/LoBrol/ubuntu-nextcloud/main/file_to_be_copied/redis.conf -P /etc/redis/
sudo systemctl restart redis
sudo usermod -a -G redis www-data
# =================================================================================================================================================================================================== #
# --- CRONTAB ---
sudo apt install -y cron
sudo -u www-data crontab -l | sed "\$a*/5 * * * * php --define apc.enable_cli=1 /var/www/nextcloud/cron.php" | sudo -u www-data crontab -
# =================================================================================================================================================================================================== #
# --- IMAGICK ---
sudo apt install -y php-imagick libmagickcore-6.q16-6-extra
sudo phpenmod imagick
sudo systemctl restart apache2
# =================================================================================================================================================================================================== #
# --- NEXTCLOUD CONFIG ---
sudo rm /var/www/nextcloud/config/config.php
sudo wget https://raw.githubusercontent.com/LoBrol/ubuntu-nextcloud/main/file_to_be_copied/config.php -P /var/www/nextcloud/config/
sudo chown -R www-data:www-data /var/www/nextcloud/config/config.php
sudo -u www-data php --define apc.enable_cli=1 /var/www/nextcloud/occ config:app:set files max_chunk_size --value 2147483648 # 2GB chunk