Instalar WordPress en tu propio VPS te da control total y muchos más recursos por euro que un hosting compartido. En esta guía monto un servidor completo con Ubuntu 24.04, nginx, PHP-FPM y MariaDB, con HTTPS gratuito y lo mínimo de seguridad que debería tener cualquier servidor expuesto a internet.
Necesitas un VPS con Ubuntu 24.04 (con 1 GB de RAM funciona; con 2 GB vas holgado), acceso SSH y un dominio con un registro A apuntando a la IP del VPS. En los ejemplos uso ejemplo.com: cámbialo por tu dominio. Si aún no tienes claro si te conviene un VPS, empieza por VPS o hosting compartido.
1. Actualiza el sistema y crea un usuario
Conéctate por SSH y actualiza los paquetes:
ssh root@IP_DE_TU_VPS
apt update && apt upgrade -yTrabajar siempre como root es mala idea. Crea un usuario con permisos de administrador y copia tu clave SSH:
adduser tuusuario
usermod -aG sudo tuusuario
rsync --archive --chown=tuusuario:tuusuario ~/.ssh /home/tuusuarioAbre una sesión nueva con ese usuario antes de cerrar la de root para comprobar que entras bien. A partir de aquí, todos los comandos van con sudo.
2. Activa el firewall
sudo ufw allow OpenSSH
sudo ufw enableHTTP y HTTPS los abriremos en cuanto instalemos nginx.
3. Instala nginx, PHP y MariaDB
sudo apt install -y nginx mariadb-server php-fpm php-mysql php-curl php-gd php-intl php-mbstring php-xml php-zip php-imagick
sudo ufw allow 'Nginx Full'Ubuntu 24.04 instala PHP 8.3. Compruébalo con php -v: la versión aparece en la configuración de nginx del paso 6.
4. Asegura MariaDB y crea la base de datos
sudo mariadb-secure-installationResponde que sí a eliminar los usuarios anónimos, impedir el acceso remoto de root y borrar la base de datos de pruebas. Después crea la base de datos y un usuario solo para WordPress:
sudo mariadb
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'cambia-esta-contraseña-larga';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost';
FLUSH PRIVILEGES;
EXIT;5. Descarga WordPress
cd /tmp
curl -O https://es.wordpress.org/latest-es_ES.tar.gz
tar xzf latest-es_ES.tar.gz
sudo mv wordpress /var/www/ejemplo.com
sudo cp /var/www/ejemplo.com/wp-config-sample.php /var/www/ejemplo.com/wp-config.php
sudo chown -R www-data:www-data /var/www/ejemplo.comEdita wp-config.php con los datos de la base de datos (DB_NAME, DB_USER y DB_PASSWORD) y sustituye el bloque de claves de seguridad por unas nuevas, que puedes generar en api.wordpress.org/secret-key/1.1/salt:
sudo nano /var/www/ejemplo.com/wp-config.php6. Configura nginx
Crea el archivo del sitio con sudo nano /etc/nginx/sites-available/ejemplo.com y pega esta configuración:
server {
listen 80;
listen [::]:80;
server_name ejemplo.com www.ejemplo.com;
root /var/www/ejemplo.com;
index index.php index.html;
client_max_body_size 64M;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
location = /xmlrpc.php { deny all; }
location ~ /\.(?!well-known) { deny all; }
location ~* \.(css|js|jpe?g|png|gif|webp|svg|woff2)$ {
expires 30d;
access_log off;
}
}Actívalo, desactiva el sitio por defecto y recarga nginx:
sudo ln -s /etc/nginx/sites-available/ejemplo.com /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo nginx -t && sudo systemctl reload nginxEl límite de subida de 64 MB tiene que coincidir con el de PHP: ajusta upload_max_filesize y post_max_size en /etc/php/8.3/fpm/php.ini y reinicia con sudo systemctl restart php8.3-fpm.
7. Activa HTTPS gratis con Let’s Encrypt
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d ejemplo.com -d www.ejemplo.comCertbot obtiene el certificado, adapta la configuración de nginx para servir HTTPS y deja programada la renovación automática. Puedes comprobar que la renovación funciona con sudo certbot renew --dry-run.
8. Termina la instalación de WordPress
Abre https://ejemplo.com y sigue el asistente: nombre del sitio, usuario administrador (evita «admin») y una contraseña larga. En Ajustes → Enlaces permanentes elige «Nombre de la entrada»: con la configuración de nginx anterior funciona sin tocar nada más.
9. Lo mínimo para mantenerlo seguro
- Actualizaciones automáticas de seguridad:
sudo apt install unattended-upgradesysudo dpkg-reconfigure -plow unattended-upgrades. - SSH solo con clave: pon
PasswordAuthentication noyPermitRootLogin noen/etc/ssh/sshd_config. Revisa también los archivos de/etc/ssh/sshd_config.d/, porque en muchos VPS hay uno que vuelve a activar la contraseña. Reinicia consudo systemctl restart sshdespués de comprobar que entras con tu clave. - Fail2ban bloquea las IP que fallan repetidamente al iniciar sesión:
sudo apt install fail2ban(protege SSH sin configurar nada). - WordPress, temas y plugins siempre al día, y los mínimos plugins posibles.
10. Copias de seguridad
El proveedor puede ofrecer snapshots del VPS, pero conviene tener además una copia propia. Un pequeño script que guarde la base de datos y wp-content cada noche es suficiente para empezar:
#!/bin/sh
# /usr/local/bin/backup-wordpress
set -e
DEST=/var/backups/wordpress
mkdir -p "$DEST"
mariadb-dump wordpress | gzip > "$DEST/db-$(date +%F).sql.gz"
tar czf "$DEST/wp-content-$(date +%F).tar.gz" -C /var/www/ejemplo.com wp-content
find "$DEST" -type f -mtime +14 -deletesudo chmod +x /usr/local/bin/backup-wordpress
echo '30 3 * * * root /usr/local/bin/backup-wordpress' | sudo tee /etc/cron.d/backup-wordpressEl script conserva dos semanas de copias en el propio servidor. Llévalas además a otro sitio (otro servidor, un almacenamiento S3 o tu NAS): si el VPS desaparece, las copias que estén dentro desaparecen con él.
11. Rendimiento: caché de página
Con esta configuración WordPress ya va rápido en un VPS pequeño. El siguiente paso es una caché de página para no ejecutar PHP en cada visita: un plugin de caché o la caché FastCGI de nginx, que sirve las páginas ya generadas y aguanta mucho más tráfico con el mismo servidor. Comprueba también que OPcache está activo con php -m | grep -i opcache.
¿Qué VPS elegir para WordPress?
Para una o varias webs WordPress con tráfico moderado bastan 2 vCPU y 2–4 GB de RAM. Estos son los VPS que tengo analizados, ordenados por precio con IVA:
Hasta 15 €/mes
| Producto | Nota | Precio | CPU | RAM | Almacenamiento | Datacenter |
|---|---|---|---|---|---|---|
01ContaboCloud VPS 4 | 8,6 | 4,40 €/mes | 4 vCPU | 8 GB | 100 GB SSD | UE, Reino Unido, EE. UU., Asia y Australia |
02IONOSVPS S+ | 7,4 | 6,05 €/mes | 1 vCore | 2 GB | 60 GB NVMe | España, Alemania, Reino Unido y EE. UU. |
03DigitalOceanDroplet básico 1 GB | 7,8 | 6,33 €/mes | 1 vCPU | 1 GB | 25 GB SSD | Ámsterdam, Londres, Fráncfort y resto del mundo |
04HostingerVPS KVM 2 | 8,1 | 9,67 €/mes | 2 vCPU | 8 GB | 100 GB NVMe | América, Europa y Asia |
Otros rangos de precio
Están en rangos de precio distintos, así que no los comparo en la misma tabla: cada uno responde a una necesidad diferente.
Precios con IVA incluido para el plan indicado; el precio de entrada puede exigir permanencia. Compruébalos en la web del proveedor. Los botones «Ver oferta» son enlaces de afiliado.
Si prefieres no administrar el servidor, un hosting compartido o un hosting cloud gestionado te ahorran todo este trabajo.
Sigue leyendo
Guía
Qué VPS elegir para Docker, n8n o un laboratorio casero
Cuánta CPU, RAM y disco necesitas para montar Docker, n8n u otras aplicaciones autoalojadas en un VPS, qué virtualización buscar y el error de seguridad más común con Docker.
Actualizado
Guía
Hosting con servidores en España: cuándo importa y qué opciones hay
¿Necesitas que tu web esté alojada en España? Qué cambia de verdad (latencia, RGPD, soporte y SEO) y qué proveedores analizados tienen datacenter en España, con precios con IVA.
Actualizado
Guía
Precio de renovación del hosting: cuánto sube de verdad en 2026
La oferta de entrada no es lo que pagarás: comparo el precio inicial y el de renovación con IVA de los hosting y VPS que he analizado, y cómo calcular el coste real a varios años.
Actualizado