Cómo instalar Nextcloud en Debian 12

Nextcloud es un software de código abierto para crear almacenamiento de archivos público y privado. Te permite crear servicios autoalojados como Dropbox, Google Drive o Mega.nz. Inicialmente, fue creado por el desarrollador original de Owncloud, Frank Karlitschek. En 2016, bifurcó el proyecto Owncloud y creó un nuevo proyecto con el nuevo nombre «Nextcloud».

A estas alturas, el proyecto Nextcloud está creciendo rápidamente y se está convirtiendo en algo más que un software de alojamiento de archivos. Es más bien una plataforma de sincronización de archivos y colaboración de contenidos. Respaldado con muchos plugins, Nextcloud se ha convertido en un potente software de colaboración. Puedes instalar plugins para gestión de proyectos, videoconferencia, edición colaborativa, toma de notas, cliente de correo electrónico, etc.

Este tutorial te mostrará cómo instalar Nextcloud en un servidor Debian 12. Instalarás Nextcloud con el servidor web Apache2, el servidor MariaDB y PHP 8.2. Además, también asegurarás tu instalación con UFW (Uncomplicated Firewall) y certificados SSL/TLS de Letsencrypt.

Requisitos previos

Para completar esta guía, asegúrate de que tienes lo siguiente:

  • Un servidor Debian 12 con al menos 4 GB de memoria y 2 CPUs.
  • Un usuario no root con privilegios de administrador.
  • Un nombre de dominio apuntando a la dirección IP del servidor.

Instalación del servidor web Apache2

En el primer paso, instalarás el servidor web Apache2 que se utilizará para ejecutar Nextcloud.

En primer lugar, actualiza el índice de paquetes de Debian mediante el comando apt update que se indica a continuación. Cuando termines, obtendrás la última información de paquetes que te permitirá instalar la última versión de los paquetes.

sudo apt update

Ahora introduce el siguiente comando apt install para instalar el servidor web Apache. Introduce y para confirmar cuando se te pida, y pulsa ENTER para proceder a la instalación.

sudo apt install apache2

instala apache2

Una vez instalado Apache2, ejecuta los siguientes comandos systemctl para verificar el estado del servicio apche2.

sudo systemctl is-enabled apache2
sudo systemctl status apache2

La salida habilitada debería indicar que el servicio apache2 se iniciará automáticamente al arrancar el sistema. Y el estado active (en ejecución ) confirma que el servicio apache2 se está ejecutando.

verificar el servicio apache2

Instalar UFW

Una vez instalado Apache2, instalarás el UFW (Cortafuegos sin complicaciones) y abrirás puertos para OpenSSH, HTTP y HTTPS. Configurarás UFW como cortafuegos por defecto en tu servidor Debian.

Instala el paquete ufw en tu servidor Debian mediante el siguiente comando apt install. Introduce y para confirmar la instalación y pulsa ENTER para continuar.

sudo apt install ufw

instalar ufw

Una vez instalado ufw, ejecuta los siguientes comandos ufw para permitir el servicio ssh y habilitar ufw.

sudo ufw allow OpenSSH
sudo ufw enable

Introduce y cuando se te pida que inicies y habilites el servicio ufw. Si lo consigues, deberías obtener el mensaje«El cortafuegos está activo y habilitado al iniciar el sistema«.

start activar ufw

Con el ufw en funcionamiento, debes añadir los puertos HTTP y HTTPS que utilizará el servidor web Apache2.

Ejecuta el siguiente comando ufw para obtener la lista de perfiles de aplicación disponibles en ufw. Deberías ver perfiles como OpenSSH para el servicio ssh y WWW Full para el servidor web Apache2, ambos protocolos HTTP y HTTPS.

sudo ufw app list

Ahora ejecuta el siguiente comando para añadir y habilitar el perfil WWW Full y recarga ufw para aplicar los cambios.

sudo ufw allow "WWW Full"
sudo ufw reload

Por último, ejecuta el siguiente comando ufw status para verificar las reglas habilitadas en ufw. Asegúrate de que tienes habilitado el perfil WWW Completo, lo que significa que tanto el puerto HTTP como el HTTPS están abiertos.

sudo ufw status

permitir WWW Completo y verificar ufw

Instalación de PHP 8.2

La última versión de Debian 12 Bookwork viene con paquetes PHP 8.2 por defecto, que es la versión de PHP recomendada para instalar Nextcloud. Ahora, instalarás los paquetes PHP 8.2 y configurarás PHP para la instalación de Nextcloud. También habilitarás el PHP Opcache que se utilizará como caché de memoria para Nextcloud.

