Cómo instalar Nextcloud en Debian 11

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

En ese momento, el proyecto Nextcloud crece rápidamente y se convierte 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 por un montón de plugins, Nextcloud se convierte en un potente software de colaboración. Puedes instalar plugins para la gestión de proyectos, videoconferencia, edición colaborativa, toma de notas, cliente de correo electrónico, etc.

En esta guía, aprenderás a instalar Nextcloud en la última versión de Debian 11 Bullseye. Instalarás Nextcloud bajo la pila LAMP (Linux, Apache2/httpd, MySQL/MariaDB y PHP).

Requisitos previos

  • Un servidor Debian 11. Asegúrate de que todos los paquetes están actualizados a la última versión.
  • Un usuario root o un usuario con privilegios de root. Este usuario se utilizará para instalar nuevos paquetes y editar las configuraciones del sistema.

Obtén los repositorios raíz y de actualización

Primero, ejecuta el siguiente comando para obtener los privilegios de root.

1. Si tienes instalado‘sudo’, ejecuta el siguiente comando sudo.

sudo su

Ahora escribe la contraseña de acceso de tu usuario.

2. Si no tienes el paquete sudo, ejecuta el comando ‘su‘ como se indica a continuación

su

Ahora escribe tu contraseña de root y pulsa‘Enter‘.

3. Después, actualiza todos tus repositorios de Debian con el comando apt que aparece a continuación.

apt update

Instalar el servidor web Apache

Después de actualizar los repositorios de Debian, instalarás un servidor web Apache y habilitarás algunos módulos Apache para Nextcloud.

1. Ejecuta el siguiente comando apt para instalar el servidor web apache.

apt install apache2

Escribe‘y‘ y pulsa‘Enter’ para continuar la instalación.

Instalar el servidor web Apache

2. Si la instalación se ha completado, comprueba el servicio apache con el siguiente comando.

systemctl is-enabled apache2
systemctl status apache2

Verás la salida‘enabled‘, que significa que el servicio apache se iniciará automáticamente al arrancar el sistema. Y el estado actual del servicio apache, es ‘activo(en ejecución)‘.

Comprobación de los estados de servicio de Apache

3. A continuación, activa los módulos de Apache ‘ssl, rewrite y headers’ ejecutando el comando a2enmod que aparece a continuación.

a2enmod ssl rewrite headers

A continuación se muestra la salida que obtendrás.

Habilitar algunos módulos apache

4. Después, ejecuta el siguiente comando para reiniciar el servicio apache.

systemctl restart apache2

Se aplicarán los nuevos módulos de apache, verifica esos módulos utilizando el comando apachectl que aparece a continuación.

apachectl -M | egrep "ssl|rewrite|headers"

Verás una salida similar a la de abajo.

Verificar los módulos habilitados apache

Instalación y configuración de PHP

Para esta guía, desplegarás Nextcloud con la última versión estable de PHP 8.0.

Por defecto, el repositorio de Debian proporciona paquetes para PHP 8.0. Pero, Nextcloud requiere algunos paquetes PHP adicionales que pueden ser instalados desde un repositorio de terceros. Y tú vas a añadir un nuevo repositorio a tu sistema Debian.

1. Ejecuta el siguiente comando para añadir un repositorio de PHP para el sistema Debian.

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main"\
| sudo tee /etc/apt/sources.list.d/sury-php.list

2. Descarga la clave GPG en el directorio‘/etc/apt/trusted.gpg.d‘.

curl -o /etc/apt/trusted.gpg.d/sury-php8.gpg https://packages.sury.org/php/apt.gpg

Ahora ejecuta de nuevo el comando ‘apt update’ para actualizar todos los repositorios.

apt update

Añadir el repositorio de PHP Debian 11

2. Instala los paquetes PHP y los módulos PHP adicionales para Nextcloud utilizando el comando apt que aparece a continuación.

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

Después, ejecuta de nuevo el comando apt para instalar algunos paquetes adicionales.

apt install -y libmagickcore-dev

Los paquetes‘libmagickcore-dev‘ son necesarios para php-imagick para el procesamiento de imágenes SVG en Nextcloud.

3. Una vez completada la instalación de todos los paquetes, cambia el directorio de trabajo a‘/etc/php/8.0/apache2‘ y edita la configuración‘php.ini‘ utilizando nano.

cd /etc/php/8.0/apache2/
nano php.ini

Para el despliegue básico de nextcloud, cambia las opciones por defecto utilizando la siguiente configuración.

file_uploads = On
allow_url_fopen = On
memory_limit = 512M
upload_max_filesize = 500M
post_max_size = 600M
max_execution_time = 300
display_errors = Off
date.timezone = Europe/Amsterdam
output_buffering = Off

Descomenta la opción‘zend_extension=opcache‘ para cargar la extensión opcache.

zend_extension=opcache

Pasa a la sección ‘[opcache]’ y añade la siguiente configuración.

[opcache]
...
....
.....
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 la configuración pulsando el botón‘Ctrl+x‘ y escribe‘y’, luego pulsa‘Enter‘ para salir.

4. Ahora reinicia el servicio de apache para aplicar los nuevos cambios utilizando el siguiente comando.

systemctl restart apache2

Configuración de PHP

Instalación y configuración de MariaDB

En esta etapa, instalarás el servidor de bases de datos mariadb, asegurarás la implementación de mariadb y crearás una nueva base de datos y un usuario para Nextcloud.

1. Para instalar el servidor de bases de datos mariadb, ejecuta el siguiente comando.

apt install mariadb-server mariadb-client

Escribe‘y’ para confirmar e instalar los paquetes mariadb.

Instalación de MariaDB Server Debian 11

2. Una vez completada la instalación, comprueba el servicio mariadb con el siguiente comando.

systemctl is-enabled mariadb
systemctl status mariadb

El servicio mariadb está activo y en funcionamiento, y está habilitado para iniciarse automáticamente al arrancar el sistema.

Comprobación del servicio de base de datos MariaDB

3. A continuación, tienes que asegurar la implantación de mariadb estableciendo la contraseña de root para mariadb y eliminando alguna configuración por defecto. Para ello, puedes utilizar la herramienta de línea de comandos «mysql_secure_installation», que se incluye en la instalación por defecto de mariadb.

Ejecuta el comando «mysql_secure_installation» que aparece a continuación.

mysql_secure_installation

Al principio, se te pedirá que introduzcas la contraseña de root de mariadb. Pulsa ‘Enter‘ para continuar.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Escribe‘Y’ para activar la autenticación‘unix_socket‘ para el usuario‘root‘.

Switch to unix_socket authentication [Y/n] Y
Enabled successfully!
Reloading privilege tables..
 ... Success!

Escribe tu contraseña fuerte de root de mariadb y repítelo, luego presiona «Enter» para continuar.

Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!

Ahora escribe«Y» y pulsa«Enter» para eliminar el usuario anónimo por defecto del servidor mariadb.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Después, desactiva el inicio de sesión remoto para el usuario«root» por defecto. Escribe«Y» y pulsa«Enter» para continuar.

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

Escribe«Y» de nuevo para eliminar la base de datos por defecto «test» y pulsa«Enter».

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Y por último, escribe «Y« de nuevo para recargar todos los privilegios de las tablas para aplicar una nueva configuración.

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Ahora el proceso se ha completado y verás la siguiente salida.

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Crear la base de datos y el usuario para Nextcloud

1. Entra en el shell de mariadb utilizando el comando mysql que aparece a continuación.

mysql -u root -p

2. Ahora ejecuta la siguiente consulta mysql para crear una nueva base de datos«nextcloud_db«.

CREATE DATABASE nextcloud_db;

3. Ejecuta la siguiente consulta para crear un nuevo usuario de base de datos «nextclouduser«. Cambia la«strongpassword» por tu contraseña fuerte.

CREATE USER [email protected] IDENTIFIED BY 'StrongPassword';

4. Permite al usuario «nextclouduser» acceder y escribir en la «nextcloud_db» mediante la siguiente consulta.

GRANT ALL PRIVILEGES ON nextcloud_db.* TO [email protected];

5. Ahora recarga todos los privilegios de las tablas para aplicar la nueva configuración de la base de datos.

FLUSH PRIVILEGES;

6. A continuación, escribe«quit» y pulsa«Enter» para salir del shell de mariadb.

Crea una nueva base de datos y un nuevo usuario para Nextcloud

Descargar el código fuente de Nextcloud

1. Cambia el directorio de trabajo a«/var/www» y descarga la última versión del código fuente de Nextcloud utilizando el comando wget como se indica a continuación.

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

Descargar el código fuente de Nextcloud

2. Ahora instala el paquete unzip utilizando el siguiente comando.

apt install unzip

3. A continuación, extrae el código fuente de Nextcloud«nextcloud.zip» y obtendrás un nuevo directorio «nextcloud», luego cambia el propietario del directorio«nextcloud» al usuario«www-data«.

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

