WordPress

Cómo instalar Nextcloud 35 en Ubuntu 24.04 LTS con Apache, MariaDB y Let’s Encrypt

Actualización octubre de 2026: este artículo nació como un borrador basado en Ubuntu 20.04 y contenía varios fragmentos copiados por error de una guía de WordPress. Antes de publicarlo lo hemos reconstruido por completo. La guía actual utiliza Ubuntu Server 24.04 LTS, Apache, MariaDB, PHP 8.3, Redis/APCu, HTTPS de Let’s Encrypt y la rama estable Nextcloud 35.

Nextcloud permite construir una nube privada para archivos, calendarios, contactos, fotografías, colaboración y muchas otras funciones mediante aplicaciones. La diferencia respecto a servicios como Google Drive, OneDrive o Dropbox es que podemos alojar el servidor en nuestra propia infraestructura y controlar directamente los datos, las copias de seguridad y la política de acceso.

Qué vamos a instalar

  • Ubuntu Server 24.04 LTS de 64 bits.
  • Apache 2.4 como servidor web.
  • MariaDB 10.11 o superior como base de datos.
  • PHP 8.3, incluido en Ubuntu 24.04.
  • Nextcloud 35 desde el archivo oficial de la rama estable.
  • APCu como caché local y Redis para caché distribuida y bloqueo transaccional de archivos.
  • Certificado TLS gratuito de Let’s Encrypt mediante Certbot.
  • Cron real para las tareas periódicas de Nextcloud.

Nextcloud publica una guía oficial específica para Ubuntu 24.04 y recomienda una pila clásica Linux + Apache + MariaDB + PHP para una instalación manual desde el archivo oficial.

Requisitos previos

  • Un VPS o servidor físico con Ubuntu Server 24.04 LTS actualizado.
  • Acceso SSH con un usuario que pueda utilizar sudo.
  • Un dominio o subdominio, por ejemplo cloud.ejemplo.com, con su registro DNS A —y AAAA si utilizamos IPv6— apuntando al servidor.
  • Puertos TCP 80 y 443 accesibles desde Internet para HTTP/HTTPS y la validación de Let’s Encrypt.
  • Memoria y almacenamiento adecuados al número de usuarios y al volumen de datos. Para un servidor pequeño conviene disponer como punto de partida de al menos 2 GB de RAM, aunque las necesidades reales dependen de las aplicaciones y concurrencia.
  • Una estrategia de copias de seguridad para la base de datos, el directorio de datos y la configuración.

En todos los ejemplos sustituye cloud.ejemplo.com, nombres de usuario y contraseñas por tus propios valores.

1. Actualizar Ubuntu 24.04

sudo apt update
sudo apt full-upgrade
sudo reboot

Después del reinicio podemos confirmar la versión:

lsb_release -a

2. Firewall básico

Si utilizamos UFW, abrimos SSH y los dos puertos web. No debemos activar el firewall sin asegurarnos primero de que SSH continuará permitido.

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status

3. Instalar Apache, MariaDB, PHP 8.3 y módulos necesarios

Ubuntu 24.04 incluye PHP 8.3 en sus repositorios, por lo que no necesitamos agregar un PPA de terceros. Instalaremos los paquetes requeridos y varios módulos recomendados para Nextcloud:

sudo apt install apache2 mariadb-server libapache2-mod-php php php-gd php-mysql php-curl php-mbstring php-intl php-gmp php-xml php-imagick php-zip php-bcmath php-apcu php-redis redis-server curl wget bzip2
sudo systemctl enable --now apache2 mariadb redis-server
sudo systemctl status apache2 --no-pager
sudo systemctl status mariadb --no-pager
sudo systemctl status redis-server --no-pager
php -v

Para Nextcloud 35 es importante no seguir tutoriales que fuerzan MySQL 8.0 o PHP 8.2. La rama 35 eliminó soporte para PHP 8.2 y elevó el mínimo de MySQL a 8.4 y de MariaDB a 10.11.

4. Crear la base de datos de Nextcloud

En Ubuntu podemos entrar en MariaDB como administrador mediante sudo:

sudo mariadb

Dentro del prompt de MariaDB creamos una base de datos y un usuario dedicado. Utiliza una contraseña aleatoria y diferente de cualquier otra contraseña del servidor:

CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'CAMBIA-ESTA-CONTRASENA';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;

No debemos utilizar el usuario root de MariaDB como cuenta de aplicación.

5. Descargar y verificar Nextcloud 35

Descargaremos el archivo oficial latest-35.tar.bz2 y su checksum SHA-256. Así obtenemos la última revisión de mantenimiento disponible dentro de la rama 35 sin depender de un número de parche escrito en este artículo.

cd /tmp
wget https://download.nextcloud.com/server/releases/latest-35.tar.bz2
wget https://download.nextcloud.com/server/releases/latest-35.tar.bz2.sha256
sha256sum -c latest-35.tar.bz2.sha256

El comando de verificación debe indicar que el archivo es correcto antes de continuar.

tar -xjf latest-35.tar.bz2
sudo mv nextcloud /var/www/nextcloud
sudo chown -R www-data:www-data /var/www/nextcloud

6. Crear el directorio de datos fuera del directorio web

Es buena práctica mantener los archivos de usuarios fuera del DocumentRoot de Apache. En este ejemplo utilizaremos /var/ncdata:

sudo mkdir -p /var/ncdata
sudo chown -R www-data:www-data /var/ncdata
sudo chmod 750 /var/ncdata

7. Configurar Apache para Nextcloud

Creamos el VirtualHost:

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

Contenido de ejemplo:

<VirtualHost *:80>
    ServerName cloud.ejemplo.com
    DocumentRoot /var/www/nextcloud

    <Directory /var/www/nextcloud/>
        Require all granted
        AllowOverride All
        Options FollowSymLinks MultiViews
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/nextcloud-error.log
    CustomLog ${APACHE_LOG_DIR}/nextcloud-access.log combined
</VirtualHost>

Activamos el sitio y los módulos requeridos/recomendados por Nextcloud:

sudo a2enmod rewrite headers env dir mime setenvif
sudo a2ensite nextcloud.conf
sudo a2dissite 000-default.conf
sudo apache2ctl configtest
sudo systemctl reload apache2

Si apache2ctl configtest no devuelve Syntax OK, debemos corregir la configuración antes de recargar Apache.

8. Ajustar PHP

El archivo principal utilizado por Apache en Ubuntu 24.04 normalmente es /etc/php/8.3/apache2/php.ini. Los límites deben adaptarse a nuestros usuarios y al tamaño de archivos esperado. Un punto de partida razonable para un servidor pequeño puede ser:

memory_limit = 512M
upload_max_filesize = 2G
post_max_size = 2G
max_execution_time = 3600
max_input_time = 3600
date.timezone = UTC

Después reiniciamos Apache:

sudo systemctl restart apache2

Si vamos a utilizar APCu también desde procesos CLI, como algunas tareas de cron, podemos habilitar apc.enable_cli=1 en la configuración correspondiente de PHP CLI.

9. Instalar Nextcloud desde la terminal

También podemos completar el instalador desde el navegador, pero para una guía de administración de servidor resulta más reproducible hacerlo con occ. Cambia las contraseñas del ejemplo:

sudo -u www-data php /var/www/nextcloud/occ maintenance:install   --database "mysql"   --database-name "nextcloud"   --database-user "nextcloud"   --database-pass "CONTRASENA-DE-LA-BD"   --admin-user "admin"   --admin-pass "CONTRASENA-ADMIN-MUY-ROBUSTA"   --data-dir "/var/ncdata"

Configuramos el nombre de dominio de confianza y la URL que utilizarán los comandos de Nextcloud:

sudo -u www-data php /var/www/nextcloud/occ config:system:set trusted_domains 0 --value=cloud.ejemplo.com
sudo -u www-data php /var/www/nextcloud/occ config:system:set overwrite.cli.url --value=https://cloud.ejemplo.com

10. Activar HTTPS con Let’s Encrypt

Antes de solicitar el certificado verifica que cloud.ejemplo.com resuelva al IP público del servidor y que el puerto 80 sea accesible.

sudo snap install --classic certbot
sudo ln -sf /snap/bin/certbot /usr/local/bin/certbot
sudo certbot --apache -d cloud.ejemplo.com

Certbot modificará Apache para servir HTTPS y puede configurar la redirección desde HTTP. Probamos la renovación:

sudo certbot renew --dry-run

Las instalaciones actuales de Certbot gestionan automáticamente las renovaciones; no es necesario añadir manualmente un cron diario para renovar el certificado.

11. Configurar APCu y Redis

Nextcloud recomienda APCu como caché local y Redis para caché distribuida y bloqueo transaccional en instalaciones de un solo servidor.

sudo -u www-data php /var/www/nextcloud/occ config:system:set memcache.local --value='\OC\Memcache\APCu'
sudo -u www-data php /var/www/nextcloud/occ config:system:set memcache.distributed --value='\OC\Memcache\Redis'
sudo -u www-data php /var/www/nextcloud/occ config:system:set memcache.locking --value='\OC\Memcache\Redis'
sudo -u www-data php /var/www/nextcloud/occ config:system:set redis host --value=127.0.0.1
sudo -u www-data php /var/www/nextcloud/occ config:system:set redis port --type=integer --value=6379

Podemos confirmar que Redis responde con:

redis-cli ping

La respuesta esperada es PONG.

12. Configurar las tareas en segundo plano con cron

Nextcloud puede ejecutar tareas periódicas mediante AJAX, Webcron o cron. Para un servidor propio, cron es la opción recomendada.

sudo -u www-data php /var/www/nextcloud/occ background:cron
echo "*/5 * * * * www-data php -f /var/www/nextcloud/cron.php" | sudo tee /etc/cron.d/nextcloud
sudo chmod 644 /etc/cron.d/nextcloud

Con esto Nextcloud ejecutará sus tareas internas aproximadamente cada cinco minutos, sin depender de que un usuario abra una página web.

13. Comprobaciones finales

sudo -u www-data php /var/www/nextcloud/occ status
sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices
sudo -u www-data php /var/www/nextcloud/occ maintenance:repair
sudo apache2ctl configtest
sudo systemctl status apache2 --no-pager
sudo systemctl status mariadb --no-pager
sudo systemctl status redis-server --no-pager

Después entra en Ajustes de administración → Información general. Nextcloud ejecuta allí comprobaciones de seguridad, configuración, base de datos y rendimiento. Conviene resolver las advertencias reales antes de considerar terminada una instalación de producción.

Copias de seguridad: qué debemos conservar

Una copia de seguridad útil de Nextcloud debe proteger al menos tres piezas: el directorio de configuración, la base de datos y el directorio de datos. Guardar únicamente /var/www/nextcloud no es suficiente.

  • /var/www/nextcloud/config/.
  • La base de datos MariaDB de Nextcloud.
  • /var/ncdata o el directorio de datos elegido.
  • Opcionalmente aplicaciones adicionales y temas personalizados.

Además de crear copias, debemos probar periódicamente que realmente pueden restaurarse.

Actualizaciones y mantenimiento

Nextcloud publica revisiones de mantenimiento con correcciones de seguridad y estabilidad. Antes de actualizar debemos revisar las notas de la versión, comprobar compatibilidad de aplicaciones y disponer de una copia de seguridad reciente.

Para instalaciones existentes no debemos reemplazar archivos sin seguir el procedimiento de actualización. Nextcloud dispone de su actualizador y del comando occ upgrade para completar migraciones cuando corresponde.

Problemas frecuentes

  • Certbot no valida el dominio: revisar DNS A/AAAA, firewall y que el puerto 80 sea accesible.
  • Error de dominio no confiable: revisar trusted_domains.
  • Archivos grandes fallan: revisar límites PHP y cualquier proxy inverso que exista delante de Apache.
  • Advertencia de caché: confirmar APCu, Redis y la extensión php-redis.
  • Tareas en segundo plano atrasadas: comprobar el archivo /etc/cron.d/nextcloud y el modo de background jobs.
  • Permisos: el usuario web www-data debe poder escribir donde Nextcloud lo requiere, sin convertir todo el servidor en escribible para cualquiera.

Fuentes oficiales

Con estos pasos tendremos una instalación actual de Nextcloud sobre Ubuntu 24.04 preparada para HTTPS, caché y tareas de mantenimiento. A partir de aquí podemos continuar con almacenamiento externo, SMTP, autenticación LDAP/Active Directory, Office/Collabora, Talk, copias automatizadas y endurecimiento adicional.

Eidy EV

Ingeniero en Ciencias Informáticas con más de 10 años de experiencia en informáticas y ha desempeñado funciones de Arquitecto de software, Analista, Desarrollador de software senior, administrador de redes y sistemas (Sysadmin) y Especialista de seguridad informática.

Entradas recientes

Guía de redes informáticas desde cero: roadmap para futuros sysadmins

Roadmap completo para aprender redes desde cero y prepararse como sysadmin: Ethernet, IPv4/IPv6, subnetting, VLAN,…

2 años hace

El sistema de reservas de United Airlines diseñado por Evelyn Berezin

Historia y arquitectura del sistema de reservas de United Airlines diseñado por Evelyn Berezin, diferenciándolo…

2 años hace

Evelyn Berezin: del sistema de reservas de United Airlines al Data Secretary

Biografía de Evelyn Berezin: diseñadora de sistemas, creadora del sistema de reservas de United Airlines…

2 años hace

Cómo instalar WordPress en Ubuntu 24.04 LTS con Apache, MySQL, PHP 8.3 y Let’s Encrypt

Guía paso a paso para instalar WordPress en Ubuntu Server 24.04 LTS con Apache, MySQL…

2 años hace

¿Qué es Delphi? Object Pascal, VCL, FireMonkey y por qué sigue vigente

Qué es Delphi en 2026, cómo funciona Object Pascal, VCL y FireMonkey, plataformas soportadas, Community…

3 años hace

Navegadores web: historia, funcionamiento, motores y principales opciones

Qué es un navegador web, cómo funciona, su historia, los motores Blink, Gecko y WebKit,…

3 años hace