Desplegar WordPress + MariaDB en Coolify

Coolify tiene una plantilla de WordPress + MariaDB lista para usar. La seleccionas, le das a deploy, y en dos minutos tienes un WordPress corriendo con HTTPS y dominio personalizado. Hasta ahí todo bien. Lo que la plantilla no cubre — y que tuve que descubrir por las malas — es lo que sigue después del primer deploy.

Por qué Coolify y no un hosting WordPress convencional

La respuesta corta: porque ya tenía el servidor. Todos mis proyectos — SG-Remesas, Taskly, OM Distribution — corren en la misma VPS gestionada con Coolify. Tener el blog ahí también significa un solo panel para todo, sin pagar un hosting WordPress aparte, sin configurar SSL por separado, sin gestionar nginx a mano. Coolify usa Traefik como proxy inverso y le emite el certificado Let’s Encrypt automáticamente al asignarle el dominio al servicio. Eso solo ya justifica la decisión.

El template de Coolify hace la mayor parte del trabajo

El servicio se llama wordpress-with-mariadb en el catálogo. Lo que te despliega por defecto:

  • Contenedor WordPress con la imagen oficial
  • Contenedor MariaDB 11 como base de datos
  • Red interna Docker que conecta ambos sin exponer la DB al exterior
  • Variables de entorno pre-generadas (contraseñas, nombre de DB, usuario)
  • Proxy Traefik listo para asignarle un FQDN

El único paso manual antes de hacer deploy es poner tu dominio en el campo FQDN del servicio WordPress. Coolify se encarga del resto.

Lo que sí tuve que configurar a mano

Permalink structure: El default de WordPress usa ?p=123. Cambié a /%postname%/ desde Ajustes → Enlaces permanentes. Nada del blog tiene sentido con URLs que parecen parámetros de query string.

Zona horaria: El servidor corre en UTC. Cambié la zona horaria del blog a America/New_York desde Ajustes → Generales, para que las fechas de los posts reflejen dónde estoy operando, no dónde está el datacenter.

Tamaño máximo de subida: El límite por defecto de PHP en la imagen de WordPress es 2MB. Para subir capturas de pantalla con resolución decente necesité ajustar upload_max_filesize y post_max_size. Eso se hace editando la variable de entorno PHP_UPLOAD_MAX_FILESIZE en la configuración del servicio en Coolify, o bien con un archivo .htaccess o php.ini montado como volumen.

Application Passwords: El wizard crea el primer usuario administrador, pero no genera automáticamente credenciales para acceder a la REST API de WordPress desde herramientas externas. Eso lo configuré desde Usuarios → Tu perfil → Application Passwords.

El dominio y el SSL son automáticos, pero hay un detalle

Coolify emite el certificado Let’s Encrypt via ACME HTTP Challenge. Para que funcione, el dominio tiene que estar apuntando al servidor antes de hacer el deploy. Si haces el deploy primero y luego cambias el DNS, el challenge puede fallar y quedarte sin HTTPS. El orden correcto: primero actualizar el registro A/CNAME, esperar propagación, luego deploy.

En mi caso el dominio blog.rafaelmarin.dev ya apuntaba al servidor porque tengo un wildcard *.rafaelmarin.dev en Cloudflare dirigido a la misma IP. El certificado se emitió sin problema en el primer intento.

El resultado

Un WordPress corriendo en mi misma infraestructura, con HTTPS, sin configuración manual de nginx, sin pagar hosting adicional, gestionado desde el mismo panel que el resto de mis proyectos. Para un blog técnico personal, eso es exactamente lo que necesitaba.

Lo que vino después del deploy — un error 504 que me costó más tiempo del que debería — es tema de otro post.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *