Diferencia entre revisiones de «Nextcloud»
Línea 173: | Línea 173: | ||
Y procedemos con la instalación. | Y procedemos con la instalación. | ||
<youtube>https://www.youtube.com/watch?v=x1lKUmSF2Gk</youtube> | |||
= Completando la instalación de Nextcloud = | = Completando la instalación de Nextcloud = |
Revisión actual - 07:13 11 abr 2024
Nextcloud se puede resumir a como una alternativa a otros servicios de almacenamiento y edición en la nube, como puede ser Google Drive, OneDrive, Dropbox… Pero su principal característica es que es gratuito y de código abierto y puedes descargarlo e instalarlo en tu propio servidor, así acceder a tu propio «disco» desde cualquier punto del mundo con solo el navegador o la aplicación de sincronización de escritorio o teléfono y muchas opciones más.
Nextcloud es una bifurcación de OwnCloud, es decir, parte del grupo de programadores que quisieron hacer su propia versión del servicio pero con más añadidos.
Instalación desde los repositorios de Fedora
Siguiendo la instalación de servicios en Fedora, podemos instalar el programa desde repositorios oficiales.
sudo dnf install nextcloud
Esto ya genera los directorios de servicio en /usr/share y los de configuración en /etc, por ejemplo, el fichero de configuración de Apache.
El siguiente paso es crear la base de dato, primero accedemos a mysql:
mysql -u root -p
y creamos la base de datos como en la entrada anterior:
CREATE DATABASE IF NOT EXISTS nextcloud;
Y, si no queremos crear otro usuario, podemos aprovechar el mismo que la entrada anterior:
GRANT ALL PRIVILEGES ON nextcloud.* TO 'admin'@'localhost' IDENTIFIED BY 'F3d0r4-01';
FLUSH PRIVILEGES;
Ahora que ya tenemos la base de datos, vamos a realizar la instalación de nextcloud, en este caso, este, tiene un instalador por PHP que nos va de perlas y que utilizáramos para la mayoría de las operaciones:
cd /usr/share/nextcloud
sudo -u apache php occ maintenance:install --data-dir /var/lib/nextcloud/data/ --database "mysql" --database-name "nextcloud" --database-user "admin" --database-pass "F3d0r4-01" --admin-user "admin" --admin-pass "F3d0r4-01" ln -s /etc/httpd/conf.d/nextcloud-access.conf.avail /etc/httpd/conf.d/z-nextcloud-access.conf
Con esto haremos le indicamos el directorio donde se ubicaran los datos, el tipo de servidor de base de datos, el nombre de la base de datos que hemos indicado anteriormente, junto con el usuario y contraseña y, por último, el usuario y contraseña de administración del sitio que, por defecto, pongo el mismo que la base de datos para hacerlo más fácil.
También tenemos que permitir que el sitio sea accesible desde fuera del equipo local editando :
sudo nano /etc/httpd/conf.d/nextcloud-auth-local.inc
Y toca cambiar el «Require» para permitir todo el acceso que no sea local:
Cerramos el editor guardando los cambios y reiniciamos el servicio:
sudo systemctl restart httpd
De hecho ya podemos hacer la prueba accediendo al navegador:
https://192.168.1.241/nextcloud
Hecho esto ya podemos acceder a la interficie web, pero queda añadir otro apunte en seguridad y es el dominio de confianza, ya que, por seguridad, limita el acceso a redes desconocidas. Sin salir del directorio de instalación escribimos:
Nextcloud se puede resumir a como una alternativa a otros servicios de almacenamiento y edición en la nube, como puede ser Google Drive, OneDrive, Dropbox… Pero su principal característica es que es gratuito y de código abierto y puedes descargarlo e instalarlo en tu propio servidor, así acceder a tu propio «disco» desde cualquier punto del mundo con solo el navegador o la aplicación de sincronización de escritorio o teléfono y muchas opciones más.
Nextcloud es una bifurcación de OwnCloud, es decir, parte del grupo de programadores que quisieron hacer su propia versión del servicio pero con más añadidos.
Siguiendo la instalación de servicios en Fedora, podemos instalar el programa desde repositorios oficiales.
sudo dnf install nextcloud
Esto ya genera los directorios de servicio en /usr/share y los de configuración en /etc, por ejemplo, el fichero de configuración de Apache.
El siguiente paso es crear la base de dato, primero accedemos a mysql:
mysql -u root -p
y creamos la base de datos como en la entrada anterior:
CREATE DATABASE IF NOT EXISTS nextcloud;
Y, si no queremos crear otro usuario, podemos aprovechar el mismo que la entrada anterior:
GRANT ALL PRIVILEGES ON nextcloud.* TO 'admin'@'localhost' IDENTIFIED BY 'F3d0r4-01';
FLUSH PRIVILEGES;
Ahora que ya tenemos la base de datos, vamos a realizar la instalación de nextcloud, en este caso, este, tiene un instalador por PHP que nos va de perlas y que utilizáramos para la mayoría de las operaciones:
cd /usr/share/nextcloud
sudo -u apache php occ maintenance:install --data-dir /var/lib/nextcloud/data/ --database "mysql" --database-name "nextcloud" --database-user "admin" --database-pass "F3d0r4-01" --admin-user "admin" --admin-pass "F3d0r4-01" ln -s /etc/httpd/conf.d/nextcloud-access.conf.avail /etc/httpd/conf.d/z-nextcloud-access.conf
Con esto haremos le indicamos el directorio donde se ubicaran los datos, el tipo de servidor de base de datos, el nombre de la base de datos que hemos indicado anteriormente, junto con el usuario y contraseña y, por último, el usuario y contraseña de administración del sitio que, por defecto, pongo el mismo que la base de datos para hacerlo más fácil.
También tenemos que permitir que el sitio sea accesible desde fuera del equipo local editando :
sudo nano /etc/httpd/conf.d/nextcloud-auth-local.inc
Y toca cambiar el «Require» para permitir todo el acceso que Nextcloudno sea local:
Cerramos el editor guardando los cambios y reiniciamos el servicio:
sudo systemctl restart httpd
De hecho ya podemos hacer la prueba accediendo al navegador:
https://192.168.1.241/nextcloud
Hecho esto ya podemos acceder a la interficie web, pero queda añadir otro apunte en seguridad y es el dominio de confianza, ya que, por seguridad, limita el acceso a redes desconocidas. Sin salir del directorio de instalación escribimos:
sudo -u apache php occ config:system:get trusted_domains
Así vemos la lista de dominios de confianza, para añadir nuevos, añadir POR ORDEN, la IP o el nombre de acceso:
sudo -u apache php occ config:system:set trusted_domains 1 --value="192.168.1.241"
Resumen de directorios en el servidor:
- /usr/share/nextcloud – directorio de instalación
- /etc/nextcloud – directorio donde se ubica la configuración
- /etc/httpd/conf.d/ – directorio del servidor apache donde se ubican las configuraciones del servidor web
- /var/lib/nextcloud/data – directorio donde se ubicará el contenido de los usuarios
Video explicativo
sudo -u apache php occ config:system:get trusted_domains
Así vemos la lista de dominios de confianza, para añadir nuevos, añadir POR ORDEN, la IP o el nombre de acceso:
sudo -u apache php occ config:system:set trusted_domains 1 --value="192.168.1.241"
Resumen de directorios en el servidor:
- /usr/share/nextcloud – directorio de instalación
- /etc/nextcloud – directorio donde se ubica la configuración
- /etc/httpd/conf.d/ – directorio del servidor apache donde se ubican las configuraciones del servidor web
- /var/lib/nextcloud/data – directorio donde se ubicará el conteNextcloudnido de los usuarios
Video explicativo
Instalación manual oficial
Varias razones nos pueden llevar a esta decisión: puede que no os agrade la instalación de repositorios, queremos tener una instalación actualizada, hay un problema con los repositorios o incompatibilidad o simplemente, hemos cambiado de distribución o hacemos una instalación limpia.
Obviamente, la instalación es un poco más costosa, pero intentaremos resumirla y hacerla lo más sencilla posible.
En este caso la configuración será similar a la de repositorio, vamos a tener un directorio ( /var/www/nextcloud ) y una configuración apache ( https://192.168.100.241/nextcloud ) y aquí se alojará nuestro disco en la nube.
IMPORTANTE – antes de hacer la instalación, para evitar conflictos, si ya hicimos la instalación por repositorio, tenemos que desinstalarla.
sudo dnf remove nextcloud
Por seguridad, el mismo sistema guarda los ficheros de configuración cambiando la extensión y, al no borrar la base de datos, conservaremos los usuarios, contraseñas, grupos….
Ahora, hagamos la instalación, primero preparamos las dependencias (en el caso de ser una instalación nueva, también instalamos el servicio web y base de datos):
sudo dnf install @"Web Server" mariadb-server php-mysqlnd phpunit composer php-opcache php-pecl-imagick
Recordemos la instalación del servidor LAMP para configurar Apache y MariaDB. Y la creación de la base de datos en la siguiente entrada.
Descarga y extrae Nextcloud en el directorio /var/www:
cd /var/www
sudo wget https://download.nextcloud.com/server/releases/latest.tar.bz2
sudo tar -xvjf latest.tar.bz2
Creamos el directorio para los datos:
mkdir -p /var/www/nextcloud/data
Si tenemos activado el SELinux ( ya lo explicaré), debemos darle contexto al directorio y sus archivos:
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/data(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/config(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/apps(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/data(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/.htaccess'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/.user.ini'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/3rdparty/aws/aws-sdk-php/src/data/logs(/.*)?'
restorecon -Rv '/var/www/nextcloud/'
Y, por seguridad, damos los permisos al directorio:
sudo chown -R apache:apache /var/www/nextcloud
sudo chmod -R 770 /var/www/nextcloud
Seguimos con la configuración del archivo de host de Apache:
sudo nano /etc/httpd/conf.d/nextcloud.conf
Con el siguiente contenido:
Alias /nextcloud "/var/www/nextcloud/"
<Directory /var/www/nextcloud/>
Options +FollowSymlinks
AllowOverride All
Require all granted
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>
# Encabezados de seguridad para evitar ataques de inyección de contenido (XSS).
<IfModule mod_headers.c>
Header set X-Content-Type-Options "nosniff"
Header set X-Frame-Options "SAMEORIGIN"
Header set X-XSS-Protection "1; mode=block"
Header set X-Robots-Tag "none"
Header set X-Download-Options "noopen"
Header set X-Permitted-Cross-Domain-Policies "none"
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
</IfModule>
#Logs
ErrorLog "/var/log/httpd/nextcloud_error.log"
CustomLog "/var/log/httpd/nextcloud_access.log" combined
# Configuración de redireccionamiento
Redirect 301 /.well-known/carddav https://192.168.100.241/nextcloud/remote.php/dav
Redirect 301 /.well-known/caldav https://192.168.100.241/nextcloud/remote.php/dav
Redirect 301 /.well-known/webfinger https://192.168.100.241/nextcloud/index.php/.well-known/webfinger
Redirect 301 /.well-known/nodeinfo https://192.168.100.241/nextcloud/index.php/.well-known/nodeinfo
Añado las últimas líneas de redireccionamiento de prevención a los servicios «DAV» de calendario o contactos.
Reiniciamos apache para que los cambios tengan efecto:
sudo systemctl restart httpd
Y accedemos a la página que reside nextcloud:
https://192.168.100.241/nextcloud
Y procedemos con la instalación.
Completando la instalación de Nextcloud
En la entrada anterior instalamos Nextcloud fácilmente desde los repositorios de Fedora, peró el proceso está lejos de acabar, antes, quedan varios procesos.
Límite de memoria en PHP
Este proceso es necesario en otros servicios para poder gestionar procesos por PHP, como por ejemplo, subir ficheros. Para ello, debemos editar el fichero:
sudo nano /etc/php.ini
Y debemos buscar la línea:
memory_limit = 128M
Por defecto viene a un valor de 128 Megas, mínimo, debemos cambiarlo a 512M:
memory_limit = 512M
Hecho esto, cerramos el editor y reiniciamos el servicio apache:
sudo systemctl restart httpd
PHP configuration option output_buffering must be disabled
Para comprobar la salud de nuestro servicio, podemos acceder al Administrador de configuraciones y veremos qué nos puede faltar o fallar, por ejemplo, el output_buffering de la configuración de php, debe estar deshabilitado. Este mensaje es un bug que genera esta advertencia y será reparado por los desarrolladores.
Mientras podemos crear el fichero:
sudo nano /usr/share/nextcloud/.user.ini
Con la linia:
output_buffering=0
Cacheando la memoria
Otra de las advertencias que nos podemos encontrar es el «memory_caching» que influye en el rendimiento del servicio. Por defecto, no viene configurado y hay que configurarlo.
Hay tres maneras de cachear la memoria como se muestra en la página de soporte oficial, pero he optado por la más sencilla. Para ello instalaremos:
sudo dnf install php-pecl-apcu
Editamos el fichero de configuración de Nextcloud
sudo nano /etc/nextcloud/config.php
y añadimos a la penúltima línea:
'memcache.local' => '\OC\Memcache\APCu',
Ahora tenemos que editar el fichero:
sudo nano /etc/php.d/40-apcu.ini
Y dejamos el valor:
apc.enable_cli=1
Cerramos y reiniciamos los servicios:
sudo systemctl restart httpd php-fpm
Instalar los módulos php gmp i bcmath
No son obligatorios, pero si recomendables estar estos dos módulos, los instalamos con:
sudo dnf install php-gmp php-bcmath
Y reiniciamos el servicio:
sudo systemctl restart httpd
Región del teléfono
Otro parámetro que no es obligatorio es la región del teléfono por defecto, para configurarlo editamos:
sudo nano /etc/nextcloud/config.php
Y en la penúltima línea añadimos:
'default_phone_region' => 'ES',
Configurando el correo electrónico
Otro de los ajustes básicos es el envío de correos electrónicos, en mi caso utilizo una contraseña maestra de gmail y los parámetros quedan:
Es importante «Enviar mensaje» una vez hechas las configuraciones para acabar el proceso.
Instalando aplicaciones por consola
Podemos instalar aplicaciones por administrador del navegador, pero es mucho más rápido administrar por consola con occ. Unos ejemplos:
cd /usr/share/nextcloud
sudo -u apache php occ app:install bookmarks #Instala el gestor de marcadores sudo -u apache php occ app:install passwords #Instala el gestor de contraseñas sudo -u apache php occ app:install tasks #instala un gestor de tareas que se adapta a calendar sudo -u apache php occ app:install notes #un gestor de notas básico sudo -u apache php occ app:install deck #Un gestor de tareas avanzado sudo -u apache php occ app:install groupfolders #Permite la gestión de grupos a las carpetas sudo -u apache php occ app:install richdocumentscode #Instala un editor de documentos integrado CODE sudo -u apache php occ app:install richdocuments #Necesario con el complemento anterior. sudo -u apache php occ app:install forms #Instala un generador de formularios que guarda los datos en una hoja sudo -u apache php occ app:install mail #Cliente de correo electrónico web sudo -u apache php occ app:install calendar #Un gestor de calendario comparable a Google Calendar sudo -u apache php occ app:install contacts #Un gestor de contactos que se integra a el resto de complementos sudo -u apache php occ app:install text #Un editor de texto básico sudo -u apache php occ app:install spreed #Un cliente de chat entre los contactos que permite llamadas y conferencias por video. sudo -u apache php occ app:install recognize #Permite reconoce en tus fotos a animales, caras...
Reparar los ficheros por consola
Puede darse el caso que falte un fichero o que no permita borrarlos, eso se debe a un error en la base de datos, se puede reparar fácilmente con:
sudo -u apache php occ files:scan --all
Gestión de usuarios y grupos
Lista de usuarios
sudo -u apache php ./occ user:list
Lista los grupos y sus usuarios
sudo -u www-data php occ group:list
Crea un usuario
sudo -u apache php occ user:add --display-name="Usuario1" --group="users" --group="Grupo1" usuario1
Borra un usuario
sudo -u apache php ./occ user:delete usuario1
Consulta la configuración del usuario
sudo -u apache php ./occ user:setting usuario2
Configura el usuario, asigna un correo electrónico:
sudo -u apache php ./occ user:setting usuario2 settings email "usuario2@mainkivi.info"
Asigna una quota de disco al usuario
sudo -u apache php ./occ user:setting usuario2 files quota 10GB
Resetea la contraseña del usuario
sudo -u apache php occ user:resetpassword usuario2
Estas y más instrucciones en: https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/occ_command.html
Para complementar la entrada, adjunto un video: