Cómo instalar NextCloud en Ubuntu 22.04 LTS: Guía paso a paso

por | 03 Nov, 2023 | Diseño Web | 0 Comentarios

Adentrarse en el mundo de los servidores privados puede parecer una tarea desafiante. Sin embargo, con las guia adecuada, el camino se vuelve mucho más ameno y accesible. NextCloud es una solución robusta y confiable para aquellos que buscan tener control total sobre sus archivos. Al usar NextCloud, no solo estarás dando un paso gigante hacia la autonomía digital, sino que también disfrutarás de un espacio a tu husto para almacenar, compartir y gestionar tus archivos.
Esta guía desglosa cada paso del proceso, desde la preparación del sistema hasta la optimización del servidor NextCloud. Al final de este recorrido, tendrás un servidor NextCloud funcionando en tu máquina Ubuntu 22.04 LTS.
Al utilizar SSH, optas por una vía segura y encriptada.

1. Accede al servidor por SSH

Al utilizar SSH, optas por una vía segura y encriptada.

2. Crea un usuario local

Ahora estamos conectados como “root”, por seguridad vamos a crear un usuario local, si es que no está creado ya.

NOTA: Cuándo veas “Y” en mayúscula (en terminal), es el valor predeterminado al presionar la tecla “enter”.

3. Verifica que tenga permisos sudo tu usuario

usermod: Es una utilidad para modificar la configuración de un usuario existente.
aG: Estas opciones juntas indican que se va a agregar (-a) al usuario a un grupo (-G) sin eliminarlo de otros grupos a los que ya pertenece.
sudo: Es el nombre del grupo al que queremos agregar al usuario. En sistemas basados en Debian, como Ubuntu, los miembros del grupo sudo tienen permisos para ejecutar cualquier comando como superusuario a través del comando sudo.
evzek: Es el nombre del usuario al que queremos agregar al grupo mencionado.

4. Ahora puedes desconectar e identificarte con tu usuario

¿Por qué es importante crear un usuario local y no solo quedarnos con root?

Usar el usuario root constantemente puede parecer práctico debido a su acceso total, pero en realidad, es una práctica riesgosa. Cuando utilizamos root, cualquier error, por mínimo que sea, puede tener consecuencias graves en el sistema. Además, al trabajar siempre con estos privilegios, nos exponemos a mayores riesgos de seguridad. Si un atacante o un malware obtienen acceso, tendrían control absoluto. Por otro lado, algunas aplicaciones no están diseñadas para ser ejecutadas con permisos de root y podrían comportarse de forma impredecible. Es una norma general evitar usar root a menos que sea estrictamente necesario. Al final del día, trabajar con un usuario regular es como llevar cinturón de seguridad: puede que no lo notes siempre, pero te protege en momentos cruciales. ¡Es una elección inteligente para cuidar tu servidor!

5. Actualiza tu servidor

Usaremos dist-upgrade es más exhaustivo en vez de sudo apt upgrade y, por lo general, es suficiente para obtener todas las actualizaciones necesarias, incluidas aquellas que involucran cambios en las dependencias.

sudo apt update: Actualiza la lista de paquetes disponibles en los repositorios configurados en tu sistema. En otras palabras, le dice a tu servidor: “Oye, ¿cuáles son las últimas versiones de los programas y herramientas disponibles para instalar o actualizar?”. No instala ni actualiza ningún programa, solo refresca la información.

sudo apt upgrade: Una vez que has actualizado la lista de paquetes con el comando anterior, este comando se encarga de instalar las últimas versiones de todos los programas que ya tienes en tu sistema. Así que, básicamente, le estás diciendo a tu computadora: “Ahora que ya sabes cuáles son las últimas versiones, ¡vamos a instalarlas!”

sudo apt dist-upgrade: Es una versión avanzada del típico sudo apt upgrade. Mientras que upgrade solo actualiza paquetes existentes, dist-upgrade gestiona de forma inteligente las dependencias, pudiendo agregar o quitar paquetes según sea necesario para las actualizaciones. Es útil para transiciones a nuevas versiones del sistema, pero es importante usarlo con precaución y estar atentos a los cambios que propone.

sudo apt autoremove: Ayuda a mantener tu sistema limpio, eliminando paquetes que fueron instalados automáticamente como dependencias y que ya no son necesarios. Es como un asistente que se asegura de que tu sistema no esté lleno de cosas innecesarias, manteniéndolo ordenado y eficiente. ¡Una pequeña limpieza de vez en cuando siempre es buena idea!

6. Personalicemos “localhost”

Actualmente, el indicador de bash muestra localhost, lo cuál esta bien si solo tienes un servidor y solo quieras tener un servidor, pero te recomiendo cambiarlo para identificarlo mejor, por ejemplo con el nombre del dominio y proyecto. Así sabrás en donde estás conectado.

Tendremos que editar 2 archivos “hostname” y “hosts

En el editor nano recuerda:
Pegar con clic derecho (normalmente).
– ctrl + o Para guardar.
– ctrl + x Para salir.

Debemos reiniciar nuestra máquina:

7. Configurar la Base de Datos (MariaDB)

Usaremos MariaDB en lugar de MySQL por su rendimiento superior y características avanzadas.

8. MySQL Secure Installation

El comando sudo mysql_secure_installation es una herramienta que te ayuda a fortalecer la seguridad de tu servidor MySQL o MariaDB. Al ejecutarlo, te guiará a través de varios pasos para hacer cambios recomendados que aumentan la seguridad de tu base de datos.

9. Crea la Base de Datos

Ctrl + d → Para desconectarse de MariaDB.

10. Instala Apache

11. Instala PHP y otras dependencias

12. Habilita los módulos necesarios de Apache

13. Reinicia el servicio de apache2

14. En PHP habilita:

15. Descargamos última versión de Nextcloud

16. Deshabilitemos el sitio predeterminado de apache

17. Crear un archivo de configuración de host para Nextcloud

Asegúrate de ajustar los nombres para que coincidan con los tuyos.

conf para Apache 2.4.* o superior.

He actualizado un poco este archivo:

Orden de las directivas: En la configuración mejorada, he movido ErrorLog y CustomLog fuera del bloque Directory. Es más estándar tener estas directivas al nivel del VirtualHost en lugar de dentro del bloque del directorio.
Registro (Logging): Cambié TransferLog por CustomLog ... combined. Este último añade más información al registro, como el referente y el agente de usuario, lo que puede ser útil para analizar el tráfico.
Opciones de directorio: En la configuración mejorada, desactivé el listado de directorios con Indexes. Esto evita que, si no hay un archivo index en un directorio, se muestre un listado completo del contenido del directorio, lo cual es una buena práctica de seguridad.
Control de acceso: Reemplacé las directivas Order, Allow y Deny por Require all granted. Esto se debe a que las primeras tres están obsoletas desde Apache 2.4 en adelante y Require es la forma moderna de controlar el acceso.

.conf para Apache 2.3.* o inferior:

18. Edita el archivo de configuración principal de Apache

El archivo de configuración principal de Apache depende de cómo y dónde se haya instalado Apache, así como de la distribución de Linux que estés utilizando. Aquí te dejo una guía general:

httpd.conf: Este archivo es el archivo de configuración principal en muchas instalaciones de Apache, especialmente en las que se instalan a partir del código fuente y en algunas distribuciones de Linux.

apache2.conf: Es típico de las instalaciones de Apache en distribuciones de Linux basadas en Debian, como Ubuntu.

Para determinar cuál de estos archivos debes editar, puedes hacer lo siguiente:

Si estás en una distribución basada en Debian (como Ubuntu), probablemente tu archivo principal sea apache2.conf. Puedes verificar su existencia con:

Si ambos archivos existen en tu sistema, te recomendaría que revisaras primero apache2.conf si estás en una distribución basada en Debian, o httpd.conf en otras distribuciones.

Casi al final del archivo .conf para Apache 2.4.* o superior:

Encabezados de seguridad: Añadí Header always append X-Frame-Options SAMEORIGIN para proteger contra Clickjacking, impidiendo que tu sitio sea mostrado en un iframe desde un dominio diferente.
Ocultar versión de Apache: Agregué ServerTokens Prod y ServerSignature Off para que Apache no muestre su versión en los encabezados o en las páginas de error, lo que es otra buena práctica de seguridad.

19. Habilitar .conf

20. Instalamos y configuramos PHP-FPM

21. Configurar php.ini

¿No estás seguro?, si estás usando PHP-FPM con Nginx / Apache o módulo mod_php con Apache, comprueba con phpinfo()

Con el siguiente código:
La página resultante te mostrará toda la configuración de PHP. En la sección “Loaded Configuration File” (Archivo de configuración cargado), verás la ruta al archivo php.ini que está siendo utilizado. No olvides eliminar el archivo info.php después de haber comprobado la información para mantener la seguridad de tu servidor.

22. Parámetros php.ini

