Skip to content

Commit a126ce1

Browse files
authored
Add files via upload
1 parent f1ea8aa commit a126ce1

File tree

1 file changed

+228
-0
lines changed

1 file changed

+228
-0
lines changed

nextcloud_latest.sh

Lines changed: 228 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,228 @@
1+
#!/bin/bash
2+
3+
# Me falta hacer que no omita la pagina de apps recomendadas al loguearme por primera vez https://mintlatam.com/index.php/core/apps/recommended
4+
5+
echo " ____ _____ _ ____ _ "
6+
echo " / __ \| ____|___ _ __ __ _ __| | __ _| _ \ _ _ _ __ (_) ___ __ _ "
7+
echo " / / _\` | _| / __| '_ \ / _\` |/ _\` |/ _\` | |_) | | | | '_ \| |/ __/ _\` |"
8+
echo "| | (_| | |___\__ \ |_) | (_| | (_| | (_| | _ <| |_| | | | | | (_| (_| |"
9+
echo " \ \__,_|_____|___/ .__/ \__,_|\__,_|\__,_|_| \_\__,__|_| |_|_|\___\__,_|"
10+
echo " \____/ |_| "
11+
12+
echo "\n"
13+
14+
# Ingresa tu dominio
15+
read -p 'Inserte su dominio, por ejemplo espadarunica.com: ' domain
16+
echo '\n'
17+
# Pide la región telefonica
18+
echo "\e[4mRegión telefónica\e[0m"
19+
echo "puede visitar https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements para más información"
20+
echo '\n'
21+
read -p 'Ingrese su región telefónica (AR, MX, US): ' phone_region
22+
echo '\n'
23+
# Pide los datos para la cuenta de administrador
24+
read -p "Ingresa el nombre de usuario para ingresar a Nextcloud: " NC_ADMIN_USER
25+
echo '\n'
26+
read -p "Ingresa la contraseña para ingresar a Nextcloud: " NC_ADMIN_PASS
27+
echo '\n'
28+
29+
#Instala los paquetes necesarios
30+
apt-get update
31+
apt-get -y install apache2 mariadb-server libapache2-mod-fcgid php-fpm php-gd php-mysql php-curl php-gmp php-mbstring php-intl php-imagick php-xml php-zip unzip memcached php-memcached redis-server php-redis php-bcmath php-bz2 php-imap php-smbclient php-ldap imagemagick ffmpeg
32+
33+
# Descarga y descomprime el archivo zip y mueve la carpeta a /var/www/html/nextcloud
34+
wget https://download.nextcloud.com/server/releases/latest.zip
35+
sudo unzip latest.zip -d /var/www/html/
36+
37+
#Obtiene la versión de PHP instalada
38+
PHP_VERSION=$(php -v | head -n 1 | cut -d " " -f 2 | cut -c 1,2,3)
39+
40+
#Configura Apache
41+
a2enmod rewrite
42+
a2enmod headers
43+
a2enmod env
44+
a2enmod dir
45+
a2enmod mime
46+
a2enmod proxy_fcgi setenvif
47+
a2enconf php${PHP_VERSION}-fpm
48+
a2enmod ssl
49+
a2ensite default-ssl
50+
51+
systemctl restart php${PHP_VERSION}-fpm.service
52+
systemctl restart apache2.service
53+
54+
55+
56+
57+
# Creamos el archivo de configuración de apache para Nextcloud, incluyendo las redirecciones
58+
sudo echo "<VirtualHost *:80>
59+
DocumentRoot /var/www/html/nextcloud/
60+
ServerName $domain
61+
62+
Redirect 301 /.well-known/carddav https://$domain/remote.php/dav
63+
Redirect 301 /.well-known/caldav https://$domain/remote.php/dav
64+
Redirect 301 /.well-known/webdav https://$domain/remote.php/dav
65+
66+
<Directory /var/www/html/nextcloud/>
67+
Require all granted
68+
AllowOverride All
69+
Options FollowSymLinks MultiViews
70+
71+
<IfModule mod_dav.c>
72+
Dav off
73+
</IfModule>
74+
75+
</Directory>
76+
</VirtualHost>" | sudo tee /etc/apache2/sites-available/nextcloud.conf
77+
78+
79+
# Habilitamos el archivo de configuración
80+
sudo a2ensite nextcloud.conf
81+
82+
# Configura la base de datos MariaDB
83+
84+
#DB_USER="runicblade"
85+
DB_USER="user_$(openssl rand -hex 4)"
86+
DB_PASS=$(openssl rand -base64 12)
87+
#DB_NAME="nextcloud"
88+
DB_NAME="db_$(openssl rand -hex 4)"
89+
DB_HOST="localhost"
90+
91+
sudo mysql -e "CREATE USER '$DB_USER'@'$DB_HOST' IDENTIFIED BY '$DB_PASS';"
92+
sudo mysql -e "CREATE DATABASE $DB_USER;"
93+
sudo mysql -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'$DB_HOST';"
94+
sudo mysql -e "FLUSH PRIVILEGES;"
95+
96+
cat <<EOF | sudo tee /var/www/html/nextcloud/config/autoconfig.php
97+
<?php
98+
\$AUTOCONFIG = array (
99+
'dbtype' => 'mysql',
100+
'dbname' => '$DB_NAME',
101+
'dbuser' => '$DB_USER',
102+
'dbpass' => '$DB_PASS',
103+
'dbhost' => '$DB_HOST',
104+
'dbtableprefix' => 'oc_',
105+
'adminlogin' => '$NC_ADMIN_USER',
106+
'adminpass' => '$NC_ADMIN_PASS',
107+
'directory' => '/var/www/html/nextcloud/data',
108+
'overwriteprotocol' => 'https',
109+
'overwrite.cli.url' => 'https://$domain',
110+
'overwritehost' => '$domain',
111+
);
112+
EOF
113+
114+
mkdir /var/nextcloud_data
115+
chown www-data:www-data /var/nextcloud_data
116+
# Permisos a datos de usuario
117+
chmod 755 /var/nextcloud_data
118+
119+
# Limpia los archivos innecesarios
120+
rm latest.zip
121+
122+
# Damos permisos a la carpeta HTML para el usuario www-data
123+
sudo chown -R www-data:www-data /var/www/html/nextcloud/
124+
sudo chmod -R ug+rw /var/www/html/nextcloud/
125+
sudo chmod -R 770 /var/www/html/nextcloud/config
126+
127+
sudo -u www-data php /var/www/html/nextcloud/occ maintenance:install --database "mysql" --database-name "$DB_NAME" --database-user "$DB_USER" --database-pass "$DB_PASS" --admin-user "$NC_ADMIN_USER" --admin-pass "$NC_ADMIN_PASS" --data-dir /var/nextcloud_data
128+
129+
##### Configuraciones de nextcloud config.php y www.conf #####
130+
131+
# Descomentamos las variables de www.conf
132+
sudo sed -i 's/;\(env\[HOSTNAME\] = \$HOSTNAME\)/\1/' /etc/php/${PHP_VERSION}/fpm/pool.d/www.conf
133+
sudo sed -i 's/;\(env\[PATH\] = \/usr\/local\/bin:\/usr\/bin:\/bin\)/\1/' /etc/php/${PHP_VERSION}/fpm/pool.d/www.conf
134+
sudo sed -i 's/;\(env\[TMP\] = \/tmp\)/\1/' /etc/php/${PHP_VERSION}/fpm/pool.d/www.conf
135+
sudo sed -i 's/;\(env\[TMPDIR\] = \/tmp\)/\1/' /etc/php/${PHP_VERSION}/fpm/pool.d/www.conf
136+
sudo sed -i 's/;\(env\[TEMP\] = \/tmp\)/\1/' /etc/php/${PHP_VERSION}/fpm/pool.d/www.conf
137+
138+
# Habilitamos el modulo gmp de php
139+
sed -i 's/;extension=gmp/extension=gmp/' /etc/php/${PHP_VERSION}/fpm/php.ini
140+
# Se agrega el dominio a los host confiables de nextcloud
141+
sudo sed -i "s/'localhost',/'localhost',\n 1 => '$domain',/" /var/www/html/nextcloud/config/config.php
142+
# Añadido para cloudflare (proxie inverso)
143+
sudo sed -i "/);/i \ 'overwriteprotocol' => 'https'," /var/www/html/nextcloud/config/config.php
144+
# overwrite.cli.url
145+
sudo sed -i "s/'overwrite.cli.url' => 'http:\/\/localhost',/'overwrite.cli.url' => 'https:\/\/$domain',/" /var/www/html/nextcloud/config/config.php
146+
# htaccess.RewriteBase
147+
sudo sed -i "/^);/i \ \ 'htaccess.RewriteBase' => '/'," /var/www/html/nextcloud/config/config.php
148+
# Región telefónica
149+
sudo sed -i "/);/i \ 'default_phone_region' => '$phone_region'," /var/www/html/nextcloud/config/config.php
150+
151+
# Configura la tarea cron para Nextcloud como usuario www-data
152+
sudo -u www-data crontab -l | { cat; echo "*/5 * * * * /usr/bin/php$PHP_VERSION /var/www/html/nextcloud/cron.php"; } | sudo -u www-data crontab -
153+
154+
# Añade la configuración de fondo (background) a config.php
155+
sudo -u www-data php /var/www/html/nextcloud/occ config:system:set background --value=cron
156+
157+
158+
# Configuración de Memcaches
159+
sudo sed -i "/);/i \ 'memcache.local' => '\\\\OC\\\\Memcache\\\\Redis'," /var/www/html/nextcloud/config/config.php
160+
sudo sed -i "/);/i \ 'memcache.distributed' => '\\\\OC\\\\Memcache\\\\Redis'," /var/www/html/nextcloud/config/config.php
161+
# redis
162+
sudo sed -i "/^);/i \ 'redis' => [\n 'host' => 'localhost',\n 'port' => 6379,\n ],\n 'memcache.locking' => '\\\\OC\\\\Memcache\\\\Redis'," /var/www/html/nextcloud/config/config.php
163+
164+
# Añadimos el usuario www-data al grupo redis
165+
sudo usermod -a -G redis www-data
166+
167+
# Actualizamos el archivo .htaccess
168+
sudo -u www-data php /var/www/html/nextcloud/occ maintenance:update:htaccess
169+
170+
# Cambiamos los valores de limitación de tamaño de archivos de php-fpm y user.ini
171+
172+
echo "upload_max_filesize = 8192M" >> /var/www/html/nextcloud/.user.ini
173+
echo "post_max_size = 8192M" >> /var/www/html/nextcloud/.user.ini
174+
sed -i 's/memory_limit = 128M/memory_limit = 1024M/g' /etc/php/${PHP_VERSION}/fpm/php.ini
175+
sed -i 's/post_max_size = 8M/post_max_size = 8192M/g' /etc/php/${PHP_VERSION}/fpm/php.ini
176+
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 8192M/g' /etc/php/${PHP_VERSION}/fpm/php.ini
177+
sed -i "s/output_buffering =.*/output_buffering = Off/g" /etc/php/${PHP_VERSION}/fpm/php.ini
178+
sed -i 's/max_execution_time = 30/max_execution_time = 3600/g' /etc/php/${PHP_VERSION}/fpm/php.ini
179+
sed -i 's/max_input_time = 60/max_input_time = 3600/g' /etc/php/${PHP_VERSION}/fpm/php.ini
180+
systemctl restart php${PHP_VERSION}-fpm.service
181+
182+
# Valores de configuración de OPcache para Nextcloud
183+
opcache_settings="zend_extension=opcache
184+
opcache.enable=1
185+
opcache.enable_cli=1
186+
opcache.memory_consumption=1024
187+
opcache.interned_strings_buffer=64
188+
opcache.max_accelerated_files=10000
189+
opcache.revalidate_freq=0
190+
"
191+
192+
echo "$opcache_settings" | sudo tee -a "/etc/php/"${PHP_VERSION}"/fpm/php.ini" >/dev/null
193+
194+
# Redis
195+
redis_settings="redis.session.locking_enabled=1
196+
redis.session.lock_retries=-1
197+
redis.session.lock_wait_time=10000
198+
"
199+
200+
echo "$redis_settings" | sudo tee -a "/etc/php/"${PHP_VERSION}"/fpm/php.ini" >/dev/null
201+
202+
203+
sudo systemctl restart apache2
204+
sudo systemctl restart php${PHP_VERSION}-fpm.service
205+
206+
echo '\n'
207+
208+
echo " ____ _____ _ ____ _ "
209+
echo " / __ \| ____|___ _ __ __ _ __| | __ _| _ \ _ _ _ __ (_) ___ __ _ "
210+
echo " / / _\` | _| / __| '_ \ / _\` |/ _\` |/ _\` | |_) | | | | '_ \| |/ __/ _\` |"
211+
echo "| | (_| | |___\__ \ |_) | (_| | (_| | (_| | _ <| |_| | | | | | (_| (_| |"
212+
echo " \ \__,_|_____|___/ .__/ \__,_|\__,_|\__,_|_| \_\__,__|_| |_|_|\___\__,_|"
213+
echo " \____/ |_| "
214+
215+
echo "\n"
216+
# Muestra los datos de la configuración
217+
echo "\e[4mDatos de la base de datos Nextcloud:\e[0m"
218+
echo "URL: $domain"
219+
echo "Usuario de la base de datos: ${DB_USER}"
220+
echo "Contraseña de la base de datos: ${DB_PASS}"
221+
echo "Nombre de la base de datos: ${DB_NAME}"
222+
echo "Host de la base de datos: ${DB_HOST}"
223+
echo '\n'
224+
echo "\e[4mDatos del usuario Nextcloud:\e[0m"
225+
echo "Usuario de administrador de Nextcloud: ${NC_ADMIN_USER}"
226+
echo "Contraseña de administrador de Nextcloud: ${NC_ADMIN_PASS}"
227+
echo '\n'
228+
echo "Ingrese a https://$domain"

0 commit comments

Comments
 (0)