--- title: "Cómo instalar Joomla en Ubuntu 24.04 con Apache y MariaDB" description: "Instala Joomla en Ubuntu 24.04 con Apache, PHP 8.3 y MariaDB, completa el instalador web, activa las URL amigables y sirve el sitio con HTTPS de Let's Encrypt." category: "Hosting de Aplicaciones Web" language: es source: https://cubepath.com/es/docs/hosting-de-aplicaciones-web/instalacion-de-joomla-en-servidor-linux updated: 2026-09-25 --- # Cómo instalar Joomla en Ubuntu 24.04 con Apache y MariaDB Joomla es un sistema de gestión de contenidos de código abierto escrito en PHP, con un panel de administración completo y un amplio catálogo de extensiones. En este tutorial instalarás la última versión estable de Joomla en Ubuntu 24.04 sobre Apache, PHP 8.3 y MariaDB, completarás el instalador web, activarás las URL amigables y servirás el sitio por HTTPS con un certificado de Let's Encrypt. ## Requisitos previos Para seguir esta guía necesitas: - Un servidor con Ubuntu 24.04 LTS y al menos 1 GB de RAM, por ejemplo un VPS de CubePath. - Un usuario no root con privilegios `sudo`. - Un dominio, representado aquí como `your_domain`, con un registro DNS `A` apuntando a la IP del servidor. - Los puertos 22, 80 y 443 abiertos. Joomla 5 funciona con PHP 8.1 o superior y Joomla 6 requiere PHP 8.3; Ubuntu 24.04 incluye PHP 8.3, así que sirve para ambas versiones sin repositorios externos. ## Paso 1: Instalar Apache, PHP y MariaDB Instala Apache, PHP 8.3 con las extensiones que usa Joomla, MariaDB y `unzip`: ```bash sudo apt update sudo apt install apache2 mariadb-server \ php8.3 libapache2-mod-php8.3 php8.3-mysql php8.3-xml php8.3-zip \ php8.3-gd php8.3-intl php8.3-mbstring php8.3-curl php8.3-opcache \ unzip ``` Comprueba que Apache está en marcha y que PHP tiene la versión esperada: ```bash systemctl is-active apache2 php -v ``` ```output active PHP 8.3.x (cli) (built: ...) ``` Abre los puertos en UFW: ```bash sudo ufw allow OpenSSH sudo ufw allow 'Apache Full' sudo ufw enable ``` ## Paso 2: Ajustar PHP Los valores por defecto de PHP limitan la subida de archivos a 2 MB, poco para instalar extensiones o subir imágenes. Edita el `php.ini` que usa Apache: ```bash sudo nano /etc/php/8.3/apache2/php.ini ``` Busca estas directivas (con `Ctrl+W` en nano) y cambia sus valores. Joomla recomienda además desactivar `output_buffering`: ```ini memory_limit = 256M upload_max_filesize = 32M post_max_size = 32M max_execution_time = 120 output_buffering = Off ``` Reinicia Apache para aplicar los cambios: ```bash sudo systemctl restart apache2 ``` Puedes comprobar un valor concreto desde la línea de comandos indicando ese mismo `php.ini`: ```bash php -c /etc/php/8.3/apache2/php.ini -r 'echo ini_get("upload_max_filesize"), PHP_EOL;' ``` ```output 32M ``` ## Paso 3: Crear la base de datos Ejecuta el asistente de seguridad de MariaDB para eliminar usuarios anónimos y la base de datos de pruebas. Puedes mantener la autenticación por socket de root y responder `Y` al resto de preguntas: ```bash sudo mariadb-secure-installation ``` Entra en la consola: ```bash sudo mariadb ``` Crea la base de datos y un usuario dedicado. Sustituye `your_db_password` por una contraseña segura: ```sql CREATE DATABASE joomla CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'joomla'@'localhost' IDENTIFIED BY 'your_db_password'; GRANT ALL PRIVILEGES ON joomla.* TO 'joomla'@'localhost'; FLUSH PRIVILEGES; EXIT; ``` Comprueba el acceso: ```bash mariadb -u joomla -p -e "SHOW DATABASES;" ``` ```output +--------------------+ | Database | +--------------------+ | information_schema | | joomla | +--------------------+ ``` ## Paso 4: Descargar Joomla Consulta la última versión estable en la [página de versiones de Joomla en GitHub](https://github.com/joomla/joomla-cms/releases) y guárdala en una variable. Sustituye `x.y.z` por el número de versión, por ejemplo `5.3.3`: ```bash JOOMLA_VERSION=x.y.z ``` Descarga el paquete completo (`Full_Package`) en un directorio temporal: ```bash cd /tmp curl -fLO "https://github.com/joomla/joomla-cms/releases/download/${JOOMLA_VERSION}/Joomla_${JOOMLA_VERSION}-Stable-Full_Package.zip" ``` Si `curl` devuelve un error 404, revisa que el número de versión es exacto y que en la página de la versión existe un archivo con ese nombre. Descomprímelo en el directorio del sitio: ```bash sudo mkdir -p /var/www/joomla sudo unzip -q "Joomla_${JOOMLA_VERSION}-Stable-Full_Package.zip" -d /var/www/joomla ``` Joomla instala y actualiza extensiones desde el panel, así que Apache necesita ser propietario de los archivos. Asigna la propiedad a `www-data` con permisos 755 para directorios y 644 para archivos: ```bash sudo chown -R www-data:www-data /var/www/joomla sudo find /var/www/joomla -type d -exec chmod 755 {} + sudo find /var/www/joomla -type f -exec chmod 644 {} + ``` Comprueba que están los archivos esperados: ```bash ls /var/www/joomla ``` ```output LICENSE.txt README.txt administrator api cache cli components htaccess.txt images includes index.php installation language ... ``` ## Paso 5: Configurar Apache Crea el host virtual del sitio: ```bash sudo nano /etc/apache2/sites-available/joomla.conf ``` `AllowOverride All` permite que funcione el `.htaccess` de Joomla, que activarás más adelante para las URL amigables: ```apache ServerName your_domain DocumentRoot /var/www/joomla Options FollowSymLinks AllowOverride All Require all granted ErrorLog ${APACHE_LOG_DIR}/joomla_error.log CustomLog ${APACHE_LOG_DIR}/joomla_access.log combined ``` Activa `rewrite`, habilita el sitio, desactiva el sitio por defecto y valida la configuración: ```bash sudo a2enmod rewrite sudo a2ensite joomla.conf sudo a2dissite 000-default.conf sudo apache2ctl configtest ``` ```output Syntax OK ``` ```bash sudo systemctl reload apache2 ``` ## Paso 6: Activar HTTPS con Let's Encrypt Obtén el certificado antes de abrir el instalador, así las credenciales de administrador viajan cifradas. Instala Certbot con el plugin de Apache: ```bash sudo apt install certbot python3-certbot-apache sudo certbot --apache -d your_domain ``` Certbot crea el host virtual en el puerto 443 y redirige HTTP a HTTPS. Comprueba la renovación automática: ```bash sudo certbot renew --dry-run ``` ```output Congratulations, all simulated renewals succeeded: /etc/letsencrypt/live/your_domain/fullchain.pem (success) ``` ## Paso 7: Completar el instalador web Visita `https://your_domain` en el navegador. Se abrirá el instalador de Joomla, que tiene tres pantallas: 1. **Configuración del sitio**: elige el idioma de instalación y escribe el nombre del sitio. 2. **Datos de acceso**: nombre real, nombre de usuario, contraseña y correo del superusuario. Evita `admin` como nombre de usuario. 3. **Configuración de la base de datos**: - Tipo de base de datos: `MySQLi` - Servidor: `localhost` - Usuario: `joomla` - Contraseña: `your_db_password` - Nombre de la base de datos: `joomla` - Prefijo de tablas: deja el aleatorio que propone Joomla - Cifrado de la conexión: `Predeterminado` Pulsa **Instalar Joomla**. Al terminar, Joomla elimina el directorio `installation` (en algunas versiones lo hace el botón final del instalador). Compruébalo: ```bash ls /var/www/joomla/installation ``` ```output ls: cannot access '/var/www/joomla/installation': No such file or directory ``` Si el directorio sigue existiendo, bórralo a mano con `sudo rm -rf /var/www/joomla/installation`: mientras exista, cualquiera podría reinstalar el sitio. Accede al panel en `https://your_domain/administrator` con el superusuario que acabas de crear. ## Paso 8: Activar las URL amigables y forzar HTTPS Por defecto las URL de Joomla incluyen `index.php`. Para quitarlo, activa el `.htaccess` que trae Joomla: ```bash sudo -u www-data cp /var/www/joomla/htaccess.txt /var/www/joomla/.htaccess ``` En el panel ve a **Sistema > Configuración global**, pestaña **Sitio**, y en **Ajustes SEO**: - Activa **Usar la reescritura de URL**. En la pestaña **Servidor**: - Cambia **Forzar HTTPS** a **Todo el sitio**. Pulsa **Guardar**. Comprueba que una URL interna responde sin `index.php`, por ejemplo la de restablecimiento de contraseña: ```bash curl -sI https://your_domain/component/users/reset | head -n 1 ``` ```output HTTP/2 200 ``` ## Paso 9: Tareas programadas y actualizaciones Joomla incluye un programador de tareas (**Sistema > Tareas programadas**) que, por defecto, se lanza con las visitas al sitio. Mantén Joomla y sus extensiones actualizados desde **Sistema > Actualizar > Joomla** y **Sistema > Actualizar > Extensiones**, y haz una copia de seguridad antes de cada actualización mayor: ```bash sudo mariadb-dump joomla > ~/joomla-$(date +%F).sql sudo tar czf ~/joomla-files-$(date +%F).tar.gz -C /var/www joomla ``` ## Solución de problemas - **Página en blanco o error 500**: revisa `/var/log/apache2/joomla_error.log`. Para ver el error en pantalla temporalmente, sube **Informe de errores** a **Máximo** en **Configuración global > Servidor** y devuélvelo a **Predeterminado** después. - **Las URL amigables devuelven 404**: falta el archivo `.htaccess`, el módulo `rewrite` o `AllowOverride All` en el host virtual. - **No se pueden instalar extensiones**: los archivos no pertenecen a `www-data`; repite los comandos de permisos del paso 4. En **Sistema > Información del sistema > Permisos de directorios** puedes ver qué directorios no son escribibles. - **Error al subir archivos grandes**: revisa `upload_max_filesize` y `post_max_size` del paso 2. ## Conclusión Tienes Joomla funcionando en Ubuntu 24.04 con Apache, PHP 8.3 y MariaDB, con HTTPS forzado y URL amigables. Como siguientes pasos, activa la autenticación en dos pasos para los superusuarios desde tu perfil, instala una plantilla o las extensiones que necesites desde **Sistema > Instalar > Extensiones** y programa las copias de seguridad de la base de datos y los archivos.