Destacado

Instalación de Nextcloud 15 en Ubuntu Server 18.04 LTS


Almacenamiento y Colaboración en Línea



¿Qué es Nextcloud?


Nextcloud es un software similar a Dropbox que te permite almacenar y sincronizar tus archivos con un cliente independiente y una interfaz web fácil de usar. 

Aunque su objetivo principal es compartir archivos, NextCloud puede extenderse a muchas aplicaciones y tiene una impresionante lista de características:

- Almacenamiento de archivos: NextCloud es, ante todo, una alternativa auto hospedada para Dropbox. Puede acceder a los archivos utilizando la interfaz de usuario web o puede usar WebDAV, que es compatible con los principales sistemas operativos.

- Control de versiones de archivos: El historial de archivos se mantiene en NextCloud, lo que permite restaurar versiones anteriores del mismo documento.

- Sincronización de archivos: Mediante el uso del cliente, puede sincronizar las carpetas locales con el servidor. El cliente está disponible para Windows, Linux y Mac OSX. Los clientes móviles están disponibles para Android e iOS (gratuitamente), y BlackBerry (con un poco de precio).

- Multiusuario: NextCloud tiene soporte para múltiples usuarios con acceso granular a archivos. También es compatible con usuarios centralizados con el complemento LDAP.

- Compartir archivos: Puede compartir archivos o directorios completos con usuarios locales en el mismo servidor (y controlar sus permisos).

- Nube federada: Esta característica permite compartir archivos (y otras cosas) con otras instancias de NextCloud (conservando el control total sobre los permisos).

- Arquitectura modular: NextCloud está estructurada en aplicaciones que permiten a los desarrolladores agregar funcionalidad al producto principal.

- Calendario: Con la aplicación Calendario puede mantener varios calendarios e incluso sincronizarlos en múltiples dispositivos que admiten el protocolo CalDAV.

- Contactos: Al igual que con la aplicación Calendario, la aplicación Contactos le permite mantener sus contactos y sincronizarlos usando el protocolo CardDAV.

- Código abierto: La posibilidad de mirar dentro del código te hace sentir confiado acerca de lo que está haciendo el software y de que no te está espiando.


Esta lista es un poco corta, puede encontrar todas las nuevas características en esta página: https://nextcloud.com/files/



→ INSTALACIÓN DE UBUNTU SERVER 18.04.2 ← 

Parámetros de Red:
IPv4 Method: Manual

Subnet: 192.168.1.0/24
Address: 192.168.1.100
Gateway: 192.168.1.254
Name servers: 192.168.1.254, 8.8.8.8

Nombre del Servidor:
nextcloud



→ INSTALACIÓN DE NEXTCLOUD SERVER ← 

- CONEXIÓN REMOTA VIA SSH -
*SSH (Secure Shell), es un protocolo de administración remota que permite a los usuarios controlar y modificar sus servidores remotos a través de Internet.

Conectar al servidor vía SSH:

$ ssh sysadmin@192.168.1.100



- INVOCAR USUARIO Y FACULTADES ROOT SIN ACTIVARLO -
*SUDO o Substitute User DO, es un programa informático que permite al usuario de un sistema acceder a los privilegios de seguridad de otro usuario, quien normalmente es el administrador (o usuario root).

#  = Estás como root, y previamente tuviste que introducir el comando sudo y la contraseña para permanecer en ese modo.
$  = Estás como tu usuario, y no puedes ejecutar cosas con facultades root.
-i = Invoca la facultades del usuario root sin activar dicho usuario:

$ sudo -i



- ACTUALIZACIÓN DEL SISTEMA -
*APT (Advanced Packaging Tool) es un conjunto de herramientas que han sido desarrolladas para: Instalación de nuevos paquetes. Administración y actualización de los paquetes existentes. Eliminación de paquetes del sistema operativo.
*apt update  = Actualiza la lista de paquetes disponibles y sus versiones. Esta lista se actualiza de los servidores agregados en los repositorios que tenemos definidos en el sources.list.
*apt upgrade = Instala las nuevas versiones de la lista de paquetes disponibles.


Actualizar:

# apt update && apt upgrade -y


Reiniciar: 

# reboot


Conectar al servidor vía SSH:

$ ssh sysadmin@192.168.1.100


Invocar facultades root sin activar dicho usuario:

$ sudo -i



- CAMBIAR EL NOMBRE DEL EQUIPO POR FQDN -
Un FQDN (Fully Qualified Domain Name) Es un nombre que incluye el nombre del equipo y el nombre del dominio asociado a ese equipo.

1. Establecer nombre fqdn en el archivo hostname:
*La herramienta hostnamectl puede usarse para consultar y cambiar el nombre de host del sistema y la configuración relacionada.

# hostnamectl set-hostname nextcloud.local


