
Como no he tenido mucho tiempo, pido disculpas por no ser más extensa en las explicaciones. Pero si alguien necesita una descripción mayor de alguno de los apartados puede pedirlo en este hilo.
MATERIALES
HARDWARE
- Raspberry Pi 3B+
- HD USB 1TB
SOFTWARE
- 2018-11-13-raspbian-stretch-lite.img
INFORMACION ADICIONAL
No es necesario incluir SD porque el modelo Raspberry Pi 3B+ puede arrancar directamente desde USB sin ninguna modificación previa, por lo tanto, sólo hay que grabar la imagen directamente en el HD. La configuración la he realizado mediante SSH.
EMPEZAMOS



AÑADIMOS LOS REPOSITORIOS Y ACTUALIZAMOS EL SISTEMA
Código: Seleccionar todo
wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -
echo "deb https://packages.sury.org/php/ stretch main" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt-get update && sudo apt-get upgrade
Código: Seleccionar todo
sudo apt-get install php7.2 php7.2-bz2 php7.2-cli php7.2-curl php7.2-gd php7.2-fpm php7.2-intl php7.2-json php7.2-mbstring php-pear php7.2-imap php-memcache php7.2-pspell php7.2-recode php7.2-tidy php7.2-xmlrpc php7.2-xsl php7.2-mysql php7.2-opcache php7.2-xml php7.2-zip php7.2-dev php-imagick redis-server php-redis libapache2-mod-php7.2 mariadb-server apache2
Código: Seleccionar todo
sudo a2enmod proxy_fcgi setenvif
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime
sudo a2enconf php7.2-fpm
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo systemctl restart apache2
Código: Seleccionar todo
sudo apt-get -y install libmcrypt-dev
sudo pecl install mcrypt-1.0.1
libmcrypt prefix? [autodetect] :
PULSA "ENTER" PARA LA AUTODETECCION
CUANDO TERMINE APARECERÁ ALGO COMO ESTO
...
Build process completed successfully
Installing '/usr/lib/php/20170718/mcrypt.so'
install ok: channel://pecl.php.net/mcrypt-1.0.1
configuration option "php_ini" is not set to php.ini location
You should add "extension=mcrypt.so" to php.ini
AHORA TENEMOS QUE AÑADIR LA EXTENSION A “cli” Y “Apache”
Código: Seleccionar todo
sudo bash -c "echo extension=/usr/lib/php/20170718/mcrypt.so > /etc/php/7.2/cli/conf.d/mcrypt.ini"
sudo bash -c "echo extension=/usr/lib/php/20170718/mcrypt.so > /etc/php/7.2/apache2/conf.d/mcrypt.ini"
Código: Seleccionar todo
php -i | grep "mcrypt"
/etc/php/7.2/cli/conf.d/mcrypt.ini
Registered Stream Filters => zlib.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, convert.iconv.*, mcrypt.*, mdecrypt.*
mcrypt
mcrypt support => enabled
mcrypt_filter support => enabled
mcrypt.algorithms_dir => no value => no value
mcrypt.modes_dir => no value => no value
COMPROBAMOS LAS VERSIONES INSTALADAS
Código: Seleccionar todo
php --version
mysql --version
SECURIZAMOS LA INSTALACION
Código: Seleccionar todo
sudo mysql_secure_installation
"Enter current password for root (enter for none):"
COMO EL PASSWORD DE root ESTÁ VACIO HAY QUE PULSAR ENTER
PREGUNTARÁ
"Set root password? [Y/n]"
RESPONDEMOS Y E INTRODUCIMOS EL PASSWORD QUE QUERAMOS PARA root EN LA BASE DE DATOS
A CONTINUACIÓN, NOS HARÁ UNA SERIE DE PREGUNTAS QUE DEBEMOS RESPONDER DE LA SIGUIENTE MANERA
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
CREAMOS LA BASE DE DATOS Y EL USUARIO PARA NEXTCLOUD
Código: Seleccionar todo
sudo mysql -u root -p
Código: Seleccionar todo
CREATE DATABASE nextcloud;
CREATE USER 'caylus'@'localhost' IDENTIFIED BY 'caylus123';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'caylus'@'localhost';
FLUSH PRIVILEGES;
exit;
Código: Seleccionar todo
sudo openssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/nextcloud.pem -keyout /etc/ssl/private/nextcloud.key
Country Name (2 letter code) [AU]: SP
State or Province Name (full name) [Some-State]: Mi_Casa
Locality Name (eg, city) []: Mi_Casa
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Caylus
Organizational Unit Name (eg, section) []: Caylus
Coomon Name (e.g. server FQDN or YOUR name) []: Caylus NUBE
Email Addres []: caylus@caylus.es
CONFIGURAMOS LOS CERTIFICADOS
Código: Seleccionar todo
sudo nano /etc/apache2/sites-enabled/default-ssl.conf
BUSCAMOS ssl-cert-snakeoil.pem Y LO SUSTITUIMOS POR nextcloud.pem
BUSCAMOS ssl-cert-snakeoil.key Y LO SUSTITUIMOS POR nextcloud.key
AÑADIMOS, JUSTO A CONTINUACIÓN, LO SIGUIENTE:
Código: Seleccionar todo
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
</IfModule>
INSTALACIÓN DE NEXTCLOUD
Código: Seleccionar todo
wget https://download.nextcloud.com/server/releases/nextcloud-15.0.2.zip
unzip nextcloud-15.0.2.zip
sudo cp -R /var/www/html /var/www/htmlviejo
sudo rm -R /var/www/html
sudo mv nextcloud /var/www/html
sudo rm nextcloud-15.0.2.zip
PARA HACER MÁS FÁCIL LA CONFIGURACIÓN DAMOS PERMISOS TOTALES TEMPORALMENTE
Código: Seleccionar todo
sudo chmod 777 -R /var/www/html

ESTO ES NORMAL DEBIDO A QUE LOS CERTIFICADOS SON AUTOFIRMADOS, ASI QUE PULSAMOS SOBRE Avanzado

PULSAMOS SOBRE Añadir excepción...

Y CONFIRMAMOS LA EXCEPCIÓN DE SEGURIDAD

YA TENEMOS ACCESO A LA PANTALLA DE CONFIGURACIÓN INICIAL DE NEXTCLOUD
YO HE CONFIGURADO EL SISTEMA DE DEMOSTRACIÓN CON LOS SIGUIENTES DATOS:
Nombre de usuario: caylus
Contraseña: caylus123
Carpeta de Datos: /var/www/html/data
Usuario de la base de datos: caylus
Contraseña de la base de datos: caylus123
Nombre de la base de datos: nextcloud
localhost

AHORA PULSAMOS SOBRE Completar la instalación
ES NORMAL QUE TARDE, ASÍ QUE NO OS PREOCUPÉIS Y OS APARECERÁ ESTO CUANDO TERMINE

AHORA VAMOS A LA Configuración

Y VEREMOS ESTO

VAMOS A Administración -> Vista general

COMO VEIS, HAY MUCHAS ALERTAS DE SEGURIDAD, PERO NO OS PREOCUPÉIS QUE LAS VAMOS A SOLUCIONAR A CONTINUACIÓN.
VAMOS A Administración -> Ajuste básicos

Y SELECCIONAMOS Cron PARA Trabajos en segundo plano

NOS PEDIRÁ LA CONTRASEÑA DE ADMINISTRADOR QUE PUSIMOS ANTERIORMENTE, EN MI CASO caylus123

