Saludos a todos y bienvenidos a una nueva entrada, que servirá como actualización de la primera entrada publicada en este blog.
Ya han pasado unos años, y si bien la base es prácticamente igual, si que se requiere algún módulo adicional, diferentes versiones de PHP, etc.
¡Por ello, y para que os resulte más sencillo, os dejo la versión actualizada!
1. Preparación máquina Ubuntu 22.04
En primer lugar, instalaremos Apache y MySQL
sudo apt update sudo apt install apache2 sudo apt install mysql-server
Y securizaremos la instancia:
sudo mysql_secure_installation
Nos preguntará si deseamos establecer un componente de contraseñas seguras y establecer una contraseña para el usuario root, así como darnos opciones relativas al login remoto, eliminación de la bbdd «test» que nos crea automáticamente, etc.
Una vez finalizado, abriremos MySQL y comenzaremos con la creación y conexionado de la base de datos:
sudo mysql
create database nextcloud; create user 'nextcloud'@'localhost' identified by 'mipassword'; grant all privileges on nextcloud.* to 'nextcloud'@'localhost'; flush privileges; quit
Aquí como véis, estamos creando el user llamado «nextcloud» con su contraseña correspondiente, así como la Base de Datos denominada «nextcloud» también. También estamos asignando permisos sobre dicha Base de Datos al usuario recien creado.
Para terminar la preparación de la máquina, instalaremos PHP y sus componentes necesarios. En este caso, en su versión 8.3:
sudo apt-get install ca-certificates apt-transport-https software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt-get update sudo apt install php8.3
Ahora comprobaremos que se ha instalado correctamente:
php8.3 --version
Si todo está correcto, deberíamos obtener un output como el siguiente:
PHP 8.3.1 (cli) (built: Dec 21 2023 20:12:13) (NTS) Copyright (c) The PHP Group Zend Engine v4.3.1, Copyright (c) Zend Technologies with Zend OPcache v8.3.1, Copyright (c), by Zend Technologies
Ahora que PHP está instalado, procederemos con los componentes requeridos:
sudo apt install php8.3-gd php8.3-mysql php8.3-curl php8.3-mbstring sudo apt install php8.3-intl php8.3-gmp php8.3-bcmath php8.3-xml sudo apt install php8.3-zip php8.3-bz2 php-imagick php-apcu
Ahora si, tenemos nuestra máquina preparada para la instalación de Nextcloud.
1. Instalación de Nextcloud
Ahora es un poquito más difícil encontrar el enlace necesario de descarga, debido a la popularización de esta herramienta directamente lanzada desde contenedores. Nos dirigimos a https://nextcloud.com , y vamos a Nextcloud Server

Una vez dentro, hacemos scroll-down hasta llegar al apartado «Descargar Servidor», donde expandiremos «Proyectos Comunitarios», para poder obtener nuestro enlace de descarga haciendo click derecho donde aparece indicado, y «copiando» en enlace.

Con el enlace copiado, procedemos a la descarga del .zip y su extracción:
wget https://download.nextcloud.com/server/releases/latest.zip sudo apt install unzip sudo unzip latest.zip -d /var/www cd /var/www sudo chown -R www-data:www-data nextcloud/
y configuraremos Apache para poder acceder a nuestra instalación:
sudo a2enmod headers env dir mime cd /etc/apache2/sites-available/ sudo vi 000-default.conf
Editaremos el archivo 000-default.conf (ya sea con vi, nano…), y lo dejaremos de la siguiente manera:
<VirtualHost *:80> #ServerAdmin webmaster@localhost DocumentRoot /var/www/nextcloud <Directory /var/www/nextcloud/> Require all granted AllowOverride All Options FollowSymLinks Multiviews <Ifmodule mod_dav.c> Dav off </IfModule> </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Si quisiésemos acceder desde el exterior a nuestra instancia de Nextcloud, añadiríamos debajo de la línea «Document Root» los siguientes datos:
ServerName cloud.tudominio.com
Por último, reiniciamos Apache para aplicar los cambios realizados en el archivo .conf
sudo service apache2 restart
En este punto, ya podríamos acceder a nuestra instancia de Nextcloud mediante la IP de nuestro navegador, donde introduciremos los datos relativos a la base de datos creada anteriormente y crearemos nuestro usuario administrador.
3. Optimización de la instalación
Si nos dirigimos a «Configuraciones de Administración», veremos unos errores que corregiremos a continuación:
3.1 – Corrección error límite memoria PHP
Para corregir este error, accederemos a nuestra máquina y modificaremos el archivo php.ini en la línea relativa a «memory-limit» a 512M
sudo vi /etc/php/8.3/apache2/php.ini sudo service apache2 restart
3.2 – Error región de teléfonos asociada
Para solventar esta incidencia, editaremos el archivo config.php de nuestro directorio de Nextloud:
sudo vi /var/www/nextcloud/config/config.php
Y añadiremos estas dos líneas al final del mismo:
'default_phone_region' => 'ES', 'memcache.local' => '\OC\Memcache\APCu',
3.3 – Problema de resolución «caldav» y «carddav»
Volveremos a editar el archivo .conf relativo a nuestro site:
vi /etc/apache2/sites-available/000-default.conf
Y lo dejaremos como se indica a continuación. Recuerda volver a añadir la línea ServerName si la añadiste durante la modificación inicial del .conf, ya que lo que te pongo a continuación no lleva dicha línea:
<VirtualHost *:80> DocumentRoot /var/www/nextcloud <Directory /var/www/nextcloud/> Require all granted AllowOverride All Options FollowSymLinks MultiViews <IfModule mod_dav.c> Dav off </IfModule> RewriteEngine On RewriteRule ^/\.well-known/carddav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L] RewriteRule ^/\.well-known/caldav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L] RewriteRule ^/\.well-known/host-meta https://%{SERVER_NAME}/public.php?service=host-meta [QSA,L] RewriteRule ^/\.well-known/host-meta\.json https://%{SERVER_NAME}/public.php?service=host-meta-json [QSA,L] RewriteRule ^/\.well-known/webfinger https://%{SERVER_NAME}/public.php?service=webfinger [QSA,L] </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Tras esto, habilitaremos el módulo añadido y reiniciaremos Apache:
sudo a2enmod rewrite service apache2 restart
3.4 – Incidencia módulo PHP-IMAGICK
Este módulo fue instalado durante la preparación de la VM, pero no es reconocido por la instalación de la plataforma. Lo eliminamos e instalamos nuevamente:
sudo apt remove imagemagick-6-common sudo apt remove php-imagick sudo apt autoremove sudo apt install php-imagick imagemagick service apache2 restart
3.5 – Configuración SSL y navegación segura
Editaremos el archivo default-ssl.conf . Si disponemos de un dominio y un certificado SSL válido, editarlo de forma correspondiente para que apunte a su ubicación.
vi /etc/apache2/sites-available/default-ssl.conf
Y dejaremos el archivo como se muestra a continuación:
<IfModule mod_ssl.c> <VirtualHost *:443> ServerName nextcloud.tudominio.com SSLEngine On SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key DocumentRoot /var/www/nextcloud/ <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 RewriteEngine On RewriteRule ^/\.well-known/carddav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L] RewriteRule ^/\.well-known/caldav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L] RewriteRule ^/\.well-known/host-meta https://%{SERVER_NAME}/public.php?service=host-meta [QSA,L] RewriteRule ^/\.well-known/host-meta\.json https://%{SERVER_NAME}/public.php?service=host-meta-json [QSA,L] RewriteRule ^/\.well-known/webfinger https://%{SERVER_NAME}/public.php?service=webfinger [QSA,L] </Directory> <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains" </IfModule> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Una vez salvado, cargamos los módulos correspondientes y reiniciamos Apache:
sudo a2ensite default-ssl.conf sudo a2enmod ssl sudo a2enmod rewrite service apache2 restart
3.6 – Configuración CRON
Si nos dirigimos a «Ajustes Básicos» dentro de nuestra instancia de Nextcloud, veremos que aparece AJAX habilitado, y nos recomienda cambiarlo a CRON. Lo cambiamos, y configuraremos el cronjob:
sudo crontab -u www-data -e
Seleccionamos la opción 1 (/bin/nano), y añadimos esta línea al final del archivo:
*/5 * * * * php -f /var/www/nextcloud/cron.php
Con esto habremos finalizado la instalación y configuración de Nextcloud.
1 Comment