2. Establecer nombre fqdn en el archivo hosts:
*El programa nano es un amigable y ligero editor de textos
*El archivo /etc/hosts es un archivo del sistema operativo que traduce los nombres de host o nombres de dominio a direcciones IP.
(Cambiar localhost.localdomain por nextcloud.local):

# nano /etc/hosts
-------------------------------------------------------------------------------------
127.0.0.1       nextcloud.local         localhost
::1             localhost6.localdomain6 localhost6

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
-------------------------------------------------------------------------------------


3. Cambiar parámetros de preservación de hostname en el archivo de configuración cloud.cfg
*El archivo /etc/cloud/cloud.cfg es el archivo de configuración de cloud-init.
(Cambia la configuración de la línea preserve_hostname (false por true) y guarda el archivo:
preserve_hostname: false por preserve_hostname: true): 

# nano /etc/cloud/cloud.cfg


Reiniciar el servidor para comprobar la configuración previa de preservación de hostname:

# reboot


Conectar al servidor vía SSH:

$ ssh sysadmin@192.168.1.100


Invocar facultades root sin activar dicho usuario:

$ sudo -i


Verificar nombre de servidor:
*El comando hostname permite ver o configurar el nombre (host) del sistema.

# hostname
nextcloud.local


Verificar nombre FQDN:

# hostname -f
nextcloud.local



→ INSTALACIÓN DE SOFTWARE REQUERIDO ←

apache2 = Servidor web HTTP Apache 
mariadb-server = Sistema de gestión de bases de datos derivado de MySQL.
php7.2         = PHP 7 es la versión más actual del lenguaje de programación PHP.
bzip2          = bzip2 es un programa que comprime y descomprime ficheros.
php-apcu        = La extensión apcu agrega funciones de almacenamiento en caché a objetos PHP.

# apt install apache2 mariadb-server php7.2 bzip2 libapache2-mod-php php-gd php-json php-mysql php-curl php-mbstring php-intl php-imagick php-xml php-zip php-apcu -y


redis-server    = Motor de base de datos en memoria.
php-redis      = Extensión PHP para Servidor Redis.

# apt install redis-server php-redis -y



→ INSTALACIÓN DE SERVIDOR NEXTCLOUD ← 


Ingresa al directorio web por default:
*CD (Change Directory), es un comando que permite cambiar de directorios.

# cd /var/www


Descarga la última versión de Nextcloud 15:
*WGET, es una herramienta que permite la descarga de contenidos desde servidores web.

# wget https://download.nextcloud.com/server/releases/latest-15.tar.bz2 -O nextcloud-15-latest.tar.bz2


Descomprime el archivo de descarga:
*TAR, comando que permite empaquetar/desempaquetar archivos.

# tar -xvjf nextcloud-15-latest.tar.bz2


Opcional, eliminar el archivo descargado:
*RM, comando que permite eliminar archivos.

# rm nextcloud-15-latest.tar.bz2


Asignar configuraciones en el archivo nextcloud.conf
*daSH, o shell es un comando que lee líneas de un archivo, interpreta, y generalmente ejecuta otros comandos.

# sh -c 'echo "Alias /nextcloud \"/var/www/nextcloud/\"" > /etc/apache2/sites-available/nextcloud.conf' && sh -c 'echo "<Directory /var/www/nextcloud/>" >> /etc/apache2/sites-available/nextcloud.conf' && sh -c 'echo " Options +FollowSymlinks" >> /etc/apache2/sites-available/nextcloud.conf' && sh -c 'echo " AllowOverride All" >> /etc/apache2/sites-available/nextcloud.conf' && sh -c 'echo " <IfModule mod_dav.c>" >> /etc/apache2/sites-available/nextcloud.conf' && sh -c 'echo "  Dav off" >> /etc/apache2/sites-available/nextcloud.conf' && sh -c 'echo " </IfModule>" >> /etc/apache2/sites-available/nextcloud.conf' && sh -c 'echo " SetEnv HOME /var/www/nextcloud" >> /etc/apache2/sites-available/nextcloud.conf' && sh -c 'echo " SetEnv HTTP_HOME /var/www/nextcloud" >> /etc/apache2/sites-available/nextcloud.conf' && sh -c 'echo "</Directory>" >> /etc/apache2/sites-available/nextcloud.conf'


Crear enlace simbólico del archivo de configuración de Nextcloud.
*LN, es una utilidad de comando que se utiliza para crear un enlace físico o un enlace simbólico (enlace simbólico) a un archivo existente.

# ln -s /etc/apache2/sites-available/nextcloud.conf /etc/apache2/sites-enabled/nextcloud.conf


Asignar permisos al directorio Nextcloud.
*CHOWN, es un comando que se usa para cambiar la propiedad del usuario o grupo de un archivo o directorio.

# chown -R www-data:www-data nextcloud


