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 DNSAapuntando 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:
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:
systemctl is-active apache2
php -v
active
PHP 8.3.x (cli) (built: ...)
Abre los puertos en UFW:
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:
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:
memory_limit = 256M
upload_max_filesize = 32M
post_max_size = 32M
max_execution_time = 120
output_buffering = Off
Reinicia Apache para aplicar los cambios:
sudo systemctl restart apache2
Puedes comprobar un valor concreto desde la línea de comandos indicando ese mismo php.ini:
php -c /etc/php/8.3/apache2/php.ini -r 'echo ini_get("upload_max_filesize"), PHP_EOL;'
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:
sudo mariadb-secure-installation
Entra en la consola:
sudo mariadb
Crea la base de datos y un usuario dedicado. Sustituye your_db_password por una contraseña segura:
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:
mariadb -u joomla -p -e "SHOW DATABASES;"
+--------------------+
| Database |
+--------------------+
| information_schema |
| joomla |
+--------------------+
Paso 4: Descargar Joomla
Consulta la última versión estable en la página de versiones de Joomla en GitHub y guárdala en una variable. Sustituye x.y.z por el número de versión, por ejemplo 5.3.3:
JOOMLA_VERSION=x.y.z
Descarga el paquete completo (Full_Package) en un directorio temporal:
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:
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:
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:
ls /var/www/joomla
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:
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:
<VirtualHost *:80>
ServerName your_domain
DocumentRoot /var/www/joomla
<Directory /var/www/joomla>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/joomla_error.log
CustomLog ${APACHE_LOG_DIR}/joomla_access.log combined
</VirtualHost>
Activa rewrite, habilita el sitio, desactiva el sitio por defecto y valida la configuración:
sudo a2enmod rewrite
sudo a2ensite joomla.conf
sudo a2dissite 000-default.conf
sudo apache2ctl configtest
Syntax OK
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:
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:
sudo certbot renew --dry-run
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:
- Configuración del sitio: elige el idioma de instalación y escribe el nombre del sitio.
- Datos de acceso: nombre real, nombre de usuario, contraseña y correo del superusuario. Evita
admincomo nombre de usuario. - 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
- Tipo de base de datos:
Pulsa Instalar Joomla. Al terminar, Joomla elimina el directorio installation (en algunas versiones lo hace el botón final del instalador). Compruébalo:
ls /var/www/joomla/installation
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:
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:
curl -sI https://your_domain/component/users/reset | head -n 1
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:
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ódulorewriteoAllowOverride Allen 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_filesizeypost_max_sizedel 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.
