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.
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.
cloud.ejemplo.com, con su registro DNS A —y AAAA si utilizamos IPv6— apuntando al servidor.En todos los ejemplos sustituye cloud.ejemplo.com, nombres de usuario y contraseñas por tus propios valores.
sudo apt update
sudo apt full-upgrade
sudo reboot Después del reinicio podemos confirmar la versión:
lsb_release -a 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 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.
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.
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 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 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.
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.
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 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.
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.
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.
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.
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/./var/ncdata o el directorio de datos elegido.Además de crear copias, debemos probar periódicamente que realmente pueden restaurarse.
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.
trusted_domains.php-redis./etc/cron.d/nextcloud y el modo de background jobs.www-data debe poder escribir donde Nextcloud lo requiere, sin convertir todo el servidor en escribible para cualquiera.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.
Roadmap completo para aprender redes desde cero y prepararse como sysadmin: Ethernet, IPv4/IPv6, subnetting, VLAN,…
Historia y arquitectura del sistema de reservas de United Airlines diseñado por Evelyn Berezin, diferenciándolo…
Biografía de Evelyn Berezin: diseñadora de sistemas, creadora del sistema de reservas de United Airlines…
Guía paso a paso para instalar WordPress en Ubuntu Server 24.04 LTS con Apache, MySQL…
Qué es Delphi en 2026, cómo funciona Object Pascal, VCL y FireMonkey, plataformas soportadas, Community…
Qué es un navegador web, cómo funciona, su historia, los motores Blink, Gecko y WebKit,…