Ejecuta el siguiente comando apt install para instalar paquetes PHP en tu sistema Debian. El comando instalará PHP y algunas extensiones necesarias para Nextcloud, como GD, MySQL, Imagick, pear y apcu. Consulta la página de requisitos del servidor Nextcloud para obtener la lista completa de paquetes que necesitas.

sudo apt install -y php php-curl php-cli php-mysql php-gd php-common php-xml php-json php-intl php-pear php-imagick php-dev php-common php-mbstring php-zip php-soap php-bz2 php-bcmath php-gmp php-apcu libmagickcore-dev

Introduce y para confirmar la instalación, y pulsa ENTER para continuar.

instalar php 8.2

Una vez instalado PHP, comprueba la versión de PHP y las extensiones de PHP habilitadas utilizando el siguiente comando.

php --version
php -m

Deberías ver que PHP 8.2 está instalado con extensiones habilitadas, como GD, MySQL, Imagick, xml y zip.

comprobación php

A continuación, ejecuta el siguiente comando del editor nano para abrir el archivo de configuración de PHP /etc/php/8.2/apache2/php.ini.

sudo nano /etc/php/8.2/apache2/php.ini

Descomenta el parámetro date.timezone e introduce la zona horaria adecuada para PHP.

date.timezone = Europe/Amsterdam

Aumenta el valor por defecto de los parámetros memory_limit, upload_max_filesize, post_max_size y max_execution_time. Cambia el valor según necesites.

memory_limit = 512M
upload_max_filesize = 500M
post_max_size = 600M 
max_execution_time = 300

Activa file_uploads y allow_url_fopen cambiando el valor por defecto a On.

file_uploads = On
allow_url_fopen = On

Desactiva el parámetro display_errors y output_buffering cambiando el valor por defecto a Off.

display_errors = Off
output_buffering = Off

Descomenta el parámetro zend_extension y cambia el valor a opcache. Esto habilitará PHP OPcache, que es necesario para Nextcloud.

zend_extension=opcache

Añade las siguientes líneas a la sección [opcache]. La configuración OPCache es la recomendada por Nextcloud.

opcache.enable = 1
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 10000
opcache.memory_consumption = 128
opcache.save_comments = 1
opcache.revalidate_freq = 1

Guarda el archivo y cierra el editor cuando hayas terminado.

Por último, introduce el siguiente comando systemctl para reiniciar el servicio apache2. Cada vez que realices cambios en la configuración de PHP, reinicia el servicio apache2 para aplicar los cambios que hayas realizado.

sudo systemctl restart apache2

Instalación del servidor MariaDB

Tras instalar el servidor web Apache2 y PHP 8.2, instalarás el servidor MariaDB que se utilizará como base de datos para Nextcloud y configurarás la contraseña raíz de MariaDB mediante la utilidad mariadb-secure-installation.

Instala el servidor MariaDB mediante el siguiente comando apt install. Introduce y cuando se te solicite y pulsa ENTER para proceder con la instalación.

sudo apt install mariadb-server

instalar mariadb

Una vez instalado MariaDB, introduce los siguientes comandos systemctl para verificar el servicio mariadb.

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

La salida enabled indica que el servicio mariadb se ejecutará automáticamente al arrancar el sistema. Y la salida active (running ) debería indicar que el servicio mariadb se está ejecutando.

comprobando mariadb

Ahora que el servidor MariaDB está en marcha, debes asegurar la instalación de MariaDB, y esto puede hacerse mediante la utilidad mariadb-secure-installation. El comando mariadb-secure-installation te ayuda a configurar la contraseña raíz y la autenticación de MariaDB y a eliminar la prueba de base de datos por defecto del usuario anónimo.

Ejecuta el comando mariadb-secure-installation para asegurar tu servidor MariaDB.

sudo mariadb-secure-installation

Durante el proceso, debes introducir Y para estar de acuerdo y aplicar la configuración a MariaDB, o introducir n para no estar de acuerdo y dejar la configuración por defecto. A continuación se indican algunas configuraciones de MariaDB que se te pedirán:

  • Pulsa ENTER cuando te pregunten por la contraseña de root de MariaDB.
  • Introduce n cuando te pregunten por el método de autenticación unix_socket.
  • Introduce Y para establecer una nueva contraseña para el usuario raíz de MariaDB. A continuación, introduce la nueva contraseña y repite la operación.
  • Introduce Y para eliminar el usuario anónimo por defecto de MariaDB.
  • A continuación, vuelve a introducir Y para desactivar el inicio de sesión remoto para el usuario raíz de MariaDB.
  • Introduce Y para eliminar la prueba de base de datos por defecto de MariaDB.
  • Por último, vuelve a introducir Y para recargar los privilegios de la tabla y aplicar los cambios.

Con esto, el servidor MariaDB está instalado y protegido.

Crear base de datos y usuario

Tras instalar el servidor MariaDB, ahora vas a crear una nueva base de datos y un nuevo usuario para Nextcloud. Para ello, debes iniciar sesión en el servidor MariaDB a través del cliente mariadb.

Accede al servidor MariaDB utilizando el siguiente comando de cliente mariadb. Introduce la contraseña raíz de MariaDB cuando se te solicite.

sudo mariadb -u root -p

Una vez iniciada la sesión en MariaDB, ejecuta las siguientes consultas para crear una nueva base de datos Mariadb y un nuevo usuario para Nextcloud. En este ejemplo, crearás una nueva base de datos nextcloud_db, y el usuario nextclouduser con la contraseña StrongPassword. Asegúrate de cambiar la contraseña StrongPassword por una contraseña nueva.

CREATE DATABASE nextcloud_db;
CREATE USER nextclouduser@localhost IDENTIFIED BY 'StrongPassword';
GRANT ALL PRIVILEGES ON nextcloud_db.* TO nextclouduser@localhost;
FLUSH PRIVILEGES;

crear base de datos y usuario

Por último, ejecuta la siguiente consulta para asegurarte de que el usuario nextclouduser puede acceder a la base de datos nextcloud_db.

SHOW GRANTS FOR nextclouduser@localhost;

Si todo va bien, deberías ver que el usuario nextclouduser tiene privilegios para la base de datos nextcloud_db.

comprobar usuario mariadb

Escribe quit para salir del servidor MariaDB y completar esta sección.

Descarga del código fuente de Nextcloud

En este punto, todos los paquetes de software para ejecutar Nextcloud están instalados. Ahora descargarás la última versión del código fuente de Nextcloud y, a continuación, lo instalarás. Consulta la página de descarga de Nextcloud antes de empezar para obtener información sobre la última versión de Nextcloud.

Antes de descargar el código fuente de Nextcloud, ejecuta el siguiente comando apt install para instalar curl y descomprimir.

sudo apt install curl unzip -y

instala unzip y curl

Desplázate al directorio /var/www y descarga el código fuente de Nextcloud mediante el comando curl que aparece a continuación. Visita la página de descargas de Nextcloud para obtener la última versión de Nextcloud.

cd /var/www/
curl -o nextcloud.zip https://download.nextcloud.com/server/releases/latest.zip

descargar nextcloud

Ahora extrae el archivo nextcloud. zip mediante el comando unzip, y luego cambia la propiedad del directorio nextcloud a www-data.

unzip nextcloud.zip
sudo chown -R www-data:www-data nextcloud

Con esto, deberías notar que el directorio raíz de documentos para la instalación de Nextcloud es el directorio /var/www/nextcloud. Y el servidor web Apache2 puede acceder al código fuente de nextcloud a través del usuario www-data.

Configuración del host virtual Apache2

Después de descargar el código fuente de Nextcloud, debes crear la nueva configuración del host virtual Apache2 que se utilizará para ejecutar Nextcloud. Asegúrate de que tienes el nombre de dominio apuntando a la dirección IP de tu servidor Debian para la instalación de Nextcloud.

Crea una nueva configuración de host virtual Apache2 /etc/apache2/sites-available/nextcloud. conf utilizando el siguiente comando nano.

sudo nano /etc/apache2/sites-available/nextcloud.conf

Cambia el nombre de dominio en el parámetro ServerName por tu dominio, y la ruta completa de log para los parámetros ErrorLog y CustomLog.

<VirtualHost *:80>
    ServerName nextcloud.hwdomain.io
    DocumentRoot /var/www/nextcloud/
# log files
ErrorLog /var/log/apache2/files.hwdomain.io-error.log
CustomLog /var/log/apache2/files.hwdomain.io-access.log combined

<Directory /var/www/nextcloud/>
Options +FollowSymlinks
AllowOverride All

<IfModule mod_dav.c>
Dav off
</IfModule>

SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>
</VirtualHost>

Cuando hayas terminado, guarda el archivo y sal del editor.

A continuación, ejecuta el siguiente comando a2ensite para activar la configuración del host virtual nextcloud.conf. A continuación, verifica la configuración general de Apache2 mediante el comando apachectl que aparece a continuación.

sudo a2ensite nextcloud.conf
sudo apachectl configtest

configurar virtualhost

Deberías ver la salida Sintaxis OK si la configuración de Apache es correcta y adecuada.

Ahora introduce el siguiente comando systemctl para reiniciar el servicio apache2 y aplicar la configuración del host virtual Nextcloud.

sudo systemctl restart apache2

Una vez reiniciado apache2, tu instalación Nextcloud debería ser accesible a través de un protocolo HTTP inseguro. Visita tu nombre de dominio Nextcloud y deberías obtener la página de instalación como ésta:

página de instalación

Proteger Nextcloud con certificados SSL/TLS

Para añadir una capa de seguridad adicional a tu Nextcloud, establecerás HTTPS dentro de la configuración de tu host virtual Apache2 mediante Certbot. Certbot es una herramienta de línea de comandos para generar certificados SSL/TLS gratuitos de Letsencrypt y viene con un plugin adicional que te permite configurar HTTPS automáticamente para múltiples servidores web.

Ejecuta el siguiente comando apt install para instalar Certbot y el plugin Certbot apache. Introduce y, cuando se te pida confirmación, y pulsa, ENTER para continuar.

sudo apt install certbot python3-certbot-apache

instalar certbot

Ahora ejecuta el siguiente comando certbot para generar certificados SSL/TLS para tu nombre de dominio Nextcloud y configurar automáticamente HTTPS en el host virtual Apache2. Asegúrate de cambiar el nombre de dominio y la dirección de correo electrónico dentro del siguiente comando.

sudo certbot --apache2 --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d nextcloud.hwdomain.io

Una vez finalizado el proceso, el nombre de dominio Nextcloud debería estar configurado con HTTPS, que es gestionado por el plugin de Apache Certbot. Y los certificados SSL/TLS se encuentran en el directorio /etc/letsencrypt/live/domain-name.com/.

Instalar Nextcloud

En esta sección, iniciarás la instalación de Nextcloud desde tu navegador web. En este proceso, también crearás el usuario administrador para Nextcloud.

Inicia tu navegador web y visita el nombre de dominio de tu instalación de Nextcloud (es decir: http://nextcloud.hwdomain.io/). Deberías ser redirigido automáticamente a una conexión HTTPS segura y se te pedirá que crees un usuario administrador para Nextcloud.

Introduce el nuevo usuario administrador y la contraseña para tu Nextcloud. También puedes configurar un directorio de datos personalizado o dejarlo por defecto.

crear usuario administrador

A continuación, desplázate hasta la página inferior e introduce los detalles del nombre de la base de datos, el usuario y la contraseña. A continuación, haz clic en Finalizar configuración para completar la instalación.

configuración de la base de datos

Una vez completada la instalación, deberías recibir la recomendación de Nextcloud para instalar algunas de las aplicaciones de Nextcloud. Haz clic en Omitir para instalarla más tarde.

apps recomendadas

Ahora deberías ver el panel de usuario como el siguiente:

panel nextcloud

Ahora haz clic en el icono de la carpeta para acceder al gestor de archivos de Nextcloud.

gestor de archivos

Por último, haz clic en el icono de usuario del menú de la izquierda y selecciona Configuración de Administración.

ajustes de administración

Dentro de la sección Administración, haz clic en Información general. Deberías obtener información sobre tu versión de Nextcloud y algunas recomendaciones que puedes aplicar a tu Nextcloud, incluidas algunas recomendaciones de seguridad y optimizaciones de rendimiento.

visión general

Ajuste básico del rendimiento de Nextcloud

En los siguientes pasos, añadirás ajustes a tu instalación de Nextcloud habilitando la caché de memoria mediante OPCache y configurando cron mediante crontab.

Abre la configuración por defecto de Nextcloud /var/www/nextcloud/config/config. php utilizando el comando del editor nano que aparece a continuación.

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

Dentro de la sección $CONFIG = array, añade la nueva configuración que aparece a continuación para habilitar la memoria caché de Nextcloud.

<?php
$CONFIG = array (
....
  # Additional configuration
  'memcache.local' => '\OC\Memcache\APCu',
);

Guarda los cambios y cierra el archivo cuando hayas terminado.

A continuación, ejecuta el siguiente comando para crear un nuevo crontab que se utilizará para ejecutar el script crontab de Nextcloud. El parámetro -u www-data se utiliza porque el servidor web Apache2 se ejecuta sobre ese usuario.

sudo crontab -u www-data -e

Añade la siguiente configuración al archivo crontab.

*/5  *  *  *  * php -f /var/www/nextcloud/cron.php

Guarda y sal del archivo cuando hayas terminado.

Verifica la lista crontab para el usuario www-data utilizando el siguiente comando. Asegúrate de que tienes el script crontab que has añadido.

crontab -u www-data -l

Conclusión

¡Ya lo tienes todo listo! Has completado la instalación de Nextcloud en tu sistema Debian. Has instalado Nextcloud con el servidor web Apache2, PHP 8.2 y el servidor de bases de datos MariaDB. También has asegurado tu Nextcloud con UFW (Uncomplicated Firewall) y certificados SSL/TLS a través de Certbot y Letsencrypt.

Con todo esto configurado, ya puedes utilizar Nextcloud para almacenar tus documentos de forma segura o añadir almacenamiento de datos de terceros a tu Nextcloud.

Scroll al inicio