COMO PODEMOS VER EN Manejo de archivos EL TAMAÑO DE SUBIDA MÁXIMO ES DE 2GB QUE DEBEMOS TENER EN CUENTA EN LAS CONFIGURACIONES QUE HAREMOS A CONTINUACIÓN PARA TERMINAR DE CONFIGURAR NEXTCLOUD.
RESOLVER LOS ERRORES DE CONFIGURACIÓN
ACCEDEMOS, DE NUEVO, POR ssh
CREAMOS LA CARPETA PARA LOS ARCHIVOS TEMPORALES DURANTE LA SUBIDA Y AUMENTAMOS A 2GB EL LIMITE DE LOS ARCHIVOS
CREAMOS LA CARPETA PARA LOS ARCHIVOS TEMPORALES
Código: Seleccionar todo
sudo mkdir /var/www/temporales
sudo chmod 777 -R /var/www/temporales
Código: Seleccionar todo
sudo cp /etc/php/7.2/fpm/php.ini /etc/php/7.2/fpm/php.ini.original
sudo nano /etc/php/7.2/fpm/php.ini
BUSCAMOS:
;upload_tmp_dir =
Y LO MODIFICAMOS A:
upload_tmp_dir = /var/www/temporales
BUSCAMOS:
upload_max_filesize = 2M
Y LO MODIFICAMOS A:
upload_max_filesize = 2G
BUSCAMOS:
post_max_size = 8M
Y LO MODIFICAMOS A:
post_max_size = 2G
Código: Seleccionar todo
sudo cp /etc/php/7.2/apache2/php.ini /etc/php/7.2/apache2/php.ini.original
sudo nano /etc/php/7.2/apache2/php.ini
BUSCAMOS:
;upload_tmp_dir =
Y LO MODIFICAMOS A:
upload_tmp_dir = /var/www/temporales
BUSCAMOS:
upload_max_filesize = 2M
Y LO MODIFICAMOS A:
upload_max_filesize = 2G
BUSCAMOS:
post_max_size = 8M
Y LO MODIFICAMOS A:
post_max_size = 2G
Código: Seleccionar todo
sudo cp /var/www/html/.htaccess /var/www/html/.htaccess.original
sudo nano /var/www/html/.htaccess
BUSCAMOS EL MODULO "<IfModule mod_php7.c>
DENTRO DEL MODULO BUSCAMOS:
php_value upload_max_filesize = 511M
Y LO MODIFICAMOS A:
php_value upload_max_filesize = 2G
BUSCAMOS:
php_value post_max_size = 511M
Y LO MODIFICAMOS A:
php_value post_max_size = 2G
Código: Seleccionar todo
sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.original
sudo nano /etc/apache2/apache2.conf
BUSCAMOS LA LINEA <Directory /var/www/>
Y SUSTITUIMOS
AllowOverride None
POR
AllowOverride All
Código: Seleccionar todo
sudo nano /etc/php/7.2/apache2/php.ini
BUSCAR
;opcache.enable=1
SUSTITUIR POR
opcache.enable=1
BUSCAR
;opcache.enable_cli=0
SUSTITUIR POR
opcache.enable_cli=1
BUSCAR
;opcache.memory_consumption=128
SUSTITUIR POR
opcache.memory_consumption=128
BUSCAR
;opcache.interned_strings_buffer=8
SUSTITUIR POR
opcache.interned_strings_buffer=8
BUSCAR
;opcache.max_accelerated_files=10000
SUSTITUIR POR
opcache.max_accelerated_files=10000
BUSCAR
;opcache.revalidate_freq=2
SUSTITUIR POR
opcache.revalidate_freq=1
BUSCAR
;opcache.save_comments=1
SUSTITUIR POR
opcache.save_comments=1
-- GRABAMOS Y SALIMOS --
sudo nano /var/www/html/config/config.php
AÑADIR AL FINAL ANTES DE -> );
'default_language' => 'es',
'memcache.local' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
'timeout' => 0.0,
'password' => '', // Opcional, será usado si no está definido ningún password.
),
-- GRABAMOS Y SALIMOS --
Código: Seleccionar todo
sudo chown -R www-data:www-data /var/www/
Código: Seleccionar todo
cd /var/www/html
sudo -u www-data ./occ db:convert-filecache-bigint
NOS PREGUNTARÁ
Continue with the conversion (y/n)? [n]
RESPONDEMOS
y
VOLVEMOS A NUESTRA CARPETA HOME
cd
Código: Seleccionar todo
sudo cp /etc/crontab /etc/crontab.original
sudo nano /etc/crontab
AÑADIMOS
:/bin
AL FINAL DE LA LINEA "PATH"
AÑADIMOS LA SIGUIENTE LINEA AL FINAL DEL ARCHIVO
*/15 * * * * www-data php -f /var/www/html/cron.php > /dev/null 2>&1
GUARDAMOS Y SALIMOS
Código: Seleccionar todo
sudo reboot
ACCEDEMOS DE NUEVO POR WEB Y VAMOS A Administración -> Vista general

AHORA MIRAMOS EN Administración -> Ajustes básicos PARA COMPROBAR QUE EL TAMAÑO MÁXIMO ES EL CORRECTO

COMO PODÉIS VER TODO ESTÁ PERFECTAMENTE CONFIGURADO Y LISTO PARA SER UTILIZADO



Espero que os sea útil, pero si alguien tiene alguna duda, sugerencia o comentario no dudéis en hacérmelo saber.
Abrazos


