
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 2 TB
SOFTWARE
- 2020-05-27-raspios-buster-armhf.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.
Para la RPI 4 podéis seguir el manual “RPI 4: Tutorial para arrancar desde un HD en un USB3” que hice hace unos meses y que se encuentra aquí viewtopic.php?f=6&t=14627.
EMPEZAMOS



ACTUALIZAMOS EL SISTEMA
INSTALAMOS PHP-7.3.19, MARIADB-15.1, APACHE-2.4.38 Y OTROS ELEMENTOS NECESARIOS
INSTALAMOS "mcrypt" Y SUS LIBRERIAS
CONFIGURACION DE LA BASE DE DATOS
GENERAMOS LOS CERTIFICADOS AUTOFIRMADOS Y LOS CONFIGURAMOS
Aunque mi recomendación es que consigáis un Certificado SSL de Validación de Dominio si vais a poner vuestra nube en producción y con acceso a internet, aquí vamos a generar un certificado autofirmado.
INSTALACIÓN DE NEXTCLOUD
CONFIGURACION Y ADMINISTRACION DE NEXTCLOUD
ACCEDEMOS DESDE OTRO ORDENADOR CON "https://ip_de_nuestro_server" PARA LA CONFIGURACIÓN WEB INICIAL DE NEXTCLOUD
Como hemos autofirmado los certificados nos dará un error el siguiente error:

Como estamos seguros de que somos nosotros los que queremos acceder. Pulsamos sobre "Configuración avanzada".

Ahora ya podemos acceder al servidor. Pulsando sobre "Acceder a 192.168.1.100 (sitio no seguro)"

Es el momento de crear la cuenta de administrador y configurar el acceso a la base de datos que creamos anteriormente. Aconsejo permitir la instalación automática de las aplicaciones recomendadas: Correo, calendario, contactos, mensajería instantánea y otros.

Pulsamos sobre "Finish setup"... y no preocuparos si tarda.

Durante la instalación de las Aplicaciones Recomendadas veréis que “Collabora Online – Buid-in CODE Server” no se instala. Quiero hacer constar que NO es un fallo de instalación de NextCloud sino de un problema de Licencias. Ascensio System SIA , propietaria de OnlyOffice, ha añadido algunos términos en la sección 7 de la licencia (A)GPL limitando el alcance de su uso. Que se resume, básicamente, en: si no pagas, no lo usas. Aunque existen formas de hacer que funcione, no es mi estilo fomentar ese tipo de modificaciones.

Una vez que termine tendremos la pantalla de presentación.

Y ya podremos acceder.

Vamos a Setting.

Y cambiamos el idioma y locales.

Quedando de esta forma.

Ahora vamos a Ajustes básicos para configurar los trabajos en segundo plano y elegimos Cron como servicio.

Miramos en Vista general para comprobar los Avisos de seguridad y configuración que debemos resolver.

Regresamos a la consola para resolver los problemas.
FINALIZANDO LA CONFIGURACIÓN
Entramos vía web para comprobar los Avisos de seguridad y configuración. Ya no hay ninguno y hemos configurado correctamente el servidor NextCloud.

Si creamos otro usuario podremos chatear.


Consultar nuestro correo.

Consultar nuestros contactos.

Ver nuestro calendario.

Y podremos añadir multitud de Apps disponibles para todas nuestras necesidades.

MODIFICAR LOS DOMINIOS PERMITIDOS PARA ACCESO DESDE INTERNET
Código: Seleccionar todo
sudo apt-get update && sudo apt-get -y upgrade
Código: Seleccionar todo
sudo apt -y install php php-{bz2,cli,curl,gd,fpm,intl,json,mbstring,pear,imap,pear,memcache,pspell,recode,tidy,xmlrpc,mysql,xml,zip,dev,imagick,redis,bcmath,gmp} php7.3-opcache php7.3-xsl libapache2-mod-php redis-server mariadb-server apache2 curl git
ACTIVAMOS LOS MÓDULOS NECESARIOS
sudo a2enmod proxy_fcgi setenvif
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime
sudo a2enconf php7.3-fpm
sudo a2enmod ssl
sudo a2ensite default-ssl
REINICIAMOS APACHE
sudo systemctl restart apache2
Código: Seleccionar todo
sudo apt-get -y install libmcrypt-dev
sudo pecl channel-update pecl.php.net
sudo pecl install mcrypt-1.0.3
CUANDO APAREZCA
libmcrypt prefix? [autodetect] :
PULSA "ENTER" PARA LA AUTODETECCION
AHORA TENEMOS QUE AÑADIR LA EXTENSION A “cli” Y “Apache”
sudo bash -c "echo extension=/usr/lib/php/20180731/mcrypt.so > /etc/php/7.3/cli/conf.d/mcrypt.ini"
sudo bash -c "echo extension=/usr/lib/php/20180731/mcrypt.so > /etc/php/7.3/apache2/conf.d/mcrypt.ini"
VERIFICAMOS QUE LA EXTENSIÓN ESTÁ INSTALADA
php -i | grep "mcrypt"
QUE DEBE DAR UNA SALIDA COMO ESTA
/etc/php/7.3/cli/conf.d/mcrypt.ini
Registered Stream Filters => zlib.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, bzip2.*, 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
Código: Seleccionar todo
SECURIZAMOS LA INSTALACION
sudo mysql_secure_installation
SALDRÁ
"Enter current password for root (enter for none):"
COMO EL PASSWORD DE root PARA MARIADB ESTÁ VACIO PULSAR "ENTER"
PREGUNTARÁ
"Set root password? [Y/n]"
RESPONDEMOS Y - E INTRODUCIMOS EL PASSWORD QUE QUERAMOS PARA root EN LA BASE DE DATOS -> Magdalenas
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
sudo mysql -u root -p
UNA VEZ INTRODUCIDO EL PASSWORD QUE HEMOS PUESTO ANTERIORMENTE PARA root CREAMOS LA BASE DE DATOS QUE USARÁ NEXTCLOUD Y EL USUARIO QUE TENDRÁ ACCESO A ELLA.
CREATE DATABASE nextcloud;
CREATE USER 'caylus'@'localhost' IDENTIFIED BY 'Magdalenas123';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'caylus'@'localhost';
FLUSH PRIVILEGES;
exit;
Aunque mi recomendación es que consigáis un Certificado SSL de Validación de Dominio si vais a poner vuestra nube en producción y con acceso a internet, aquí vamos a generar un certificado autofirmado.
Código: Seleccionar todo
sudo openssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/nextcloud.pem -keyout /etc/ssl/private/nextcloud.key
HAY QUE RESPONDER A LAS SIGUIENTES PREGUNTAS PARA GENERAR LOS CERTIFICADOS:
Country Name (2 letter code) [AU]: SP
State or Province Name (full name) [Some-State]: Mi_mundo
Locality Name (eg, city) []: Mi_ciudad
Organization Name (eg, company) [Internet Widgits Pty Ltd]: La_chica_de_la_lluvia
Organizational Unit Name (eg, section) []: La_chica_de_la_lluvia
Coomon Name (e.g. server FQDN or YOUR name) []: caylus
Email Addres []: caylus@lachicadelalluvia.com
CAMBIAMOS LOS CERTIFICADOS POR DEFECTO DEL ARCHIVO default-ssl POR LOS NUESTROS
sudo sed -i 's/ssl-cert-snakeoil/nextcloud/g' /etc/apache2/sites-enabled/default-ssl.conf
AÑADIMOS AL ARCHIVO default-ssl EL "Strict-Transport-Security"
sudo nano /etc/apache2/sites-enabled/default-ssl.conf
BUSCAMOS DONDE ESTÁN NUESTROS CERTIFICADOS PARA nextcloud Y AÑADIMOS DEBAJO LAS SIGUIENTES LINEAS
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
</IfModule>
Código: Seleccionar todo
wget https://download.nextcloud.com/server/releases/nextcloud-19.0.1.zip
unzip nextcloud-19.0.1.zip
sudo rm -R /var/www/html
sudo mv nextcloud /var/www/html
sudo rm nextcloud-19.0.1.zip
DAMOS PERMISOS TOTALES TEMPORALMENTE PARA EVITAR PROBLEMAS DE INSTALACIÓN
sudo chmod 777 -R /var/www/html
CONFIGURACION Y ADMINISTRACION DE NEXTCLOUD
ACCEDEMOS DESDE OTRO ORDENADOR CON "https://ip_de_nuestro_server" PARA LA CONFIGURACIÓN WEB INICIAL DE NEXTCLOUD
Como hemos autofirmado los certificados nos dará un error el siguiente error:

Como estamos seguros de que somos nosotros los que queremos acceder. Pulsamos sobre "Configuración avanzada".

Ahora ya podemos acceder al servidor. Pulsando sobre "Acceder a 192.168.1.100 (sitio no seguro)"

Es el momento de crear la cuenta de administrador y configurar el acceso a la base de datos que creamos anteriormente. Aconsejo permitir la instalación automática de las aplicaciones recomendadas: Correo, calendario, contactos, mensajería instantánea y otros.

Pulsamos sobre "Finish setup"... y no preocuparos si tarda.

Durante la instalación de las Aplicaciones Recomendadas veréis que “Collabora Online – Buid-in CODE Server” no se instala. Quiero hacer constar que NO es un fallo de instalación de NextCloud sino de un problema de Licencias. Ascensio System SIA , propietaria de OnlyOffice, ha añadido algunos términos en la sección 7 de la licencia (A)GPL limitando el alcance de su uso. Que se resume, básicamente, en: si no pagas, no lo usas. Aunque existen formas de hacer que funcione, no es mi estilo fomentar ese tipo de modificaciones.

Una vez que termine tendremos la pantalla de presentación.

Y ya podremos acceder.

Vamos a Setting.

Y cambiamos el idioma y locales.

Quedando de esta forma.

Ahora vamos a Ajustes básicos para configurar los trabajos en segundo plano y elegimos Cron como servicio.

Miramos en Vista general para comprobar los Avisos de seguridad y configuración que debemos resolver.

Regresamos a la consola para resolver los problemas.
FINALIZANDO LA CONFIGURACIÓN
Código: Seleccionar todo
CREAMOS LA CARPETA PARA LOS TEMPORALES
sudo mkdir /var/www/temporales
sudo chmod 777 -R /var/www/temporales
EDITAMOS EL ARCHIVO /etc/php/7.3/fpm/php.ini
sudo nano /etc/php/7.3/fpm/php.ini
BUSCAMOS :
;upload_tmp_dir =
CAMBIANDOLO POR:
upload_tmp_dir = /var/www/temporales
MODIFICAMOS EL TAMAÑO MÁXIMO PERMITIDO PARA LA SUBIDA DE ARCHIVOS
sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 2G/g' /etc/php/7.3/fpm/php.ini
sudo sed -i 's/post_max_size = 8M/post_max_size = 2G/g' /etc/php/7.3/fpm/php.ini
EDITAMOS EL ARCHIVO /etc/php/7.3/apache2/php.ini
sudo nano /etc/php/7.3/apache2/php.ini
BUSCAMOS :
;upload_tmp_dir =
CAMBIANDOLO POR:
upload_tmp_dir = /var/www/temporales
MODIFICAMOS EL TAMAÑO MÁXIMO PERMITIDO PARA LA SUBIDA DE ARCHIVOS
sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 2G/g' /etc/php/7.3/apache2/php.ini
sudo sed -i 's/post_max_size = 8M/post_max_size = 2G/g' /etc/php/7.3/apache2/php.ini
EDITAMOS APACHE PARA EVITAR PROBLEMAS CON .htacces
sudo nano /etc/apache2/apache2.conf
BUSCAMOS LA LINEA <Directory /var/www/>
Y SUSTITUIMOS
AllowOverride None
POR
AllowOverride All
HACEMOS LAS MODIFICACIONES NECESARIAS DEL OPCACHE Y EL LIMITE DE MEMORIA
sudo sed -i 's/;opcache.enable=1/opcache.enable=1/g' /etc/php/7.3/apache2/php.ini
sudo sed -i 's/;opcache.enable_cli=0/opcache.enable_cli=1/g' /etc/php/7.3/apache2/php.ini
sudo sed -i 's/;opcache.memory_consumption=128/opcache.memory_consumption=128/g' /etc/php/7.3/apache2/php.ini
sudo sed -i 's/;opcache.interned_strings_buffer=8/opcache.interned_strings_buffer=8/g' /etc/php/7.3/apache2/php.ini
sudo sed -i 's/;opcache.max_accelerated_files=10000/opcache.max_accelerated_files=10000/g' /etc/php/7.3/apache2/php.ini
sudo sed -i 's/;opcache.revalidate_freq=2/opcache.revalidate_freq=1/g' /etc/php/7.3/apache2/php.ini
sudo sed -i 's/;opcache.save_comments=1/opcache.save_comments=1/g' /etc/php/7.3/apache2/php.ini
sudo sed -i 's/memory_limit = 128M/memory_limit = 513M/g' /etc/php/7.3/apache2/php.ini
MODIFICAMOS EL CACHE PARA QUE USE Redis
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.
),
YA PODEMOS DEVOLVER EL CONTROL DE LA CARPETA /var/www/
sudo chown -R www-data:www-data /var/www
SOLO NOS QUEDA MODIFICAR Cron PARA LAS TAREAS EN SEGUNDO PLANO
sudo nano /etc/crontab
Y AÑADIMOS LA SIGUIENTE LINEA AL FINAL DEL ARCHIVO
*/15 * * * * www-data php -f /var/www/html/cron.php > /dev/null 2>&1
REINICIAMOS EL SERVIDOR
sudo reboot

Si creamos otro usuario podremos chatear.


Consultar nuestro correo.

Consultar nuestros contactos.

Ver nuestro calendario.

Y podremos añadir multitud de Apps disponibles para todas nuestras necesidades.

MODIFICAR LOS DOMINIOS PERMITIDOS PARA ACCESO DESDE INTERNET
Código: Seleccionar todo
sudo nano /var/www/html/config/config.php
BUSCAMOS
array (
0 => '192.168.1.100',
),
(192.168.1.100 es la dirección que asignó NextCloud durante la instalación) y añadimos -o modificamos- las direcciones IP's y DOMINIOS que necesitemos
array (
0 => '192.168.1.100',
1 => '192.168.1.66',
2 => 'caylus.no-ip.com',
3 => 'IP-PUBLICA',
),
Espero que os sea útil, pero si alguien tiene alguna duda, sugerencia o comentario no dudéis en hacérmelo saber.
Besotes


