Cambiando el dominio de WordPress

[Modo ACTUALIZACIÓN=on del 5/11/2022]

He vuelto a cambiar el dominio, ya no utilizo el dominio gratuito miguelius.duckdns.org sino blog.miguelius.org ya que he decidido comprar un dominio en CloudFlare por poco más de 10 €. La ventaja de comprar un dominio es que supuestamente la empresa te garantiza una disponibilidad de 24×7 y el dominio gratuito cuando hay algún problema, pues hay que esperar a que lo solucionen. Todo depende de lo que te pongas de nervioso. CloudFlare proporciona una API que permite modificar el DNS mediante un script y eso viene de perillas si tienes una IP dinámica.

[Modo ACTUALIZACIÓN=off]

Lo primero es advertir que lo que quiero cambiar es el dominio de un blog que albergo en uno de mis servidores, no es un blog de WordPress.com.

Comencé este blog utilizando el enlace https://miguelius.ddns.net. Este nombre de dominio miguelius.ddns.net está dado de alta en No-IP y comencé a utilizarlo para poder relacionar la dirección pública de mi casa con un nombre, de tal modo que haciendo una consulta DNS de ese nombre obtengo la IP, lo cual me puede servir para múltiples cosas, como por ejemplo tener un servidor web.

$ dig +short miguelius.ddns.net
83.32.52.75

Para que esto funcione hay que instalar un servicio en alguna de las máquinas internas para que notifique a No-IP que ha cambiado la IP pública (si por ejemplo se ha reiniciado el router) y No-IP modifique el DNS. Cosa que no suele ser inmediata, puede tardar unos diez minutos o más y, por lo tanto, durante ese tiempo el servicio no está operativo. Lo advierto porque esto no es para un servicio serio, sino para algo que no sea crítico.

Además del demonio que tiene que estar corriendo, esta gente de No-IP tiene un servicio gratuito que permite albergar tres nombres de host y además hay que confirmar el nombre de cada uno de ellos cada mes. Hay que reconocer que es un poco rollo, pero yo lo llevo haciendo así unos cuantos años. Si pagas, puedes tener más nombres de host y además no confirmar cada mes. El precio por un año de servicio es de $24.95 y puedes albergar 25 nombres.

Buscando una alternativa menos coñazo que ésta encontré Duck DNS que ofrece una alternativa gratis como No-IP pero sin tener que estar renovando todo los meses. Así que me registré y di de alta el nombre miguelius.duckdns.org. Al contrario que otros, esta gente sólo permite utilizar el dominio duckdns.org, pero con uno me es suficiente.

$ dig +short miguelius.duckdns.org
83.32.52.75

Cuando se da de alta un nombre de host esta gente te da un token, que es algo parecido a esto: fd37823-20ec-94eb-b4d7-5c3e06178f7d (el token es falso lógicamente) y para actualizar la IP en los servidores DNS de Duck DNS basta con programar en el cron de una máquina linux un sencillo script. Por ejemplo, tengo puesto que cada cinco minutos se ejecute ese script:

*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1

El contenido del script es de lo más simple, ya que ejecuta un curl:

#!/bin/bash

echo url="https://www.duckdns.org/update?domains=miguelius&token=fd37823-20ec-94eb-b4d7-5c3e06178f7d&ip=" | curl -k -o ~/duckdns/duck.log -K -

Ahora viene la segunda parte de la cuestión, ¿cómo cambiar el blog de WordPress de miguelius.ddns.net a miguelius.duckdns.org?

Lo primero que hice fue conseguir un certificado de Let’s Encrypt y para eso se necesita el paquete certbot. Ya lo tenía que para Debian se puede instalar así::

$ sudo apt-get install certbot
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  python-pyicu python3-acme python3-certbot python3-configargparse python3-configobj python3-future python3-josepy python3-mock
  python3-parsedatetime python3-pbr python3-requests-toolbelt python3-rfc3339 python3-tz python3-zope.component
  python3-zope.event python3-zope.hookable python3-zope.interface
Suggested packages:
  python3-certbot-apache python3-certbot-nginx python-certbot-doc python-acme-doc python-configobj-doc python-future-doc
  python-mock-doc
The following NEW packages will be installed:
  certbot python-pyicu python3-acme python3-certbot python3-configargparse python3-configobj python3-future python3-josepy
  python3-mock python3-parsedatetime python3-pbr python3-requests-toolbelt python3-rfc3339 python3-tz python3-zope.component
  python3-zope.event python3-zope.hookable python3-zope.interface
0 upgraded, 18 newly installed, 0 to remove and 0 not upgraded.
Need to get 1307 kB of archives.
After this operation, 6738 kB of additional disk space will be used.
Do you want to continue? [Y/n]

Una vez instalado certbot lo ejecuté para solicitar un certificado para el nuevo host:

$ sudo certbot --apache -d miguelius.duckdns.org

Si todo ha ido bien guardará el certificado con toda su cadena (el certificado del host y de las entidades certificadoras) en el fichero:

/etc/letsencrypt/live/miguelius.duckdns.org/fullchain.pem

Y la clave privada en:

/etc/letsencrypt/live/miguelius.duckdns.org/privkey.pem

Ahora en apache hay que crear un host virtual que sea idéntico al que ya había para el blog miguelius.ddns.net pero poniendo como ServerName el nuevo nombre de host y como certificados esos nuevos que se acaban de generar:

<VirtualHost _default_:443>
    ServerName miguelius.duckdns.org
    ....
    SSLCertificateFile /etc/letsencrypt/live/miguelius.duckdns.org/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/miguelius.duckdns.org/privkey.pem
    ....
</VirtualHost>

Después de los cambios se recarga apache:

$ sudo systemctl reload apache2.service

Se entra en la página de administración del blog en el navegador:

https://miguelius.ddns.net/wp-admin

Se introduce usuario y contraseña y se va a la sección Ajustes -> Generales y debería de verse una pantalla simila a esta, donde se hace referencia al nombre de host que deseamos cambiar:

Sólo hay que cambiar, por lo tanto, la dirección de WordPress y la dirección del sitio con el nuevo nombre de host, quedando algo así:

Una vez modificadas esos dos campos, sólo hay que hacer scroll hacia abajo y hacer clic en el botón «Guardar cambios». A partir de ese momento quedará inaccesible el nombre antiguo y ya sólo se podrá ver el blog o administrarlo con el nuevo nombre: https://miguelius.duckdns.org

Una cosa que no se cambia es la URL de los comentarios. Si por ejemplo hay un comentario de una de las entradas en otra, se conserva la URL antigua y la única manera que he visto de cambiarla es tocando la base de datos, para ello lo primero es exportarla:

$ mysqldump -h $HOST -u $USER -p $PASSWORD $BBDD > base_datos.sql

Luego se modifica el fichero base_datos.sql por ejemplo con el comando sed de tal modo:

$ sed -i 's/miguelius.ddns.net/miguelius.duckdns.org/g' base_datos.sql

Una vez modificado y salvado el fichero hay que importarlo en la base de datos:

$ mysql -h $HOST -u $USER -p $PASSWORD $BBDD < base_datos.sql

Y ya estaría todo.

Deja una respuesta

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