Ghost es una popular plataforma de creación de contenido escrita en JavaScript con Node.js. El software de código abierto viene con todo lo que necesita para crear, crear temas, publicar y mantener su blog.
Ghost es un software de código abierto compatible con el servicio alojado oficial de Ghost (Pro). Puede instalarlo en su servidor agregando Node.js y usando Ghost CLI para configurar su pila. Ghost también está disponible como una imagen de Docker que agrupa todas las dependencias por usted.
En esta guía, usaremos Docker para poner en marcha rápidamente un nuevo blog de Ghost. Instale Docker y Docker Compose en su host antes de continuar. Si bien puede implementar Ghost solo con Docker, Compose facilita proporcionar y administrar los valores de configuración que su sitio necesita para comenzar.
Inicio de un contenedor fantasma
Puede iniciar un sitio Ghost básico con un solo comando de Docker:
docker run -d -p 2368:2368 --name simple-ghost ghost:4
Esto hará que Ghost aparezca en su puerto predeterminado de 2368. Visite http://localhost:2368
para ver su sitio o http://localhost:2368/ghost
para acceder al panel de administración de Ghost. Deberá proporcionar algunas configuraciones de primera ejecución para finalizar la instalación de Ghost y crear una cuenta de usuario inicial.
Este enfoque es excelente para la experimentación rápida si solo está probando Ghost. Sin embargo, aún no hemos configurado el almacenamiento persistente, por lo que sus datos se perderán cuando el contenedor se detenga.
Aquí hay un ejemplo más completo usando Docker Compose para configurar Ghost con un volumen Docker. Montar un volumen en /var/lib/ghost/content
directorio para almacenar datos de Ghost fuera del contenedor.
version: "3" services: ghost: image: ghost:4 ports: - 8080:2368 environment: url: https://ghost.example.com volumes: - ghost:/var/lib/ghost/content restart: unless-stopped volumes: ghost:
Este archivo Compose muestra algunos otros cambios en la configuración del contenedor. El puerto 2368 expuesto por el contenedor se asigna al puerto 8080 en su host, lo que le permite usar localhost:8080
para acceder a Fantasma. La política de reinicio se cambia a unless-stopped
para asegurarse de que su sitio se inicie automáticamente después de que se reinicie el host.
Ahora usa Redactar para ver tu sitio:
docker-compose up -d
Configuración fantasma
Ghost admite varios parámetros de configuración para personalizar su funcionamiento y configurar su sitio. Al usar Docker, puede proporcionar estos valores como variables de entorno.
Los archivos de configuración de Ghost usan objetos JSON anidados para almacenar valores. Puede convertir claves JSON en sus equivalentes de variables de entorno reemplazando cada nivel del árbol con __
(doble guión bajo) caracteres:
# in a JSON config file { "mail": { "transport": "SMTP" } } # as an environment variable mail__transport=SMTP
Utilizar el environment
campo en el tuyo docker-compose.yml
para proporcionar estos parámetros a su contenedor Ghost:
version: "3" services: ghost: environment: mail__transport: SMTP
Consulte la documentación de Ghost para obtener una lista completa de las opciones admitidas. Puede configurar un sistema de correo, usar una URL separada para acceder al panel de administración, omitir las rutas del directorio y habilitar las opciones de privacidad a través de las variables de entorno disponibles.
El url
la opción es especialmente importante ya que se requiere para sitios de producción en vivo. Esto define la URL que los visitantes externos utilizarán para acceder a su sitio. Establézcalo en el nombre de dominio de su sitio en el suyo docker-compose.yml
:
environment: url: https://ghost.example.com
Usar una base de datos externa
De manera predeterminada, Ghost usa una base de datos SQLite almacenada como un archivo en el directorio de contenido de su sitio. Se mantendrá como parte del volumen de Docker creado anteriormente. En su lugar, puede usar una base de datos MySQL externa proporcionando detalles de conexión a través de database
- variables de entorno preestablecidas:
services: ghost: # ... environment: database__client: mysql database__connection__host: ghost_mysql database__connection__user: root database__connection__password: databasePw database__connection__database: ghost ghost_mysql: image: mysql:5.7 expose: - 3306 environment: MYSQL_DATABASE: ghost MYSQL_ROOT_PASSWORD: databasePw volumes: - mysql:/var/lib/mysql restart: unless-stopped volumes: mysql:
Este archivo Compose incluye otro servicio que ejecuta MySQL en un contenedor adicional. Las variables de entorno se configuran en el servicio Ghost para proporcionar los detalles de conexión de MySQL. Una separacion mysql
el volumen se crea para conservar los archivos de almacenamiento de la base de datos.
Compose conecta automáticamente los servicios a una red Docker. Fantasma puede llegar a la ghost_mysql
contenedor utilizando el nombre del servicio como nombre de host. Si desea utilizar una base de datos MySQL no dockerizada existente, puede eliminar el archivo ghost_mysql
definición del servicio y proporcione la dirección IP, el nombre del esquema de la base de datos y las credenciales de usuario del servidor MySQL en su lugar.
Reenvío de tráfico a su contenedor
Su sitio Ghost ahora debería estar en funcionamiento, pero aún está expuesto en el puerto 8080. Si no ejecutará nada más en su host, podría asignar el puerto 80 o 443 para que sea directamente accesible a través del nombre de dominio de su servidor. En otras situaciones, use un proxy inverso como NGINX para reenviar el tráfico de la web a su contenedor Ghost.
Agregue NGINX a su host:
sudo apt update sudo apt install nginx # Allow HTTP/HTTPS traffic through the firewall sudo ufw allow 80 sudo ufw allow 443
Defina un host NGINX para su sitio en /etc/nginx/sites-available/ghost.example.com
:
server { server_name ghost.example.com; index index.html; access_log /var/log/nginx/ghost_access.log error_log /var/log/nginx/ghost_error.log error; location / { proxy_pass http://127.0.0.1:8080; proxy_redirect off; proxy_set_header Host $http_host; proxy_set_header X-Original-IP $remote_addr; } }
Este archivo configura NGINX para reenviar tráfico a ghost.example.com
hasta el puerto 8080 en adelante localhost
, que anteriormente estaba vinculado a su contenedor Ghost. Habilite el nuevo archivo de configuración conectándolo a NGINX sites-enabled
directorio:
sudo ln -s /etc/nginx/sites-available/ghost.example.com /etc/nginx/sites-enabled/ghost.example.com
Reinicie NGINX para aplicar los cambios:
sudo service nginx restart
Ahora puede configurar SSL con el servicio gratuito Let's Encrypt. Agregue el Certbot de Let's Encrypt para automatizar la emisión y renovación de certificados:
sudo apt install certbot
Use Certbot para obtener certificados para su sitio NGINX:
sudo certbot --nginx
Certbot leerá sus sitios NGINX y generará certificados para los suyos server_name
campos de configuración. Reconfigure automáticamente NGINX para servir el certificado con su sitio. Ahora debería poder acceder a su blog Ghost visitando su nombre de dominio a través de HTTPS.
Si bien nos hemos centrado en NGINX en este artículo, existen otras opciones para el tráfico web proxy a través de su contenedor Ghost. Traefik es un competidor importante que tiene soporte de primera clase para Docker. La implementación de una instancia de Traefik le permite configurar el enrutamiento y SSL automático a través de las etiquetas de Docker que habría configurado en su contenedor Ghost.
Gestión de actualizaciones fantasma
Puede actualizar Ghost reemplazando el contenedor Docker de su sitio con uno nuevo que ejecute una versión actualizada de la imagen de Ghost. Dado que el contenido de su sitio se almacena de forma segura en un volumen Docker independiente, se conservará cuando el volumen se vuelva a conectar al nuevo contenedor.
Si está etiquetando una versión principal de la imagen en su docker-compose.yml
, p.ej ghost:4
, puede actualizar a la última versión secundaria ejecutando docker-compose up
con el --pull
bandera:
docker-compose up -d --pull
Esto le indica a Compose que busque cambios en la etiqueta de la imagen y que extraiga una versión actualizada cuando esté disponible. Reemplazará sus contenedores con nuevas instancias utilizando la última versión de la imagen que coincida con la etiqueta.
Cuando desee cambiar la etiqueta que está utilizando, actualice el archivo image
referencia en el tuyo docker-compose.yml
Archivo. Repetir docker-compose up -d
para extraer la imagen y comenzar nuevos contenedores. Por ejemplo, si Ghost v5 se lanza en el futuro, es posible que desee cambiar el suyo docker-compose.yml
a image: ghost:5
para cambiar a la nueva versión principal.
Docker facilita la obtención de actualizaciones de Ghost al extraer la imagen más reciente y reemplazar los contenedores. Sin embargo, aún debe prestar atención a los cambios que está aplicando. Consulte el registro de cambios de Ghost antes de realizar una actualización importante en caso de que necesite realizar pasos adicionales para completar la migración.
Usando fantasma-cli
ghost-cli
está disponible dentro de la imagen de Ghost Docker. Esta utilidad se usa para configurar y mantener Ghost cuando se instala en entornos tradicionales sin contenedores.
Puedes iniciar sesión ghost-cli
a través de Docker usando el ghost
comando con docker exec
. Aquí hay un ejemplo que usa el version
subcomando para revelar la versión de Ghost que está utilizando:
docker exec -it my-ghost-container ghost version
Aunque muchos ghost-cli
los componentes funcionarán, algunos no son compatibles con entornos dockerizados. Comandos como install
, setup
, update
, Y uninstall
se rompen, no tienen sentido o son contrarios a las mejores prácticas cuando se usan con la imagen de Ghost Docker. Ghost y todas sus dependencias están integrados en la imagen y no es necesario "instalarlos"; las actualizaciones deben aplicarse iniciando un nuevo contenedor, como se muestra arriba.
Resumen
Ghost es una plataforma de blogs moderna que ofrece un panel de control limpio, contenido avanzado enriquecido y capacidades de creación de temas, y soporte de personalización. El uso de Docker para alojar Ghost simplifica el proceso de configuración, reduce la cantidad de paquetes de sistema operativo necesarios y ayuda a que su sitio sea más portátil en todos los entornos.
Una vez que su blog dockerizado esté en funcionamiento, use la documentación de desarrollo estándar de Ghost para administrar su sitio y su contenido. Puede configurar suscripciones, boletines, temas personalizados e integraciones de API utilizando las funciones integradas de la plataforma.
Descubre más contenido