--- title: "Cómo instalar Nextcloud en Ubuntu 24.04 con Apache y SSL" description: "Instala Nextcloud en Ubuntu 24.04 con Apache, PHP 8.3 y MariaDB, protégelo con un certificado de Let's Encrypt y configura caché y tareas en segundo plano." category: "Linux" language: es source: https://cubepath.com/es/docs/linux/instala-tu-propia-nube-en-tu-vps-con-nextcloud updated: 2026-09-25 --- # Cómo instalar Nextcloud en Ubuntu 24.04 con Apache y SSL Nextcloud es una plataforma de código abierto para almacenar, sincronizar y compartir archivos, con funciones similares a Google Drive o Dropbox pero alojada en tu propio servidor. En este tutorial instalarás Nextcloud en Ubuntu 24.04 con Apache, PHP 8.3 y MariaDB, lo publicarás con HTTPS mediante Let's Encrypt y dejarás configuradas la caché y las tareas en segundo plano para que funcione sin avisos en su panel de administración. ## Requisitos previos - Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath, con al menos 2 GB de RAM y espacio en disco suficiente para los archivos que vayas a guardar. - Un usuario no root con privilegios `sudo`. - Un dominio o subdominio (en esta guía, `cloud.your_domain`) con un registro A apuntando a la IP del servidor. - Los puertos 22, 80 y 443 abiertos. ## Paso 1: Instalar Apache, PHP y MariaDB Nextcloud necesita un servidor web, PHP con varias extensiones y una base de datos. Ubuntu 24.04 incluye PHP 8.3 y MariaDB 10.11, ambos compatibles con las versiones actuales de Nextcloud. Actualiza el índice de paquetes: ```bash sudo apt update ``` Instala Apache, MariaDB, PHP con las extensiones que requiere Nextcloud y la utilidad `unzip`: ```bash sudo apt install -y apache2 mariadb-server libapache2-mod-php php-gd php-mysql php-curl php-mbstring php-intl php-gmp php-bcmath php-xml php-zip php-imagick php-apcu unzip ``` Comprueba la versión de PHP instalada: ```bash php -v ``` ```output PHP 8.3.6 (cli) (built: ...) (NTS) ... ``` ## Paso 2: Configurar el firewall Permite SSH y el tráfico web con UFW. El perfil `Apache Full` abre los puertos 80 y 443: ```bash sudo ufw allow OpenSSH sudo ufw allow "Apache Full" sudo ufw enable ``` Verifica las reglas: ```bash sudo ufw status ``` ```output Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache Full ALLOW Anywhere ... ``` ## Paso 3: Crear la base de datos Asegura primero la instalación de MariaDB. El asistente te permite eliminar usuarios anónimos, la base de datos de prueba y el acceso remoto de `root`; responde `Y` a esas preguntas: ```bash sudo mariadb-secure-installation ``` Entra en la consola de MariaDB: ```bash sudo mariadb ``` Crea la base de datos y un usuario dedicado para Nextcloud. Sustituye `your_db_password` por una contraseña robusta: ```sql CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'your_db_password'; GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost'; FLUSH PRIVILEGES; EXIT; ``` Comprueba que el usuario puede conectarse a su base de datos (te pedirá la contraseña): ```bash mariadb -u nextcloud -p -e "SHOW DATABASES;" ``` ```output +--------------------+ | Database | +--------------------+ | information_schema | | nextcloud | +--------------------+ ``` ## Paso 4: Descargar Nextcloud Descarga la última versión estable y su suma de comprobación desde el servidor oficial: ```bash cd /tmp curl -fLO https://download.nextcloud.com/server/releases/latest.zip curl -fLO https://download.nextcloud.com/server/releases/latest.zip.sha256 ``` Verifica que el archivo no está dañado: ```bash sha256sum -c latest.zip.sha256 ``` ```output latest.zip: OK ``` Descomprímelo en `/var/www`, crea un directorio de datos fuera de la raíz web (así los archivos de los usuarios nunca se sirven directamente) y asigna ambos al usuario de Apache: ```bash sudo unzip -q latest.zip -d /var/www/ sudo mkdir -p /var/www/nextcloud-data sudo chown -R www-data:www-data /var/www/nextcloud /var/www/nextcloud-data ``` ## Paso 5: Ajustar PHP Los valores por defecto de PHP se quedan cortos para Nextcloud. Edita la configuración de PHP que usa Apache: ```bash sudo nano /etc/php/8.3/apache2/php.ini ``` Busca estas directivas y cambia sus valores (con `Ctrl+W` puedes buscarlas en nano): ```ini memory_limit = 512M upload_max_filesize = 2G post_max_size = 2G max_execution_time = 360 date.timezone = Europe/Madrid ``` Ajusta `date.timezone` a tu zona horaria y el tamaño de subida al máximo que quieras permitir por archivo. Las tareas en segundo plano de Nextcloud se ejecutan con PHP desde la línea de comandos, y ahí APCu está desactivado por defecto. Actívalo para que la caché funcione también en esas tareas: ```bash echo "apc.enable_cli=1" | sudo tee -a /etc/php/8.3/mods-available/apcu.ini ``` ## Paso 6: Configurar Apache Crea un virtual host para Nextcloud: ```bash sudo nano /etc/apache2/sites-available/nextcloud.conf ``` Añade el siguiente contenido, sustituyendo `cloud.your_domain` por tu dominio: ```apache ServerName cloud.your_domain DocumentRoot /var/www/nextcloud Require all granted AllowOverride All Options FollowSymLinks MultiViews Dav off ErrorLog ${APACHE_LOG_DIR}/nextcloud_error.log CustomLog ${APACHE_LOG_DIR}/nextcloud_access.log combined ``` `AllowOverride All` es necesario porque Nextcloud incluye un archivo `.htaccess` con sus reglas de reescritura y seguridad. Activa el sitio, desactiva el sitio por defecto y habilita los módulos que usa Nextcloud: ```bash sudo a2ensite nextcloud.conf sudo a2dissite 000-default.conf sudo a2enmod rewrite headers env dir mime ``` Comprueba la sintaxis y recarga Apache: ```bash sudo apache2ctl configtest sudo systemctl restart apache2 ``` ```output Syntax OK ``` ## Paso 7: Instalar Nextcloud con occ Nextcloud incluye la herramienta de línea de comandos `occ`, que permite completar la instalación sin pasar por el asistente web. Ejecútala como `www-data`, sustituyendo las contraseñas por las tuyas (`your_db_password` es la del paso 3 y `your_admin_password` la que usarás para entrar en Nextcloud): ```bash cd /var/www/nextcloud sudo -u www-data php occ maintenance:install \ --database "mysql" \ --database-name "nextcloud" \ --database-user "nextcloud" \ --database-pass "your_db_password" \ --admin-user "admin" \ --admin-pass "your_admin_password" \ --data-dir "/var/www/nextcloud-data" ``` ```output Nextcloud was successfully installed ``` Nextcloud solo responde a los dominios que figuren en su lista de dominios de confianza. Añade el tuyo y define la URL base que se usa en los enlaces generados desde la línea de comandos: ```bash sudo -u www-data php occ config:system:set trusted_domains 1 --value=cloud.your_domain sudo -u www-data php occ config:system:set overwrite.cli.url --value=https://cloud.your_domain ``` Comprueba el estado de la instalación: ```bash sudo -u www-data php occ status ``` ```output - installed: true - version: 32.0.0.13 - versionstring: 32.0.0 - maintenance: false - needsDbUpgrade: false ... ``` ## Paso 8: Activar HTTPS con Let's Encrypt Instala Certbot con su plugin para Apache: ```bash sudo apt install -y certbot python3-certbot-apache ``` Solicita el certificado. Certbot detecta el virtual host por su `ServerName`, emite el certificado y crea la configuración HTTPS con redirección desde HTTP: ```bash sudo certbot --apache -d cloud.your_domain ``` ```output Successfully deployed certificate for cloud.your_domain to /etc/apache2/sites-available/nextcloud-le-ssl.conf Congratulations! You have successfully enabled HTTPS on https://cloud.your_domain ``` La renovación automática queda programada con un temporizador de systemd. Puedes probarla con: ```bash sudo certbot renew --dry-run ``` ## Paso 9: Configurar caché y tareas en segundo plano Activa APCu como caché local, lo que acelera la interfaz notablemente: ```bash sudo -u www-data php occ config:system:set memcache.local --value='\OC\Memcache\APCu' ``` Nextcloud ejecuta tareas periódicas (limpieza, notificaciones, escaneos). El método recomendado es cron. Cámbialo: ```bash sudo -u www-data php occ background:cron ``` Abre el crontab del usuario `www-data`: ```bash sudo crontab -u www-data -e ``` Añade esta línea al final para ejecutar las tareas cada 5 minutos: ```text */5 * * * * php -f /var/www/nextcloud/cron.php ``` Por último, define una ventana de mantenimiento para que las tareas pesadas se ejecuten de madrugada (el valor es la hora de inicio en UTC): ```bash sudo -u www-data php occ config:system:set maintenance_window_start --type=integer --value=1 ``` ## Paso 10: Acceder a Nextcloud Abre en el navegador: ```text https://cloud.your_domain ``` Inicia sesión con el usuario `admin` y la contraseña que definiste en el paso 7. Después ve a **Configuración de administración > Vista general**: Nextcloud ejecuta allí una comprobación de seguridad y configuración. Es habitual que aparezcan avisos menores (por ejemplo, sobre el servidor de correo o la región de los números de teléfono), que puedes resolver siguiendo los enlaces de cada aviso. Para confirmar que las tareas en segundo plano funcionan, espera unos minutos y comprueba en **Configuración de administración > Configuración básica** que el apartado **Trabajos en segundo plano** muestra **Cron** y una ejecución reciente. ## Solución de problemas - **"Acceso a través de un dominio no confiable"**: el dominio con el que accedes no está en `trusted_domains`. Revisa la lista con `sudo -u www-data php occ config:system:get trusted_domains` y añádelo como en el paso 7. - **Error 500 o página en blanco**: revisa `/var/log/apache2/nextcloud_error.log` y el registro de Nextcloud en `/var/www/nextcloud-data/nextcloud.log`. - **Las subidas grandes fallan**: comprueba que `upload_max_filesize` y `post_max_size` tienen el valor deseado en `/etc/php/8.3/apache2/php.ini` y reinicia Apache con `sudo systemctl restart apache2`. - **Certbot no puede validar el dominio**: confirma que el registro A apunta al servidor (`dig +short cloud.your_domain`) y que el puerto 80 está abierto. ## Conclusión Tienes Nextcloud funcionando en Ubuntu 24.04 con Apache, MariaDB y HTTPS, con caché APCu y tareas en segundo plano por cron. Como siguientes pasos, instala los clientes de escritorio y móvil de Nextcloud para sincronizar tus archivos, añade Redis como caché de bloqueo de archivos si vas a tener varios usuarios, y programa copias de seguridad de `/var/www/nextcloud`, `/var/www/nextcloud-data` y de la base de datos.