Hace algunos meses hice un tutorial sobre como Desplegar Ghost CMS con Docker en un VPS pero éste estaba configurado con HTTP. Para mejorar la seguridad vamos a explicar como configurar un certificado con Let’s Encrypt en una imagen de Docker y Nginx.
Para ello, utilizaremos como siempre un servidor con Debian 9 recién creado y listo para ser aprovisionado con Ghost.
Instalar y configurar Docker
Lo primero que vamos hacer es instalar Docker en nuestro servidor:
wget -qO- https://get.docker.com/ | sh
Y luego creamos un usuario:
adduser ghost
Y lo añadimos al grupo de Docker:
usermod -aG docker ghost
Instalación y configuración de Nginx
Instalamos Nginx:
apt install nginx
Habilitamos Nginx al arranque:
systemctl enable nginx
systemctl start nginx
Y creamos la configuración de Nginx para Ghost:
nano /etc/nginx/sites-available/ghost.conf
Con el siguiente contenido:
server {
listen 80;
server_name entrebits.org;
location /.well-known/ {
root /var/www/html;
}
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2368;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Activamos la web:
ln -s /etc/nginx/sites-available/ghost.conf /etc/nginx/sites-enabled/ghost.conf
Y reiniciamos Nginx para aplicar la configuración nueva:
systemctl restart nginx
Instalación certificado SSL
Instalamos lo necesario para añadir repositorios:
apt install software-properties-common
Añadimos repositorio y actualizamos:
add-apt-repository ppa:certbot/certbot
apt update
Instalamos lo necesario para generar el certificado:
apt install python-certbot-nginx
Y finalmente, creamos el certificado:
certbot --authenticator webroot --installer nginx
Seleccionaremos nuestro dominio y luego marcaremos la opción «enter a new webroot» e indicaremos /var/www/html
:
Select the webroot for entrebits.org:
--------------------------------------------------------------------
1: Enter a new webroot
--------------------------------------------------------------------
Press 1 [enter] to confirm the selection (press 'c' to cancel):/var/www/html
Desplegar imagen de Ghost con Docker
Primero de todo tendremos que hacer una preparación para Ghost, tendremos que crear un directorio en el home del usuario ghost
que hemos creado anteriormente.
mkdir -p /home/ghost/ghost_volume
Descargamos la última imagen de Ghost:
docker pull ghost:latest
Y finalmente, desplegamos imagen y tendremos en cuenta que en el parámetro de url
, pondremos la dirección con HTTPS:
docker run --name ghost -p 127.0.0.1:2368:2368 -e url=https://entrebits.org -v /home/ghost/ghost_volume/content:/var/lib/ghost/content --restart=always -d ghost:latest
Y ya tendremos Docker bajo SSL:

¡Oh no! Es una captura de Windows! 🙁
Conclusión
Como podéis ver, al final lo que hemos desplegado en nuestro servidor es un Docker con una imagen de Ghost que nos evitará pelearnos con NodeJS -si, lo odio mucho- y por otro lado tendremos un Nginx trabajando que hará de proxy y que además irá renovando el certificado SSL para que Ghost siempre sea seguro.
Comentarios