Continúa usando SQLite con Ghost 5 y Docker

Si tienes tu blog en Ghost y no quieres migrar a MySQL, aquí tienes cómo seguir utilizando SQLite como base de datos

Continúa usando SQLite con Ghost 5 y Docker

Desde que comencé a escribir este blog, he apostado siempre por Ghost, ya que es una plataforma bastante más ligera que Wordpress y mi idea era auto alojar el servicio en un VPS modesto y barato. Bastaba una imagen Docker del mismo y ya, puesto que soporta el uso de SQLite como base de datos. Esto me venía bien por dos motivos: Por un lado, no depender de una base de datos en mi VPS que consumiera recursos sólo para tener el blog y, por otro, la facilidad de hacer una copia de seguridad del mismo (basta con un cp -R del directorio donde está el blog y listo).

Desde la versión 5, desde Ghost decidieron dar soporte únicamente a MySQL como base de datos. No voy a entrar en si es una decisión acertada o no, pues entiendo que están pensando en el mundo empresarial y en el uso de plataformas de blog con mucho más alcance y contenido que este blog.

Cuando comencé este blog, mi idea era, simplemente, volcar todo lo que iba haciendo en mis ratos de trasteo y cacharreo, y tener un lugar donde poder consultarlo, a modo documentación... Además de permitirme aportar a esa Internet libre y gratuita un poco de lo que me ha dado a mí. Con el tiempo, y gracias al feedback que he recibido en alguna ocasión (y a las métricas anonimizadas que he podido extraer gracias al servidor de métricas), he descubierto que también está ayudando a otros entusiastas de la tecnología de habla hispana (incluso en Reddit alguno me llegó a agradecer que hubiera más contenido en español, aunque todos nos movamos por el inglés en este mundo).

Debido a esto, cuando hice la actualización de Ghost a la versión 5, me encontré con que, o migraba todo a MySQL, o mi blog dejaba de funcionar. Sí, sé que es algo que tendré que hacer en algún momento... Pero ahora mismo no tengo tiempo para ponerme con ello, tengo otros proyectos arrancados y me gustaría cerrarlos antes de meterme en una nueva aventura. Además, mi VPS ya está bastante exprimido ahora mismo como para, encima, meterle un contenedor más xD.

Me bastó con una simple búsqueda para ver que no soy el único con este problema, y la solución se presentó rápido delante de mí. Y como no quiero dar mucho suspense ni hacer de esto una entrada muy larga, ¡vamos al lío!

Según la documentación de Ghost, podemos especificar el motor de base de datos que vamos a usar, así como la información necesaria. Basándonos en ello, bastará con definir algunas variables de entorno para forzar a que, al arrancar, haga uso de SQLite como motor de base de datos. Bastará con crear un fichero docker-compose.override.yml y añadir lo siguiente (o meterlo directamente en nuestro fichero docker-compose.yml, como prefiramos):

services:
  ghost:
    environment:
      database__client: sqlite3
      database__connection__filename: /var/lib/ghost/content/data/ghost.db
      database__useNullAsDefault: "true"
      database__debug: "false"
Variables de entorno a añadir

Si tenemos nuestra base de datos (el fichero ghost.db) en una localización diferente, obviamente deberemos indicar la ruta correcta dentro del contenedor de Docker.

Con esto, si ahora levantamos nuestra imagen de Ghost 5, veremos que nos arranca con todas las entradas, configuraciones e imágenes que teníamos en el blog, permitiéndonos continuar con él en pie.

Ghost 5 corriendo con SQLite
Ghost 5 corriendo con SQLite

Ghost nos seguirá avisando de que la base de datos no está soportada y que migremos a MySQL 8 lo antes posible. Pero mientras eso ocurre, podemos seguir ofreciendo el contenido del blog con un consumo de recursos muy bajo y no penalizar el rendimiento. 😊

Si te ha gustado la entrada, o te ha sido útil y quieres ayudarme a pagar los gastos que conlleva el servidor y mantener así el blog libre completamente de anuncios, puedes hacer una donación en Bitcoin en la siguiente dirección:

Donar