Ghost + Buster en Windows
Aunque ya tengo otros temas y materiales para publicar, me pareció que lo justo sería publicar primero los pasos que me tomó hacerlo funcionar en Windows 10.
Tomé como punto de partida este tutorial de Stefan Scherer.
Requerimientos
Debemos asegurarnos de tener instalados ciertos programas para poder completar este tutorial:
Descargamos e instalamos Ghost
Descargamos la última version de aquí
Creamos una carpeta llamada ghost y descomprimimos en ella el archivo que acabamos de bajar.
Instalamos las dependencias
cd ghost
npm install --production
Iniciamos Ghost
npm run start
Nos registramos con Ghost
Abrimos un navegador y apuntamos a https://padiazg.github.io/ghost
Creamos una cuenta, pasamos por todos los pasos y llegamos al panel de control, ahí podemos ver el post original y aprender un poco del lenguaje Markdown.
Tenemos blog
Hasta acá tenemos un blog totalmente funcional, que puede funcionar directamente si tuvieramos la infraestructura apropiada.
Hay suficiente documentación y tutoriales de como administrar y publicar en Ghost, por lo que no voy a entrar en esos detalles.
GitHub Pages
Ahora que ya tenemos nuestro blog funcionando, es hora de ocuparnos en publicarlo como páginas estáticas en GitHub.
Vea aquí los detalles básicos. Está demás decir que necesitaremos una cuenta de GitHub.
Usaremos la nomenclatura nombreusuario/nombreusuario.github.io
. El nombre del repositorio debe estar siempre en minúsculas sin importar que el nombre del usuario tenga mayúsculas.
Buster
El repositorio original está abandonado y no funciona correctamente con la versión actual de Ghost, pero encontré este otro en el que están haciendo el esfuerzo de continuar el desarrollo de este proyecto.
El método sugerido en el repositorio pip install git+https://github.com/skosch/buster
no funciona, al menos en mi máquina, por lo que iremos por otro camino.
Adecuamos el path
Buster solo funciona con Python v2.7, por lo que ajustamos nuestro path para que utilice solo esa versión. Colateralmente debemos volver a especificar las carpetas del Git.
En una ventana de comandos (cmd):
set path=C:\Python27\Scripts;C:\Python27;C:\Program Files\Git\bin;C:\Program Files\Git\cmd;C:\Users\pato\AppData\Roaming\npm;C:\Program Files (x86)\GnuWin32\bin;
Debemos cuidar de ajustar las carpetas del path de acuerdo a nuestro caso particular.
Dejamos abierta la ventana de comandos para ejecutae en ella los pasos siguientes
Instalando Buster a mano
Descargamos el repositorio, preferentemente en un directorio diferente al que usamos en los pasos anteriores.
En una linea de comandos
cd \proyectos\python
git clone https://github.com/skosch/buster.git
Parcheamos
Por alguna razón el archivo buster\_version.py tiene rastros de versionado que obviamente hacen que se de un error al tratar de instalar, por cualquier método normal.
Modificamos buster\_version.py para que quede de esta manera:
__version_info__ = (0, 1, 3)
__version__ = '.'.join(map(str, __version_info__))
Instalamos Buster
python setup.py install
Preparamos carpeta estática
Creamos una carpeta static
que usará Buster en la carpeta donde tenemos instalado Ghost, luego sencillamente clonamos nuestro repositorio usando un nombre de carpeta
cd <carpeta de Ghost>
mkdir static
git clone https://usuario:password@github.com/usuario/usuario.github.io.git static
Creamos contenido
A partir de aquí la configuración está completa, ya solo es cuestión de ir creando nuestros artículos y publicarlos.
Exportamos Ghost con Buster
Todas nuestras publicaciones pueden ser exportadas a la carpeta static
por Buster
buster generate --domain=https://padiazg.github.io
buster preview
Podemos apuntar nuestro navegador a http://localhost:9000 y previsualizar como se ve nuestro blog como páginas estáticas.
Ajustamos los enlaces
Antes de poder publicar nuestras páginas a GitHub Pages, debemos hacer ajustas los enlaces. Es uno de los bugs de Buster, supongo.
Este script hará el truco:
set PATH=C:\Program Files (x86)\nodejs\;C:\Python27\Scripts;C:\Python27;C:\Users\pato\AppData\Roaming\npm;C:\Program Files (x86)\GnuWin32\bin;C:\Program Files\Git\bin;C:\Program Files\Git\cmd;
buster generate --domain=http://127.0.0.1:2368
echo "Corrigiendo enlaces a https"
find static -name *.html -type f -exec sed -i -e "s#https://padiazg.github.io#https://padiazg.github.io#g" {} ;
find static -name *.html -type f -exec sed -i -e "s#https://fonts.googleapis.com#https://fonts.googleapis.com#g" {} ;
echo "Corrigiendo algunos posts"
find static -name *.html -type f -exec sed -i -e "s#open https://padiazg.github.io#open https://padiazg.github.io#g" {} ;
find static -name *.html -type f -exec sed -i -e "s#domain=https://padiazg.github.io#domain=https://padiazg.github.io#g" {} ;
find static -name *.html -type f -exec sed -i -e "s#s\#https://padiazg.github.io#s\#https://padiazg.github.io#g" {} ;
echo "Removiendo index.html de los enlaces"
find static -name *.html -type f -exec sed -i -e "s#/#/#g" {} ;
if [%1]==[deploy] goto deploy
buster preview
goto end
:deploy
cd static
echo "Agregando archivos..."
git add -A
echo "Confirmando..."
git commit -m "Update on the website at $(date)"
echo "Enviando a github ..."
git push origin master
cd ..
:end
Este script está basado en el de Alex Ellis. Les recomiendo hechar una ojeado a su blog.
Archivos basura de Sed
La opción -i de Sed genera una copia de seguridad de cada archivo que modifica, y hasta ahora no encuentro una forma de frenar esto.