Manual de instalación en Raspberry Pi de NEXTCLOUD-12, PHP-7 y MariaDB-10.1

Sección Unicamente para Tutoriales y Guías
caylus
Pi Master
Pi Master
Mensajes: 420
Registrado: 22 Jun 2017, 09:27
Agradecido: 33 veces
Agradecimiento recibido: 71 veces

Imagen
Creé este manual para el usuario@brosvv y lo publiqué en el post viewtopic.php?p=50542#p50542 y ahora me he animado a subirlo como tutorial.

Existe un manual anterior de @Kike pero está desactualizado aunque he usado algunos datos, la mayor parte de este manual pertenece al texto sobre el tema de la página web ElAngelCaido (Cerrada por el momento) y también a algunas revisiones mias.

RASPBIANJESSIE:
He usado una RPi3 y la imagen 2017-06-21-raspbian-jessie-lite.img con configuración de locales en es_ES.UTF8-UTF8 e IP estática 192.168.1.20.

RASPBIAN STRETCH:
He usado una RPi3 y la imagen 2017-09-07-raspbian-stretch-lite.img con configuración de locales en es_ES.UTF8-UTF8 e IP estática 192.168.1.20.

:ponpon ¡¡EMPEZAMOS!! :ponpon

ACTUALIZAMOS EL SISTEMA

Código: Seleccionar todo

sudo apt-get update && sudo apt-get upgrade
SOLO RASPIAN JESSIE

INSTALAMOS REPOSITORIOS

Código: Seleccionar todo

sudo su

Código: Seleccionar todo

echo "deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi" >> /etc/apt/sources.list

Código: Seleccionar todo

echo "Package: *" >> /etc/apt/preferences

Código: Seleccionar todo

echo "Pin: release n=jessie" >> /etc/apt/preferences

Código: Seleccionar todo

echo "Pin-Priority: 600" >> /etc/apt/preferences

Código: Seleccionar todo

exit
ACTUALIZAMOS REPOSITORIOS E INSTALAMOS PHP7-MARIADB-APACHE2

Código: Seleccionar todo

sudo apt-get update

Código: Seleccionar todo

sudo apt-get install -t stretch php7.0 php7.0-bz2 php7.0-cli php7.0-curl php7.0-gd php7.0-fpm php7.0-intl php7.0-json php7.0-mbstring php7.0-mcrypt php-pear php7.0-imap php-memcache php7.0-pspell php7.0-recode php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mysql php7.0-opcache php7.0-xml php7.0-zip php-imagick php-redis libapache2-mod-php7.0 mariadb-server apache2
- Tardará bastante y en algunos paquetes te aparecerá "deprecated", no te preocupes porque se instalaran las nuevas versiones.
- Cuando te aparezca (:) dos puntos en la parte inferior izquierda deberás pulsar ENTER hasta que aparezca (q to quit) entonces pulsas "q"
- Después te aparecerán varias pantallas azules
"Restart services during package upgrades without asking?" ----> NO
"Services to restart for GNU library upgrade: ssh cron" -----------> OK

Código: Seleccionar todo

sudo apt-get autoremove
SOLO RASPIAN STRETCH

INSTALAMOS PHP7-MARIADB-APACHE2

Código: Seleccionar todo

sudo apt-get install php7.0 php7.0-bz2 php7.0-cli php7.0-curl php7.0-gd php7.0-fpm php7.0-intl php7.0-json php7.0-mbstring php7.0-mcrypt php-pear php7.0-imap php-memcache php7.0-pspell php7.0-recode php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mysql php7.0-opcache php7.0-xml php7.0-zip php-imagick php-redis libapache2-mod-php7.0 mariadb-server apache2
ORANGE PI CON UBUNTU 18.04

INSTALAMOS PHP7.2-MARIADB-APACHE2

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 
Habilitamos el servidor Redis

Código: Seleccionar todo

 sudo systemctl enable redis-server  
DEBIDO A QUE php7.2-mcrypt ESTÁ DEPRECADO HAY QUE INSTALAR mcrypt DE LA SIGUIENTE FORMA
- Instalamos los paquetes de configuración necesarios

Código: Seleccionar todo

 sudo apt-get -y install gcc make autoconf libc-dev pkg-config 
- Instalamos la librería

Código: Seleccionar todo

 sudo apt-get -y install libmcrypt-dev 
- Instalamos mcrypt mediante PECL

Código: Seleccionar todo

 sudo pecl install mcrypt-1.0.1 
- Añadimos las direcciones a cli y apache2

Código: Seleccionar todo

 sudo bash -c "echo extension=/usr/lib/php/20170718/mcrypt.so > /etc/php/7.2/cli/conf.d/mcrypt.ini" 

Código: Seleccionar todo

 sudo bash -c "echo extension=/usr/lib/php/20170718/mcrypt.so > /etc/php/7.2/apache2/conf.d/mcrypt.ini" 
- Comprobamos que está instalado

Código: Seleccionar todo

 php -i | grep mcrypt 
Si en una de las líneas que aparecen puedes leer “mcrypt support => enabled” es que está instalado y ya puedes continuar con la instalación normalmente.



CONTINUAMOS, UNA VEZ INSTALADOS LOS PROGRAMAS EN EL SISTEMA OPERATIVO CORRESPONDIENTE

COMPROBAMOS LAS VERSIONES INSTALADAS

Código: Seleccionar todo

php --version

Código: Seleccionar todo

mysql --version
AUMENTAMOS LOS LIMITES DE TRASFERENCIA EN PHP

Código: Seleccionar todo

sudo nano /etc/php/7.0/fpm/php.ini
Buscamos "upload_max_filesize" mediante CRTL+W
upload_max_filesize = 2M
Y lo modificamos
upload_max_filesize = 2000M
Guardamos CRTL+O y cerramos CRTL+X

Buscamos "post_max_size"
post_max_size = 8M
Y lo modificamos
post_max_size = 2000M
Guardamos y cerramos

CONFIGURACION DE MariaDB

Securizamos la instalación:

Código: Seleccionar todo

sudo mysql_secure_installation
El password de root estará vacio y hay que pulsar ENTER

Preguntará
"Set root password? [Y/n]" --- Y
e introducimos el password que queramos para root en MariaDB

Tras introducir la contraseña de root respondemos a las preguntas como sigue:
Change the root password? [Y/n] n <---
(ATENCIÓN: Puede que no salga debido a que hemos cambiado el password en el paso anterior)
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

Código: Seleccionar todo

sudo mysql -u root -p
Introducimos los siguientes comandos modificando los datos marcados en color:
CREATE DATABASE nextcloud;
CREATE USER 'caylus'@'localhost' IDENTIFIED BY 'caylus123';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'caylus'@'localhost';
FLUSH PRIVILEGES;
exit;
HABILITAMOS LOS MODULOS SSL Y REWRITE EN APACHE

Código: Seleccionar todo

sudo a2enmod ssl

Código: Seleccionar todo

sudo a2enmod rewrite

Código: Seleccionar todo

sudo reboot
GENERAMOS LOS CERTIFICADOS AUTOFIRMADOS

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 preguntas para generar los certificados:
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
Al ser un certificado autofirmado aparecerá, cuando conectemos por https, el mensaje "No se confía en el certificado porque está autofirmado." simplemente hay que añadir la página a las excepciones de seguridad.

CONFIGURAMOS LOS CERTIFICADOS

Copiar el archivo de configuracion default-ssl en la carpeta de sitios activos

Código: Seleccionar todo

sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/default-ssl.conf
Editamos

Código: Seleccionar todo

sudo nano /etc/apache2/sites-enabled/default-ssl.conf
Hay que sustituir los certificados de ejemplo por los nuestros

Buscamos "ssl-cert-snakeoil.pem" y lo sustituimos por "nextcloud.pem"
Buscamos "ssl-cert-snakeoil.key" y lo sustituimos por "nextcloud.key"

Y añadir, justo debajo, lo siguiente:
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
</IfModule>
Guardamos y, antes de reiniciar, activamos el módulo headers

Código: Seleccionar todo

sudo a2enmod headers
Reiniciamos

Código: Seleccionar todo

sudo reboot

INSTALACION NEXTCLOUD

Descargamos

Código: Seleccionar todo

sudo wget https://download.nextcloud.com/server/releases/nextcloud-12.0.0.zip
Descomprimimos

Código: Seleccionar todo

sudo unzip nextcloud-12.0.0.zip
Instalamos

Código: Seleccionar todo

sudo cp -R /var/www/html /var/www/htmlviejo

Código: Seleccionar todo

sudo rm -R /var/www/html

Código: Seleccionar todo

sudo mv nextcloud /var/www/html

Código: Seleccionar todo

sudo rm nextcloud-12.0.0.zip
CONFIGURACIÓN

Para configurar más facilmente damos permisos totales temporalmente

Código: Seleccionar todo

sudo chmod 777 -R /var/www/html
Al final de este manual generaremos un script "nextcloud.sh" para securizar el servidor

Ahora entraremos al servidor desde nuestro navegador Web poniendo la dirección IP de nuestra PI

http://IP_DE_NUESTRA_PI en mi caso http://192.168.1.20

Imagen

A continuación, debemos añadir las direcciones IP y DOMINIOS a los que se permite el acceso

Código: Seleccionar todo

sudo nano /var/www/html/config/config.php
Buscamos
array (
0 => '192.168.1.20',
),
y añadimos las direcciones IP y DOMINIOS que necesitemos
array (
0 => '192.168.1.20',
1 => 'caylus.no-ip.com',
),
SECURIZACION DE LA INSTALACION

Añadimos el usuario www-data al grupo www-data

Código: Seleccionar todo

sudo usermod -a -G www-data www-data
Creamos un script para que nos sea mas fácil la securización

Código: Seleccionar todo

sudo nano nextcloud.sh
y añadimos lo siguiente

Código: Seleccionar todo

#!/bin/bash
ocpath='/var/www/html'
htuser='www-data'
htgroup='www-data'
rootuser='root'

printf "Comprobando Directorios y creandolos si faltasen\n"
mkdir -p $ocpath/data
mkdir -p $ocpath/assets
mkdir -p $ocpath/updater

printf "Dando permisos a Archivos y Directorios\n"
find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640
find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750
chmod 755 ${ocpath}

printf "Asignando propietarios de Directorios\n"
chown -R ${rootuser}:${htgroup} ${ocpath}/
chown -R ${htuser}:${htgroup} ${ocpath}/apps/
chown -R ${htuser}:${htgroup} ${ocpath}/assets/
chown -R ${htuser}:${htgroup} ${ocpath}/config/
chown -R ${htuser}:${htgroup} ${ocpath}/data/
chown -R ${htuser}:${htgroup} ${ocpath}/themes/
chown -R ${htuser}:${htgroup} ${ocpath}/updater/

chmod +x ${ocpath}/occ

printf "chmod/chown .htaccess\n"
if [ -f ${ocpath}/.htaccess ]
then
chmod 0644 ${ocpath}/.htaccess
chown ${rootuser}:${htgroup} ${ocpath}/.htaccess
fi
if [ -f ${ocpath}/data/.htaccess ]
then
chmod 0644 ${ocpath}/data/.htaccess
chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess
fi
Ejecutamos el script

Código: Seleccionar todo

sudo bash nextcloud.sh
Borramos el script

Código: Seleccionar todo

sudo rm nextcloud.sh
TERMINADO

:mareado

Espero que os sea útil, pero si alguien tiene alguna duda, sugerencia o comentario no dudeis en hacermelo saber.

Abrazos
:guiño2
Última edición por caylus el 16 Jun 2018, 12:26, editado 6 veces en total.
La chica de la lluvia.
Life isn't about waiting for the storm to pass. It's about learning to dance in the rain.
Vivian Greene
Imagen
caylus
Pi Master
Pi Master
Mensajes: 420
Registrado: 22 Jun 2017, 09:27
Agradecido: 33 veces
Agradecimiento recibido: 71 veces

Gracias kamber me gusta ser útil, pero soy "compañera".

Abrazos
:guiño2
La chica de la lluvia.
Life isn't about waiting for the storm to pass. It's about learning to dance in the rain.
Vivian Greene
Imagen
Avatar de Usuario
eneteache
Pi Beta
Pi Beta
Mensajes: 182
Registrado: 10 Abr 2017, 20:13
Agradecido: 0
Agradecimiento recibido: 0

Buen tutorial, un día de estos lo pruebo en mi Raspbberry 3, que tengo curiosidad de como funciona.

Puedes incluir que esto se podría complementar con el proyecto de no-ip

PD: Si no recuerdo mal creo que lo de aumentar el tamaño de transferencia también se puede hacer desde la aplicación. Aun que no estoy muy seguro... :P
caylus
Pi Master
Pi Master
Mensajes: 420
Registrado: 22 Jun 2017, 09:27
Agradecido: 33 veces
Agradecimiento recibido: 71 veces

Efectivamente @eneteache, si accedes como administrador puedes aumentar el tamaño de la transferencia desde la misma aplicación, pero lo que hace es modificar el archivo ".htaccess" cosa que, alguna vez, me ha dado problemas.

No he hablado del proyecto no-ip debido a que la gran mayoría de los routers actuales llevan implementado de serie el servicio DDNS (Dynamic Domain Name System – Sistema de Nombre de Dominio Dinámico). Todos los de fibra lo incluyen, aunque usan diferentes formas de nombrarlo. Ya sólo tendrías que darte de alta en http://www.no-ip.com y configurar el router con tu usuario y contraseña. Luego deberías direccionar (NAT) el puerto 443 (https) hacia la IP de tu RPi, no te recomiendo usar el puerto 80 debido a que es altamente vulnerable.

Para no tener que cambiar el acceso a tu servidor NextCloud desde tu teléfono, tablet o laptop cuando estés dentro y fuera de tu red, te recomiendo crear un servidor DNS en tu red interna. Yo estoy usando la app NextCloud en mi teléfono y funciona bastante bien.

Gracias por tu comentario, espero haber respondido a tus dudas. Por favor, si tienes alguna otra pregunta házmelo saber.