memory_limit = 512M: establece el límite de memoria que un script PHP puede consumir a 512 megabytes.
upload_max_filesize = 512M: define el tamaño máximo permitido para archivos cargados a 200 megabytes.
max_execution_time = 360: determina que un script PHP puede ejecutarse hasta 360 segundos antes de ser terminado.
post_max_size = 512M: especifica que el tamaño máximo para datos enviados mediante el método POST es de 200 megabytes.
date.timezone = “America/Mexico_City”: configura la zona horaria predeterminada a la de Ciudad de México.
opcache.enable=1: habilita la extensión OPcache. Cuando está establecido en 1, OPcache mejora el rendimiento almacenando bytecode precompilado en la memoria compartida, eliminando así la necesidad de cargar y analizar scripts en cada solicitud.
opcache.interned_strings_buffer=8: determina la cantidad de memoria, en megabytes, reservada para almacenar cadenas internadas. Cuando una cadena se interna, es almacenada una vez en memoria y se reutiliza, lo que puede mejorar el rendimiento y reducir el uso de memoria.
opcache.max_accelerated_files=10000: establece el número máximo de archivos que pueden ser acelerados por OPcache. Este valor determina cuántos scripts PHP pueden ser optimizados y guardados en el caché.
opcache.memory_consumption=128: define el tamaño, en megabytes, de la memoria compartida que se utilizará para almacenar el bytecode de PHP en OPcache.
opcache.save_comments=1: indica si se deben guardar o no los comentarios de los scripts PHP. Al establecer este valor en 1, todos los comentarios en el código PHP se conservarán cuando se almacenen en el caché. Esto puede ser necesario para algunas bibliotecas o herramientas que dependen de la presencia de comentarios en el código, como las anotaciones.
opcache.revalidate_freq=1: establece con qué frecuencia, en segundos, se deben verificar los archivos de script PHP para detectar cambios. Un valor de 1 significa que OPcache verificará los scripts en cada solicitud para ver si han sido modificados y, en caso afirmativo, los recompilará y almacenará en el caché.

23. Configurar php-fpm pool

24. Directivas de Apache para el procesamiento de archivos PHP por php-fpm

¿recuerdas que desabilitamos el sitio predeterminado de apache (000-default.conf)? Bueno debemos dirigirnos al archivo .conf correcto:
Tu archivo se debería de ver algo así:

25. Instalar Nextcloud mediante comando CLI

Recuerda que debes estar ubicado en la carpeta de tu NextCloud para usar CLI.

Si lo hiciste bien, el comando mostrará “Nextcloud was successfully installed

26. Soluciona el error ‘Acceso a través de un Dominio no Confiable’ en config.php

Nextcloud permite el acceso solo desde el localhost, podría mostrar un error como “Acceso a través de un dominio no confiable”. Necesitamos permitir el acceso a Nextcloud utilizando una dirección IP o un nombre de dominio. Editamos config.php
Configura Nextcloud para usar APCu para el caché de memoria en config.php
Agregamos proxies IPv4 y IPv6:
Tu archivo config.php se debería de ver algo así:
Reiniciamos apache y php:

27. Instala y configura Redis

En Nextcloud, Redis se utiliza para el caché local y distribuido, así como para el bloqueo de archivos transaccional. Usamos APCu para el caché local, que es más rápido que Redis. Utilizaremos Redis para el bloqueo de archivos. El mecanismo de bloqueo de archivos transaccional de Nextcloud bloquea archivos para evitar la corrupción de estos durante la operación normal.

Configura Redis para usar sockets Unix en lugar de puertos.

Configuramos Nextcloud para usar Redis para el bloqueo de archivos.
Tu archivo config.php se debería de ver algo así:
Habilitamos el bloqueo de sesiones Redis en PHP.

Ahora, podemos verificar el uso de Redis (activando el puerto de Redis en la configuración de Redis) ejecutando el comando “redis-cli MONITOR”. Durante la carga de Nextcloud, mostrará datos en tiempo real en la pantalla.

28. Instala SSL

Puedes usar https://certbot.eff.org/instructions, pero no lo haré de esta forma en esta ocasión.

Vamos a usar “python3-certbot-apache”.

Usar sudo snap install --classic certbot es como tener una aplicación en tu teléfono que se actualiza automáticamente cada vez que hay una nueva versión, sin que tengas que preocuparte por nada. Por otro lado, con sudo apt-get install python3-certbot-apache, es como si descargases una app que necesita que tú, de vez en cuando, la revises y actualices manualmente. Ambas opciones hacen prácticamente lo mismo, pero una te da actualizaciones automáticas y la otra te permite decidir cuándo y cómo actualizar.

29. Habilitar el módulo HTTP2 de Apache y configura el sitio para los protocolos http2

Editamos *-le-ssl.conf
Reiniciamos apache2

Resolver problemas de Nextcloud

• The “Strict-Transport-Security” HTTP header is not set to at least “15552000” seconds. For enhanced security, it is recommended to enable HSTS as described in the security tips .
HTTP Strict Transport Security, que instruye a los navegadores a no permitir ninguna conexión con la instancia de Nextcloud usando HTTP, previene ataques de intermediarios.
Tu archivo *-le-ssl.conf se debería de ver algo así:
• Your installation has no default phone region set. This is required to validate phone numbers in the profile settings without a country code. To allow numbers without a country code, please add “default_phone_region” with the respective ISO 3166-1 code  of the region to your config file.

Pretty URL’s

Las URL amigables eliminan la parte “index.php” en todas las URLs de Nextcloud. Esto hará que las URLs sean más cortas y estéticas.

Actualiza tu sistema

Las URL amigables eliminan la parte “index.php” en todas las URLs de Nextcloud. Esto hará que las URLs sean más cortas y estéticas.

Así debería de verse tu config.php

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *