Tu web en WordPress en un VPS

Aunque existen muchas soluciones para tener tu propia página web, lo que no podrás obviar, es la mas establecida hoy en día es WordPress. En este sentido, durante los últimos dos años, todas las páginas web que he tenido que implementar, lo he hecho utilizando esta solución. Y esto, con independencia del tipo y tamaño de la página web. Da lo mismo, que quieras montar una página web, para una asociación de vecinos, por decirte algo, que un negocio online. Es una solución que funciona perfectamente, sencilla y con un mantenimiento bajo o muy bajo. Hasta la fecha, puede ser que te hayas planteado tener la página web en un hospedaje, donde ellos te proporciona el servidor web e incluso la instalación de WordPress, o simplemente te facilitan su instalación. Pero ¿te has planteado tener tu web en un WordPress en tu propio VPS? ¿por que no tener tu página web en WordPress en un VPS de Clouding.io?

Te puedo asegurar que frente a otras soluciones, y desde mi punto de vista son todo ventajas. Ciertamente, que necesitarás algo mas de conocimientos técnicos, pero no mucho mas. Sobre todo, si tienes en cuenta, que hoy en día tienes diferentes tecnologías, como las que te voy a comentar en este artículo, que te simplifican y facilitan la vida.

Piénsalo, con una línea de comando, puedes levantar tu web, con tu certifcado Let’s Encrypt, tu base de datos, su servidor web e incluso una base base de datos caché para que todo vaya mas fluido. Y esto sin grandes complicaciones.

Pero no solo esto, sino que además puedes montar una segunda infraestructura, idéntica a la primera, pero solo para ti, con la que realizar tus pruebas de diseño y funcionamiento. Esto te permitirá, probar otros complementos y temas en tu página, sin miedo a perder visitas, o a que se rompa tu sitio web. Pero no solo esto, sino que además, podrás crear tus propios temas para tu página web, o tus propios plugins.

Así, en este artículo, encontrarás como montar, de forma sencilla tu página web, y una página web de trabajo, utilizando diferentes tecnologías, pero de forma sencilla. Y todo ello con la ventaja de que sea un VPS de Clouding.io.

Tu web en WordPress en tu VPS

Tu web en WordPress en tu VPS

Clouding.io

Antes de centrarme en el aspecto de como levantar tu propia web tanto de producción, como de pruebas, quería introducirte, si es que no lo conoces a este proveedor de alojamiento.

Se trata de un proveedor de servicios de alojamiento relativamente joven. Clouding.io sale al mercado en Enero de 2016, y en 2017 ya contaba con mas de 4.000 servidores creados en su plataforma, que a principios de 2.018 se convirtieron en 12.000 y a finales de ese mismo año ya eran mas de 35.000, momento en el que ampliaron el ancho de banda. Esto no son mas que número, pero de esta manera te puedes hacer una idea de la capacidad de crecimiento.

Uno de los aspectos que más me atrae es que el Datacenter se encuentra en España, concretamente en L’Hospitalet de Llobregat. Esto es algo importante si lo que quieres hacer es proveer servicios en España. Y por supuesto a nivel de SEO, no te tengo ni que contar.

Otro aspecto que seguro que vas a tener muy en cuenta es el tema del precio. Una característica que seguro llama tu atención, es que con Clouding.io, puedes facturar por horas. Y esta es una razón muy interesante para montar el servicio de reuniones virtuales aquí. ¿Qué sentido tiene tener una infraestructura para hacer reuniones virtuales de 200 personas si solo lo utilizas una vez al mes, y el resto del tiempo sólo necesitas para pocas personas? Puedes redimensionar los servidores alojados en Clouding.io de acuerdo a tus necesidades… Cuando lo requieres utilizarás mas recursos, y cuando no menos. O ninguno, porque siempre puedes borrarlo.

Otro de los problemas que te puedes encontrar cuando montas tu infraestructura es la disponibilidad. Y es que, puede ser que tengas un problema en un momento determinado, normalmente cuando mas lo necesitas, y ¿que haces entonces?. En el caso de tener tu servidor en Clouding.io este problema se lo dejas a ellos, que cuentan con una plataforma en alta disponibilidad. De esta forma, que tu servidor no te preste servicio cuando mas lo necesitas se convierte en algo mas complicado.

Levantando el servidor

Lo primero es levantar el servidor que vas a utilizar para, tanto la página web de producción, como la página web que utilizarás de pruebas. Como verás a continuación, en el caso de Clouding.io, esto es algo tremendamente sencillo. La pantalla para dar de alta servidores, es tan sencilla como la que captura que te muestro a continuación. Como ves, tengo dado de alta un servidor, pero voy a dar de alta uno nuevo para la configuración que te mostraré a continuación.

Levantando una VM en Clouding.io

Para crear un nuevo servidor tan solo tienes que pulsar el botón con el +, que has visto en la captura de pantalla. Esto te llevará un nuevo paso en el que tendrás que configurar tu máquina virtual. Pero, no te preocupes, porque como verás en la siguiente pantalla, es muy sencillo, pero que muy sencillo.

Creando una VM en Clouding.io

Como has podido ver en la captura anterior, es muy sencillo. Las opciones a elegir son,

  • Nombre de tu máquina virtual. Poco te voy a decir aquí, esto es totalmente autoexplicativo.
  • Origen del disco. De donde quieres partir para levantar tu máquina virtual. Tienes diferentes opciones, desde seleccionar el tipo de sistema operativo, Windows o Linux, seleccionar la distribución, en el caso de que sea un Linux. Indicarte, que por supuesto, que Clouding.io, te lo pone bien fácil, porque te permite otras muchas opciones. Sin embargo, tampoco me voy a despistar del objetivo que tengo marcado. Si acaso, ya te lo contaré en un futuro artículo.
  • La configuración del servidor. Aquí tienes que elegir el tamaño de la memoria RAM. Indicarte que está relacionada con el número vCores. Puedes elegir o 2GB o 4GB por núcleo. En cuanto a los vCores, parte de 0.5 vCores. Así, la mínima máquina que podrías montar sería de 0.5 vCores y 1 GB de RAM. Con esto ya te podrías levantar una página web o un bot de Telegram, por decirte alguna cosa.
  • Otra opción que te permite elegir Clouding.io es el tamaño del disco SSD.
  • Puedes activar la opción de copias de seguridad para tu máquina virtual. De esta forma tienes tus datos siempre a buen recaudo frente a cualquier eventualidad.
  • Es posible configurar una red privada.

De esta manera es posible configurar el servidor de acuerdo a tus necesidades. Puedes empezar por un tamaño reducido, e ir aumentando en función de tus necesidades.

En mi caso, la configuración que he elegido para mi servidor de reuniones virtuales, es la siguiente,

  • RAM: 1 GB
  • vCores: 0.5
  • Disco SSD: 5 GB.

Esto te permitirá tener alojado tu página web sin ningún problema. Cierto es que conforme aumenten las visitas, y tu página vaya teniendo mas tráfico es muy posible que necesites mas recursos. Sin embargo, con Clouding.io, no tendrás ningún tipo de problema. Solo tienes que detener el VPS reconfigurarlo y arrancarlo de nuevo. Lo tendrás en plena producción en menos de lo que te imaginas.

En principio, he optado por la solución de tener tanto la página web en WordPress de producción, como de pruebas, en el mismo VPS. Pero dependiendo del tráfico que tengas, o de tus necesidades, a lo mejor, es interesante, tener un segundo VPS donde alojar esta pagina de pruebas. Este segundo VPS, podrías tenerlo siempre apagado, y solo levantarlo cuando lo necesites para realizar las pruebas. Lo cierto, es que, para empezar, yo me decantaría por tener uno solo, y conforme vayas creciendo, replantear la solución.

Con esta configuración seguro que es posible tener mas de 500 visitas día, sin que el VPS se viera castigado. El coste en este caso se iría a unos 5 €/mes mas o menos. A este coste le tendrías que añadir el coste del dominio, que podría ser 1 €/mes adicional.

Una vez configurado tu máquina virtual, verás una captura de pantalla como la que te muestro a continuación.

Configurando una VM en Clouding.io para tu web en WordPress en un VPS

Por supuesto, que no todo son ventajas, esto de tener tu página web en tu propio VPS, ya sea de Clouding.io o de otro proveedor. La cuestión, es que tu te tendrás que encargar del mantenimiento de tu WordPress, tu servidor web, la base de datos, etc. Pero, tampoco es nada complicado. Y sobre todo, tienes la ventaja de que está todo bajo tu control. No dependes de la versión de PHP que te ofrezca el proveedor de hosting, puedes poner tu la que consideres. Y esto por ponerte un ejemplo, porque, las ventajas, desde mi punto de vista son innumerables.

Configurando el servidor

Si te fijas en la captura de pantalla anterior, te da la forma de acceder al servidor. Yo inicialmente me he decantado por hacerlo utilizando al usuario root y la contraseña proporcionada. Sin embargo, y como te puedes imaginar uno de los primeros pasos que he hecho ha sido crear mi propio usuario, y limitar el acceso vía ssh a este usuario, y además que solo puede acceder por clave público privada.

En este caso te recomiendo que le des un vistazo al artículo sobre primeros pasos con tu VPS, en el que te guío sobre lo que tienes que hacer para asegurar mínimamente ese servidor.

  • Actualizar el servidor recién instalado
  • Crear tu usuario de trabajo
  • Preparar la autenticación por clave público privada
  • Asegurar el acceso vía SSH
  • Configurar el cortafuegos. Aunque aquí tengo que hacerte una llamada. Clouding.io tiene su propio Firewall, con lo que tu podrías obviar el tuyo. Esto es recomendable, si no te aclaras mucho con esto, y de esta manera evitar que te quedes sin poder acceder a tu servidor. A mi como me gusta tener las cosas bajo mi control, me gusta levantarlo. Tienes que tener en cuenta, que si lo haces tendrás que cuando abras puertos hacerlo en ambos cortafuegos, con lo que no te resultará nada práctico. En el caso de que te decidas a levantar tu cortafuegos, te recomiendo que leas el capítulo sobre como proteger tu servidor

Respecto a la configuración del cortafuegos para tu servidor de reuniones virtual lo trataré mas tarde, cuando sea necesario.

Por otro lado, para facilitarte el acceder a tu máquina virtual, te recomiendo configures el archivo config, de ssh, tal y como te comento en el primer episodio de la segunda temporada del podcast en el que precisamente te hablo sobre configuración ssh. En ese podcast encontrarás como gestionar esto de las conexiones ssh de forma sencilla y cómoda.

Instalando los servicios

Instalar Docker

Para facilitar toda la operación, tanto para mi, como para ti, lo he hecho utilizando Docker. En este sentido, si no has comenzado a utilizar esta tecnología, este es un buen momento. En este caso, te recomiendo que le des un repaso al tutorial sobre Docker.

Por comodidad, yo he montado un directorio docker, y dentro de este directorio, voy añadiendo, en diferentes subdirectorios los contenedores que voy montando. Y digo contenedores, porque como verás a continuación, voy a montar varios, mas que nada por simplificarme la vida.

Para instalarlo, tan sencillo como ejecutar las siguientes instrucciones,

sudo apt install docker.io docker-compose

El siguiente paso es añadir a nuestro usuario al grupo docker, tal y como te comento en el capítulo de introducción a Docker.

Instalar Traefik

El primero de los contenedores a instalar va a ser Traefik. La ventaja de este servicio es que te despreocupas por completo de todo, en el sentido de que el es el que se encarga de gestionar los certificados de Let’s Encrypt y de habilitar tantos servicios como queramos o necesitemos. Si no conoces este servicio, te recomiendo que escuches el episodio 142 del podcast sobre tus contenedores accesibles desde internet.

He creado un proyecto en GitHub, donde encontrarás la siguiente estructura, que te hará mucho mas sencillo implementar tu propio servicio en tu servidor.

  • traefik/docker-composer.yml este contiene la definición del servicio Traefik.
  • traefik/data/traefik.yml, que contiene algunas características de nuestro Traefik.
  • traefik/data/acme.json, un archivo vacío que utilizará Let’s Encrypt.
  • traefik/data/basicauth/usersfile, que contiene el listado de usuarios con el formato usuario:hassed-password que tienen acceso a la dashboard de Traefik. Para generar las contraseñas puedes utilizar la herramienta htpasswd, tal y como sugieren en la propia documentación de Traefik.

WordPress

El siguiente paso es levantar los dos servicios web, tanto el de prueba como el de producción. En este caso, yo les he llamado PRE y PRO, para el de desarrollo y el de producción, pero evidentemente les puedes llamar como consideres.

Es mas, mi recomendación sería, que el de producción fuera al dominio principal, por ejemplo, tuweb.com, mientras que el que utilizas para pruebas, fuera a una url, del tipo, pruebas.tuweb.com. Por supuesto, en este segundo caso, tendrías que marcar que no se registrara por la araña de Google, para evitar, el problema del contenido duplicado, y para que los visitantes no fueran a la página que no toca.

Respecto a la configuración encontrarás los siguientes archivos, también en el repositorio de GitHub.

  • wordpress/docker-compose.yml donde está la configuración del WordPress de producción.
  • wordpress/wp.env. En este archivo están todas las variables de entorno.
  • wordpress/conf/php.ini. La configuración de PHP
  • wordpress/conf/nginx-wp/fastcgi.conf la configuración de fastcgi
  • wordpress/conf/nginx-wp/mime.types los tipos mime
  • wordpress/conf/nginx-wp/nginx.conf. La configuración del servidor web Nginx
  • wordpress/conf/nginx-wp/wp.conf. La parte de configuración de Nginx para tu WordPress
    El siguiente paso es instalar nuestro servico de reuniones virtuales, con Jitsi. Como en el caso anterior, en el repositorio de GitHub que he comentado en el punto anterior te dejo la definición de mis archivos para la configuración de Jitsi.

En el caso del servidor de pruebas, la configuración sería exactamente la misma, pero tendrías que cambiar el archivo de configuración wordpress/docker-compose.yml. Sustituyendo wppro por wppre, por ejemplo. Por supuesto, también tendrías que cambiar tanto en uno como en el otro el dominio.

Una vez realizados los cambios oportunos, simplemente tienes que levantar cada uno de los servicios. Para ello, ejecuta,

docker-compose up -d

Configuración de DNS

Para que todo funcione correctamente, es necesario redirigir el tráfico al lugar adecuado. De nuevo, Clouding.io, te lo pone realmente fácil. Así es como está configurado para trabajar con Traefik,

Configuración de DNS en una VM en Clouding.io

Si te fijas, lo he definido como *.tu-dominio.com, de esta manera podré definir tantos subdominios como necesite, y esto es así, porque es Traefik, el que se encarga de dirigir el tráfico al sitio correcto. Ahora mismo tengo dos, wppro.tu-dominio.com y el de desarrollo wppre.tu-dominio.com. Pero podría tener otros sitios.

Esto ese muy interesante, porque además de tener tu página web, tanto de desarrollo como de producción, podrías tener otros servicios. ¿Que servicios? Podrías tener un servicio de acortamiento de url, o cualquier otro servicio que se te pueda pasar por la cabeza.

Abriendo puertos

Como ya te adelanté en apartados anteriores, es necesario abrir los puertos que la configuración por defecto de Clouding.io seguro que nos tendrá cerrados. Sin embargo, no te tienes que preocupar, porque esta es una operación realmente sencilla como verás en la siguiente captura de pantalla.

Abriendo puertos en una VM en Clouding.io

Recuerda que si también tienes levantado tu propio cortafuegos, necesitarás habilitar los puertos. Para que todo funcione correctamente, estos puertos serán, los siguientes,

PuertoTCPUDP
80X
443X

Conclusión

Con la configuración que he dejado en el repositorio de GitHub, unido a la facilidad que te ofrece Clouding.io, tener tu propia página web tanto de producción como de desarrollo, alojada en un servidor en España, cerca de tus clientes, es algo realmente sencillo y sin ninguna complicación. Además te puedes despreocupar de gestionar los certificados, de los cuales ya se encarga Traefic.


Más información,

Imagen de portada de Damir Kopezhanov en Unsplash

Deja una respuesta

Tu dirección de correo electrónico no será publicada.