Ahora estás listo para generar el SSL Letsencrypt y configurar el host virtual apache para Nextcloud.

Generar SSL Letsencrypt

En esta etapa, instalarás la herramienta certbot y generarás los certificados SSL para la instalación de Nextcloud. Generarás los Letsencrypt SSL con el plugin de webroot.

1. Ejecuta el siguiente comando para instalar la herramienta certbot para generar Letsencrypt SSL.

apt install certbot

Escribe‘y‘ y pulsa‘Enter’ para continuar la instalación.

Instalar Certbot

2. Una vez completada la instalación, crea un nuevo directorio para la autorización de letsencrypt utilizando los siguientes comandos.

mkdir -p /var/lib/letsencrypt/.well-known
chgrp www-data /var/lib/letsencrypt
chmod g+s /var/lib/letsencrypt

3. A continuación, cambia el directorio de trabajo a«/etc/apache2/conf-available/» y crea una nueva configuración«well-known.conf» utilizando nano.

cd /etc/apache2/conf-available/
nano well-known.conf

Copia y pega la siguiente configuración.

Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"
<Directory "/var/lib/letsencrypt/">
    AllowOverride None
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

Pulsa«Ctrl+x» y escribe«y» y pulsa‘Enter’ para guardar la configuración y salir.

Ahora activa la nueva configuración creando un enlace simbólico del archivo «well-known.conf» al directorio «conf-enabled » utilizando el comando«ln» que aparece a continuación.

ln -s /etc/apache2/conf-available/well-known.conf /etc/apache2/conf-enabled/

4. Ahora ejecuta los siguientes comandos para verificar la configuración de apache y reinicia el servicio de apache.

apachectl configtest
systemctl restart apache2

Si no tienes ningún error, estás listo para generar el SSL Letsencrypt con el plugin de webroot.

Configurar la verificación SSL para Letsencrypt

5. Antes de generar el SSL Letsencrypt, asegúrate de que tu nombre de dominio está resuelto con la dirección IP del servidor. Después, puedes generar el SSL Letsencrypt con el plugin de webroot ejecutando el comando certbot que aparece a continuación. Además, cambia la dirección de correo electrónico y el nombre de dominio por los tuyos.

sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d files.domain-name.io

Cuando el proceso se haya completado, tus certificados SSL estarán disponibles en el directorio«/etc/letsencrypt/live/files.domain-name.io/«.

Configurar el host virtual Apache para Nextcloud

En este paso, añadirás una nueva configuración de host virtual apache/httpd para Nextcloud.

1. Cambia el directorio de trabajo a«/etc/apache2/sites-available/» y crea una nueva configuración«nextcloud.conf» utilizando nano.

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

2. Cambia el nombre de dominio detallado y el directorio de la ruta SSL por los tuyos y pega la configuración en el archivo «nextcloud.conf».

<VirtualHost *:80>
    ServerName files.domain-name.io
    ServerAlias www.files.domain-name.io

    # auto redirect HTTP to HTTPS
    Redirect permanent / https://files.domain-name.io/
</VirtualHost>

<VirtualHost *:443>
    ServerName files.domain-name.io
    ServerAlias www.files.domain-name.io
 
    DocumentRoot /var/www/nextcloud/

    Protocols h2 http/1.1

    # auto redirect www to non-www
    <If "%{HTTP_HOST} == 'www.files.domain-name.io'">
        Redirect permanent / https://files.domain-name.io/
    </If>

    # log files
    ErrorLog /var/log/apache2/files.domain-name.io-error.log
    CustomLog /var/log/apache2/files.domain-name.io-access.log combined

    SSLEngine On
    SSLCertificateFile /etc/letsencrypt/live/files.domain-name.io/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/files.domain-name.io/privkey.pem

    # HSTS
    <IfModule mod_headers.c>
        Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
    </IfModule>

    <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>

Pulsa «Ctrl+x» y escribe «Y», luego pulsa‘Enter’ para guardar la configuración y salir.

2. Ahora activa la configuración del host virtual «nextcloud.conf» ejecutando el siguiente comando.

a2ensite nextcloud.conf

Configurar un host virtual para Nextcloud

3. Ahora verifica la nueva configuración de apache y asegúrate de que no tienes ningún error, luego reinicia el servicio de apache.

apachectl configtest
systemctl restart apache2

Verifica la configuración de Apache y reinicia el servicio

Instalación de Nextcloud

Si toda la configuración del servidor está completa, puedes acceder a tu instalación de Nextcloud con el navegador web.

1. Abre tu navegador web y escribe la dirección URL de tu instalación de Nextcloud.

https://files.domain-name.io

Crea tu primer usuario y el de administrador para Nextcloud, y el directorio de datos podrá ser escrito por el usuario‘www-data‘.

Crear cuenta de administrador Nextcloud

2. Desplázate por la página hasta el final, escribe los detalles del nombre de la base de datos, el usuario y la contraseña. 3. En la opción«Instalar aplicaciones recomendadas«, desmarca la opción para que la instalación sea más rápida. A continuación, haz clic en el botón«Finalizar la instalación» para instalar Nextcloud.

Configurar la base de datos y la instalación fisnish nextcloud

3. Si la instalación se realiza con éxito, verás el panel de control de Nextcloud como se indica a continuación.

Nextcloud userfiles dashbaird

4. En la sección«Administración«, haz clic en«Visión general«.

Visión general de la administración de Nextcloud

  • En la sección «Advertencias de seguridad y configuración», verás algunas recomendaciones que debes hacer, dependiendo de tu entorno de instalación.
  • En la sección «Versiones», verás la rama actual de tu instalación de Nextcloud.

5. A continuación, haz clic en el menú«Sistema» en la parte inferior de la sección«Administración«.

Estado del sistema Nextcloud

Verás los detalles de tu entorno, la carga del sistema, el estado del espacio en disco, el estado de la memoria, el estado de la red, etc.

6. Como hemos dicho antes, nextcloud se ha convertido en algo más que una simple sincronización de archivos. Con el apoyo de aplicaciones/plugins adicionales, se ha convertido en un traje de colaboración.

En el icono del perfil, arriba a la derecha, haz clic en el menú«Aplicaciones«, y verás la tienda de aplicaciones de nextcloud como se indica a continuación.

Instalación de aplicaciones Nextcloud

Elige las aplicaciones que quieras instalar y haz clic en el botón «Descargar y activar» para instalar nuevas aplicaciones.

7. A continuación se muestra la vista por defecto del panel de usuario de Nextcloud. Puedes ampliar la funcionalidad de tu panel de control instalando plugins adicionales.

Tablero de inicio de Nextcloud

Ajuste del rendimiento de Nextcloud

Después de instalar Nextcloud, puedes hacer algunos pasos más para aumentar el rendimiento de Nextcloud habilitando la memoria caché local y configurando un cronjob para el propio Nextcloud.

1. En la sección superior de instalación de PHP, ya has configurado el PHP para el almacenamiento en caché. Para habilitar la caché en Nextcloud, edita la configuración de Nextcloud «config.php».

Cambia el directorio de trabajo a«/var/www/nextcloud/config» y edita la configuración «config.php» utilizando el editor nano.

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

Añade la siguiente configuración dentro del paréntesis‘array ( .. );‘ como se indica a continuación

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

Ahora pulsa el botón«Ctrl+x» y escribe«y«, luego pulsa‘Enter’ para guardar la configuración y salir.

2. Un sistema Nextcloud necesita ejecutar algunas tareas en segundo plano de forma regular y sin ninguna interacción del usuario/administrador. Para ello, puedes utilizar el cronjob para programar las tareas de Nextcloud.

En el sistema Debian Linux, la instalación por defecto de apache se ejecuta con el usuario«www-data«. Crea un nuevo cronjob para el usuario«www-data» utilizando el siguiente comando.

crontab -u www-data -e

Si tienes varios editores en tu sistema, elige el editor que te resulte más cómodo utilizar. Para esta guía, utilizaremos el editor nano.

Configurar el cron

Añade la siguiente configuración.

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

Guarda la configuración y sal.

Configuración del cronjob que debes conocer:

  • Esta configuración de cronjob permite al usuario«www-data» ejecutar el script PHP«/var/www/nextcloud/cron.php» cada 5 minutos.

Para verificar la configuración del cronjob, puedes ejecutar el siguiente comando.

crontab -u www-data -l

Si la configuración es un éxito, obtendrás la configuración en la parte superior como resultado. En caso contrario, obtendrás un resultado en blanco.

Verificar el cron para Nextcloud

Conclusión

¡Enhorabuena! Has instalado con éxito Nextcloud en Debian 11 Bullseye. El servidor Nextcloud se está ejecutando bajo la pila LAMP con SSL activado. Además, tu instalación de Nextcloud se está ejecutando con la memoria caché habilitada con las extensiones PHP APC y opcache.

También te podría gustar...