Asignar configuraciones en el archivo php.ini

# sh -c "echo 'date.timezone = $timezoneVar' >> /etc/php/7.2/apache2/php.ini" && sh -c 'echo "opcache.enable=1" >> /etc/php/7.2/apache2/php.ini' && sh -c 'echo "opcache.enable_cli=1" >> /etc/php/7.2/apache2/php.ini' && sh -c 'echo "opcache.interned_strings_buffer=8" >> /etc/php/7.2/apache2/php.ini' && sh -c 'echo "opcache.max_accelerated_files=10000" >> /etc/php/7.2/apache2/php.ini' && sh -c 'echo "opcache.memory_consumption=128" >> /etc/php/7.2/apache2/php.ini' && sh -c 'echo "opcache.save_comments=1" >> /etc/php/7.2/apache2/php.ini' && sh -c 'echo "opcache.revalidate_freq=1" >> /etc/php/7.2/apache2/php.ini'


Creación y Configuración de Base de Datos y Usuario.
Acceso a la base de datos.

# mysql -u root -p


Creación de la base de datos Nextcloud.

CREATE DATABASE nextcloud;


Creación de usuario que se conectará a la base de datos Nextcloud.

CREATE USER nextclouduser@localhost IDENTIFIED BY 'Passw0rd';


Otorgar los privilegios al nuevo usuario.

GRANT ALL PRIVILEGES ON nextcloud.* TO nextclouduser@localhost;


Salir.

exit



Redireccionamiento a HTTPS.
Revisión de nombre de tarjeta de red.

# ifconfig


# IPVar=$(ip addr show eth0 | grep global | tr '/' ' ' | cut -d' ' -f 6)

# sed -i "s/.*DocumentRoot.*/&\n\tRedirectPermanent \/ https:\/\/$IPVar\/nextcloud\//" /etc/apache2/sites-available/000-default.conf

# sed -i 's/.*DocumentRoot.*/&\n\t\tHeader always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"/' /etc/apache2/sites-available/default-ssl.conf

# a2enmod ssl && a2ensite default-ssl && a2enmod headers && a2enmod rewrite

# service apache2 reload && service apache2 restart



Acceso a Nextcloud.
https://192.168.1.100/nextcloud/

Nombre de usuario: sysadmin
Contraseña: Passw0rd

Ruta de BD: /var/www/nextcloud/data

Usuario de la base de datos: nextclouduser

Contraseña de la base de datos: Passw0rd

Nombre de la base de datos: nextcloud

localhost: localhost



→ Advertencias de seguridad y configuración ← 


1. Configuración de Servidor Redis.
"No se ha configurado el caché de memoria. Para mejorar el desempeño, por favor configura un memcache, si está disponible".


Editar el archivo de configuración de Nextcloud y agregar las siguientes lineas. 
(Antes de la línea “);”) 

# nano /var/www/nextcloud/config/config.php

#'memcache.local' => '\OC\Memcache\APCu',
'memcache.local' => '\OC\Memcache\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => 'localhost',
     'port' => 6379,
     ),


Reinicia el servidor web Apache.

# service apache2 reload && service apache2 restart


2. Conversión de Base de Datos.
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running 'occ db:convert-filecache-bigint' those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read the documentation page about this.

*filecache.mtime
*filecache.storage_mtime"


Ejecutar el siguiente comando para realizar la conversión bigint

# sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint

Following columns will be updated:

* filecache.mtime
* filecache.storage_mtime

This can take up to hours, depending on the number of files in your instance!
Continue with the conversion (y/n)? [n] y


3. Enlaces simbólicos.
"Tu servidor web no está correctamente configurado para resolver "/.well-known/caldav". Puedes encontrar más información al respecto en la documentación.

Tu servidor web no está correctamente configurado para resolver "/.well-known/carddav". Puedes encontrar más información al respecto en la documentación."


-En caso de NO tener certificado.
Agregar las lineas hasta abajo del archivo, antes de </VirtualHost>

# nano /etc/apache2/sites-enabled/default-ssl.conf

Redirect 301 /.well-known/carddav /nextcloud/remote.php/dav
Redirect 301 /.well-known/caldav /nextcloud/remote.php/dav

        </VirtualHost>
</IfModule>


-En caso de tener certificado.
Agregar las lineas hasta abajo del archivo, antes de </VirtualHost>

# nano /etc/httpd/conf.d/ssl.conf

Redirect 301 /.well-known/carddav /nextcloud/remote.php/dav
Redirect 301 /.well-known/caldav /nextcloud/remote.php/dav

        </VirtualHost>
</IfModule>


Reinicia el servidor web Apache.

# service apache2 reload && service apache2 restart



(Listo, disfruta de tu servidor Nextcloud)

Comentarios

Copyleft 2012 | Ubuntu Power