[INTERN] Mi servidor WordPress en casa
Cómo monté un WordPress sobre Ubuntu Server con Nginx como proxy inverso, PHP-FPM y MariaDB, con todo el tráfico cifrado.

1. Objetivo
Tener mi propio servidor web en casa entendiendo cada pieza, en lugar de usar un hosting ya hecho.
2. Arquitectura
| Pieza | Qué hace | Escucha en |
|---|---|---|
| Nginx (proxy inverso) | Recibe las visitas con HTTPS (TLS 1.2 y 1.3) y añade cabeceras de seguridad | 443 · el 80 redirige a HTTPS |
| Nginx (WordPress) | Sirve WordPress y pasa el PHP a PHP-FPM | 127.0.0.1:8080 |
| PHP 8.3-FPM | Ejecuta WordPress | Socket Unix |
| MariaDB 10.11 | Guarda la base de datos wordpress | 127.0.0.1:3306 |
3. Pasos
- Instalar Nginx, PHP-FPM y MariaDB en Ubuntu Server 24.04.
- Crear un certificado para
arnau.siteywww.arnau.site(RSA de 3072 bits). - Configurar Nginx con tres bloques: la redirección de HTTP a HTTPS, el proxy inverso del 443 y WordPress en el 8080, solo en local.
- Crear la base de datos y un usuario con permisos solo sobre ella.
- Descargar WordPress, comprobar su suma SHA-1 y darle los permisos de
www-data. - Instalarlo con un usuario administrador que no se llama «admin».
Fragmento del proxy inverso (simplificado):
server {
listen 443 ssl;
server_name arnau.site www.arnau.site;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}4. Seguridad
- El puerto 8080 y MariaDB solo escuchan en
127.0.0.1: desde fuera no existen. - Los protocolos antiguos (TLS 1.0 y 1.1) están desactivados.
- Nginx no muestra su versión (
server_tokens off). - Cabeceras
X-Content-Type-Options,X-Frame-OptionsyReferrer-Policy. - Los ficheros
.ht*no se pueden descargar.
5. Resultado
WordPress funcionando en https://arnau.site, con cada pieza en su sitio y solo el proxy expuesto.
Deja un comentario