Abrazos
:guiño2
La chica de la lluvia.
Life isn't about waiting for the storm to pass. It's about learning to dance in the rain.
Vivian Greene
Imagen
Avatar de Usuario
eneteache
Pi Beta
Pi Beta
Mensajes: 182
Registrado: 10 Abr 2017, 20:13
Agradecido: 0
Agradecimiento recibido: 0

Tengo una pregunta con este tutorial... se puede conseguir una conexión segura usando no-ip? hay que hacer algo en especial? ya que en principio sólo entro por HTTP.

Edito e incluyo captura:
Adjuntos
Screenshot_20170707_215101.png
Screenshot_20170707_215101.png (10.64 KiB)
caylus
Pi Master
Pi Master
Mensajes: 420
Registrado: 22 Jun 2017, 09:27
Agradecido: 33 veces
Agradecimiento recibido: 71 veces

@eneteache Debes de tener en cuenta que NO-IP es sólo una forma de direccionamiento para IPs dinámicas y esto hace que el nombre que elijas apunte siempre a tu router, aunque este cambie de IP por la normativa de las empresas proveedoras. La seguridad, por tanto, la tienes que implementar tanto en tu router como en el servidor. Una buena forma es apuntar exclusivamente el puerto 443 (https) del router hacia la IP del servidor raspberry. Por supuesto, si quieres seguridad, el puerto 80 (http) queda totalmente descartado. Normalmente no deberías tener problemas, especialmente si encriptas los datos contenidos en NextCloud, cosa que puedes hacer como administrador. Si te fijas, el manual que he creado está pensado para el puerto 443 (https) por esa razón he explicado la forma de crear un certificado autofirmado y alguna otra “cosilla”.

Existe otro método, crear un sistema VPN (Virtual Private Network o Red Privada Virtual, en español) y conectarte a través de él a tu red interna. Esto es muy eficaz en la protección de datos, ya que cifra la transmisión de punto a punto y puedes elegir el nivel de seguridad:
1024 – nivel normal
2048 – nivel excelente
4096 – nivel paranoico
Cada uno tiene sus ventajas e inconvenientes: a mayor nivel la transferencia se vuelve excesivamente lenta, en el caso de los Smartphones consumo excesivo de batería y datos.

Espero haber aclarado tus dudas.

Abrazos
:guiño2
Última edición por caylus el 08 Jul 2017, 11:35, editado 1 vez en total.
La chica de la lluvia.
Life isn't about waiting for the storm to pass. It's about learning to dance in the rain.
Vivian Greene
Imagen
caylus
Pi Master
Pi Master
Mensajes: 420
Registrado: 22 Jun 2017, 09:27
Agradecido: 33 veces
Agradecimiento recibido: 71 veces

@eneteache El problema con (.htaccess no funciona) es debido a un problema con apache2 y para solucionarlo sólo tienes que seguir estos pasos:
$ sudo nano /etc/apache2/apache2.conf

(Sólo hay que modificar lo que afecta a /var/www):

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

Y cambiarlo a:

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

Fíjate bien porque sólo se cambia "None" por "All"

Después reiniciamos:

$ sudo reboot

Solucionado

Para solucionar el problema de acceso por http sólo tienes que escribir

https://IP_DE_MI_NEXTCLOUD
Solucionado

Espero haberte ayudado.

Abrazos
:guiño2
Última edición por caylus el 08 Jul 2017, 11:37, editado 1 vez en total.
La chica de la lluvia.
Life isn't about waiting for the storm to pass. It's about learning to dance in the rain.
Vivian Greene
Imagen
Avatar de Usuario
eneteache
Pi Beta
Pi Beta
Mensajes: 182
Registrado: 10 Abr 2017, 20:13
Agradecido: 0
Agradecimiento recibido: 0

caylus escribió:El problema con (.htaccess no funciona) es debido a un problema con apache2 y para solucionarlo sólo tienes que seguir estos pasos:

$ sudo nano /etc/apache2/apache2.conf

(Sólo hay que modificar lo que afecta a /var/www):

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

Y cambiarlo a:

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

Fíjate bien porque sólo se cambia "None" por "All"

Después reiniciamos:

$ sudo reboot

Solucionado

Para solucionar el problema de acceso por http sólo tienes que escribir

https://IP_DE_MI_NEXTCLOUD

Solucionado

Espero haberte ayudado.

Abrazos
:guiño2
El problema principal estaba en que el puerto 443 no estaba abierto :x

Por cierto, el parámetro AllowOverride All para que sirve?
gogua
Pi Alpha
Pi Alpha
Mensajes: 12
Registrado: 04 Jul 2017, 20:35
Agradecido: 0
Agradecimiento recibido: 0

Hola !

Tengo un problema a la hora de configurar nextcloud.

He puesto como directorio de datos un disco usb externo que esta montado en /media/hddext1 y compratido por samba a la red local, pero claro este está como root:root y 777 de permisos y cuando entro a configurar nextcloud me dice esto:

Código: Seleccionar todo

Su directorio data es leible por otros usuarios
Por favor cambie los permisos a 0770 para que el directorio no se pueda mostrar para otros usuarios
Y ese directorio /media/hddext1 y o que cuelga por debajo no lo puedo cambiar de propietario ni permisos, ni con root , supongo que por el punto de montaje. Creoque habia una forma de cambiar esos permisos en el montaje del disco pero no me acuerdo.

Como lo habéis hecho vosotros ?
caylus
Pi Master
Pi Master
Mensajes: 420
Registrado: 22 Jun 2017, 09:27
Agradecido: 33 veces
Agradecimiento recibido: 71 veces

eneteache escribió:
caylus escribió:El problema con (.htaccess no funciona) es debido a un problema con apache2 y para solucionarlo sólo tienes que seguir estos pasos:

$ sudo nano /etc/apache2/apache2.conf

(Sólo hay que modificar lo que afecta a /var/www):

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

Y cambiarlo a:

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

Fíjate bien porque sólo se cambia "None" por "All"

Después reiniciamos:

$ sudo reboot

Solucionado

Para solucionar el problema de acceso por http sólo tienes que escribir

https://IP_DE_MI_NEXTCLOUD

Solucionado

Espero haberte ayudado.

Abrazos
:guiño2
El problema principal estaba en que el puerto 443 no estaba abierto :x

Por cierto, el parámetro AllowOverride All para que sirve?

@eneteache La directiva “AllowOverride None” hace que apache2 ignore los archivos “.htacces”, que son los que utiliza NextCloud para almacenar algunas de sus configuraciones dentro del directorio asignado. (Me parece que ya te hablé sobre ello en un post anterior sobre el aumento de tamaño de transferencia). Mientras que la directiva “AllowOverride All” hace que apache2 permita a NextCloud leer y escribir estos archivos.

Espero haberte ayudado.

Abrazos
:guiño2
Última edición por caylus el 08 Jul 2017, 11:31, editado 1 vez en total.
La chica de la lluvia.
Life isn't about waiting for the storm to pass. It's about learning to dance in the rain.
Vivian Greene
Imagen
caylus
Pi Master
Pi Master
Mensajes: 420
Registrado: 22 Jun 2017, 09:27
Agradecido: 33 veces
Agradecimiento recibido: 71 veces

gogua escribió:Hola !

Tengo un problema a la hora de configurar nextcloud.

He puesto como directorio de datos un disco usb externo que esta montado en /media/hddext1 y compratido por samba a la red local, pero claro este está como root:root y 777 de permisos y cuando entro a configurar nextcloud me dice esto:

Código: Seleccionar todo

Su directorio data es leible por otros usuarios
Por favor cambie los permisos a 0770 para que el directorio no se pueda mostrar para otros usuarios
Y ese directorio /media/hddext1 y o que cuelga por debajo no lo puedo cambiar de propietario ni permisos, ni con root , supongo que por el punto de montaje. Creoque habia una forma de cambiar esos permisos en el montaje del disco pero no me acuerdo.

Como lo habéis hecho vosotros ?

Permisos 0770

Este problema se produce cuando creamos el directorio de datos fuera del servidor con sistema Linux, especialmente si usamos Samba o HD’s formateados en NTFS o FAT32. No existe una solución para ello puesto que es un problema de permisos que no pueden ser gestionados, pero podemos hacer que no aparezca el mensaje.

$ sudo nano /var/www/html/lib/private/legacy/util.php

Hay que buscar lo siguiente:

/**
* Check for correct file permissions of data directory
*
* @param string $dataDirectory
* @return array arrays with error messages and hints
*/
public static function checkDataDirectoryPermissions($dataDirectory) {
$l = \OC::$server->getL10N('lib');
$errors = array();
$permissionsModHint = $l->t('Please change the permissions to 0770 so that the directory'
. ' cannot be listed by other users.');
$perms = substr(decoct(@fileperms($dataDirectory)), -3);
if (substr($perms, -1) !== '0') {
chmod($dataDirectory, 0770);
clearstatcache();
$perms = substr(decoct(@fileperms($dataDirectory)), -3);
if ($perms[2] !== '0') {
$errors[] = [
'error' => $l->t('Your data directory is readable by other users'),
'hint' => $permissionsModHint
];
}
}
return $errors;
}

Para comentarlo hay que añadir una línea delante de esta secuencia donde escribiremos “ /* ” y una línea detrás donde escribiremos “ */ ” quedando:

/*
/**
* Check for correct file permissions of data directory
*
* @param string $dataDirectory
* @return array arrays with error messages and hints
*/
public static function checkDataDirectoryPermissions($dataDirectory) {
$l = \OC::$server->getL10N('lib');
$errors = array();
$permissionsModHint = $l->t('Please change the permissions to 0770 so that the directory'
. ' cannot be listed by other users.');
$perms = substr(decoct(@fileperms($dataDirectory)), -3);
if (substr($perms, -1) !== '0') {
chmod($dataDirectory, 0770);
clearstatcache();
$perms = substr(decoct(@fileperms($dataDirectory)), -3);
if ($perms[2] !== '0') {
$errors[] = [
'error' => $l->t('Your data directory is readable by other users'),
'hint' => $permissionsModHint
];
}
}
return $errors;
}
*/

Espero haberte ayudado.

Abrazos
:guiño2
La chica de la lluvia.
Life isn't about waiting for the storm to pass. It's about learning to dance in the rain.
Vivian Greene
Imagen
Avatar de Usuario
Kike
Administrador
Administrador
Mensajes: 2311
Registrado: 13 May 2016, 18:53
Ubicación: Islas Baleares - Menorca
Agradecido: 47 veces
Agradecimiento recibido: 175 veces
Contactar:

Muchísimas gracias por el tutorial de verdad, ¿me dejas modificarlo el hilo para que tenga un mejor aspecto y sea más facil leer entre lineas?

Un abrazo y gran trabajo! :mrgreen: :mrgreen:
Si lo puedes soñar, lo puedes hacer
caylus
Pi Master
Pi Master
Mensajes: 420
Registrado: 22 Jun 2017, 09:27
Agradecido: 33 veces
Agradecimiento recibido: 71 veces

Kike escribió:Muchísimas gracias por el tutorial de verdad, ¿me dejas modificarlo el hilo para que tenga un mejor aspecto y sea más facil leer entre lineas?

Un abrazo y gran trabajo! :mrgreen: :mrgreen:
Por supuesto, es un placer que lo hagas, muchisimas gracias.

Un besote
:guiño2
La chica de la lluvia.
Life isn't about waiting for the storm to pass. It's about learning to dance in the rain.
Vivian Greene
Imagen
gogua
Pi Alpha
Pi Alpha
Mensajes: 12
Registrado: 04 Jul 2017, 20:35
Agradecido: 0
Agradecimiento recibido: 0

caylus escribió:
gogua escribió:Hola !

Tengo un problema a la hora de configurar nextcloud.

He puesto como directorio de datos un disco usb externo que esta montado en /media/hddext1 y compratido por samba a la red local, pero claro este está como root:root y 777 de permisos y cuando entro a configurar nextcloud me dice esto:

Código: Seleccionar todo

Su directorio data es leible por otros usuarios
Por favor cambie los permisos a 0770 para que el directorio no se pueda mostrar para otros usuarios
Y ese directorio /media/hddext1 y o que cuelga por debajo no lo puedo cambiar de propietario ni permisos, ni con root , supongo que por el punto de montaje. Creoque habia una forma de cambiar esos permisos en el montaje del disco pero no me acuerdo.

Como lo habéis hecho vosotros ?

Permisos 0770

Este problema se produce cuando creamos el directorio de datos fuera del servidor con sistema Linux, especialmente si usamos Samba o HD’s formateados en NTFS o FAT32. No existe una solución para ello puesto que es un problema de permisos que no pueden ser gestionados, pero podemos hacer que no aparezca el mensaje.

$ sudo nano /var/www/html/lib/private/legacy/util.php

Hay que buscar lo siguiente:

/**
* Check for correct file permissions of data directory
*
* @param string $dataDirectory
* @return array arrays with error messages and hints
*/
public static function checkDataDirectoryPermissions($dataDirectory) {
$l = \OC::$server->getL10N('lib');
$errors = array();
$permissionsModHint = $l->t('Please change the permissions to 0770 so that the directory'
. ' cannot be listed by other users.');
$perms = substr(decoct(@fileperms($dataDirectory)), -3);
if (substr($perms, -1) !== '0') {
chmod($dataDirectory, 0770);
clearstatcache();
$perms = substr(decoct(@fileperms($dataDirectory)), -3);
if ($perms[2] !== '0') {
$errors[] = [
'error' => $l->t('Your data directory is readable by other users'),
'hint' => $permissionsModHint
];
}
}
return $errors;
}

Para comentarlo hay que añadir una línea delante de esta secuencia donde escribiremos “ /* ” y una línea detrás donde escribiremos “ */ ” quedando:

/*
/**
* Check for correct file permissions of data directory
*
* @param string $dataDirectory
* @return array arrays with error messages and hints
*/
public static function checkDataDirectoryPermissions($dataDirectory) {
$l = \OC::$server->getL10N('lib');
$errors = array();
$permissionsModHint = $l->t('Please change the permissions to 0770 so that the directory'
. ' cannot be listed by other users.');
$perms = substr(decoct(@fileperms($dataDirectory)), -3);
if (substr($perms, -1) !== '0') {
chmod($dataDirectory, 0770);
clearstatcache();
$perms = substr(decoct(@fileperms($dataDirectory)), -3);
if ($perms[2] !== '0') {
$errors[] = [
'error' => $l->t('Your data directory is readable by other users'),
'hint' => $permissionsModHint
];
}
}
return $errors;
}
*/

Espero haberte ayudado.

Abrazos
:guiño2
Hola @caylus !

No tengo el directorio /var/www/html/lib

debajo de html, solo hay un index.html

Enviado desde mi Redmi Note 4X mediante Tapatalk
caylus
Pi Master
Pi Master
Mensajes: 420
Registrado: 22 Jun 2017, 09:27
Agradecido: 33 veces
Agradecimiento recibido: 71 veces

gogua escribió:
caylus escribió:
gogua escribió:Hola !

Tengo un problema a la hora de configurar nextcloud.

He puesto como directorio de datos un disco usb externo que esta montado en /media/hddext1 y compratido por samba a la red local, pero claro este está como root:root y 777 de permisos y cuando entro a configurar nextcloud me dice esto:

Código: Seleccionar todo

Su directorio data es leible por otros usuarios
Por favor cambie los permisos a 0770 para que el directorio no se pueda mostrar para otros usuarios
Y ese directorio /media/hddext1 y o que cuelga por debajo no lo puedo cambiar de propietario ni permisos, ni con root , supongo que por el punto de montaje. Creoque habia una forma de cambiar esos permisos en el montaje del disco pero no me acuerdo.

Como lo habéis hecho vosotros ?

Permisos 0770

Este problema se produce cuando creamos el directorio de datos fuera del servidor con sistema Linux, especialmente si usamos Samba o HD’s formateados en NTFS o FAT32. No existe una solución para ello puesto que es un problema de permisos que no pueden ser gestionados, pero podemos hacer que no aparezca el mensaje.

$ sudo nano /var/www/html/lib/private/legacy/util.php

Hay que buscar lo siguiente:

/**
* Check for correct file permissions of data directory
*
* @param string $dataDirectory
* @return array arrays with error messages and hints
*/
public static function checkDataDirectoryPermissions($dataDirectory) {
$l = \OC::$server->getL10N('lib');
$errors = array();
$permissionsModHint = $l->t('Please change the permissions to 0770 so that the directory'
. ' cannot be listed by other users.');
$perms = substr(decoct(@fileperms($dataDirectory)), -3);
if (substr($perms, -1) !== '0') {
chmod($dataDirectory, 0770);
clearstatcache();
$perms = substr(decoct(@fileperms($dataDirectory)), -3);
if ($perms[2] !== '0') {
$errors[] = [
'error' => $l->t('Your data directory is readable by other users'),
'hint' => $permissionsModHint
];
}
}
return $errors;
}

Para comentarlo hay que añadir una línea delante de esta secuencia donde escribiremos “ /* ” y una línea detrás donde escribiremos “ */ ” quedando:

/*
/**
* Check for correct file permissions of data directory
*
* @param string $dataDirectory
* @return array arrays with error messages and hints
*/
public static function checkDataDirectoryPermissions($dataDirectory) {
$l = \OC::$server->getL10N('lib');
$errors = array();
$permissionsModHint = $l->t('Please change the permissions to 0770 so that the directory'
. ' cannot be listed by other users.');
$perms = substr(decoct(@fileperms($dataDirectory)), -3);
if (substr($perms, -1) !== '0') {
chmod($dataDirectory, 0770);
clearstatcache();
$perms = substr(decoct(@fileperms($dataDirectory)), -3);
if ($perms[2] !== '0') {
$errors[] = [
'error' => $l->t('Your data directory is readable by other users'),
'hint' => $permissionsModHint
];
}
}
return $errors;
}
*/

Espero haberte ayudado.

Abrazos
:guiño2
Hola @caylus !

No tengo el directorio /var/www/html/lib

debajo de html, solo hay un index.html

Enviado desde mi Redmi Note 4X mediante Tapatalk

¿Dónde tienes instalado el directorio de NextCloud? Una vez lo localices sólo tienes que seguir a partir de la carpeta lib

/directorio.de.nextcloud…/lib/private/legacy/util.php

Abrazos
:guiño2
La chica de la lluvia.
Life isn't about waiting for the storm to pass. It's about learning to dance in the rain.
Vivian Greene
Imagen
Avatar de Usuario
Kike
Administrador
Administrador
Mensajes: 2311
Registrado: 13 May 2016, 18:53
Ubicación: Islas Baleares - Menorca
Agradecido: 47 veces
Agradecimiento recibido: 175 veces
Contactar:

caylus escribió:
Kike escribió:Muchísimas gracias por el tutorial de verdad, ¿me dejas modificarlo el hilo para que tenga un mejor aspecto y sea más facil leer entre lineas?

Un abrazo y gran trabajo! :mrgreen: :mrgreen:
Por supuesto, es un placer que lo hagas, muchisimas gracias.

Un besote
:guiño2
Ya lo tengo modificado completamente! Cambia alguna cosa si algo no te gusta, un saludo! :)
Si lo puedes soñar, lo puedes hacer
caylus
Pi Master
Pi Master
Mensajes: 420
Registrado: 22 Jun 2017, 09:27
Agradecido: 33 veces
Agradecimiento recibido: 71 veces

Kike escribió:
caylus escribió:
Kike escribió:Muchísimas gracias por el tutorial de verdad, ¿me dejas modificarlo el hilo para que tenga un mejor aspecto y sea más facil leer entre lineas?

Un abrazo y gran trabajo! :mrgreen: :mrgreen:
Por supuesto, es un placer que lo hagas, muchisimas gracias.

Un besote
:guiño2
Ya lo tengo modificado completamente! Cambia alguna cosa si algo no te gusta, un saludo! :)
:ponpon ¡¡¡¡Ha quedado estupendo!!!! :ponpon Muchísimas gracias, de verdad. :D

Abrazos
:guiño2
La chica de la lluvia.
Life isn't about waiting for the storm to pass. It's about learning to dance in the rain.
Vivian Greene
Imagen
gogua
Pi Alpha
Pi Alpha
Mensajes: 12
Registrado: 04 Jul 2017, 20:35
Agradecido: 0
Agradecimiento recibido: 0

@caylus he seguido el tutorial al pie de la letra y me sale esto,

despues de configurar nextcloud en la web

Código: Seleccionar todo

Error interno del servidor

El servidor ha encontrado un error y no puede completar la solicitud.

Por favor, contacte con el administrador del servidor si este error reaparece múltiples veces. Incluya asimismo los detalles técnicos que se muestran a continuación.

Pueden verse más detalles en el registro del servidor.

Detalles técnicos

    Dirección remota: 192.168.1.41
    ID de la solicitud: QkMVEhMAdlgV1zQYQMxl

caylus
Pi Master
Pi Master
Mensajes: 420
Registrado: 22 Jun 2017, 09:27
Agradecido: 33 veces
Agradecimiento recibido: 71 veces

gogua escribió:@caylus he seguido el tutorial al pie de la letra y me sale esto,

despues de configurar nextcloud en la web

Código: Seleccionar todo

Error interno del servidor

El servidor ha encontrado un error y no puede completar la solicitud.

Por favor, contacte con el administrador del servidor si este error reaparece múltiples veces. Incluya asimismo los detalles técnicos que se muestran a continuación.

Pueden verse más detalles en el registro del servidor.

Detalles técnicos

    Dirección remota: 192.168.1.41
    ID de la solicitud: QkMVEhMAdlgV1zQYQMxl

¿En que momento te ha salido ese mensaje?

:guiño2
La chica de la lluvia.
Life isn't about waiting for the storm to pass. It's about learning to dance in the rain.
Vivian Greene
Imagen
gogua
Pi Alpha
Pi Alpha
Mensajes: 12
Registrado: 04 Jul 2017, 20:35
Agradecido: 0
Agradecimiento recibido: 0

caylus escribió:
gogua escribió:@caylus he seguido el tutorial al pie de la letra y me sale esto,

despues de configurar nextcloud en la web

Código: Seleccionar todo

Error interno del servidor

El servidor ha encontrado un error y no puede completar la solicitud.

Por favor, contacte con el administrador del servidor si este error reaparece múltiples veces. Incluya asimismo los detalles técnicos que se muestran a continuación.

Pueden verse más detalles en el registro del servidor.

Detalles técnicos

    Dirección remota: 192.168.1.41
    ID de la solicitud: QkMVEhMAdlgV1zQYQMxl

¿En que momento te ha salido ese mensaje?

:guiño2
Al final del todo, cuando entras en a configurar desde la web nexcloud, y metes usuario y password, la BBDD, el directorydata. Ahi sale lo de los permisos del disco duro externo y cambio el util.php.

Cuando ya voy a acceder de forma normal, me sale el error y no me deja hacer nada mas.
Si he visto que en el datadirectory ha creado la estructura sin problemas en principio.

Ahora estoy de viaje, asi que no podré hacer nada en 15 dias por lo menos.

Gracias por tu ayuda.
Responder