Ir al contenido
  1. Archivo/

BSSG: Crea sitios estáticos en Bash de forma simple y rápida

·4 mins·
Software Blog Programas Bash
Tabla de contenido

BSSG es un generador de sitios estáticos escrito en Bash. Convierte artículos o páginas redactadas en Markdown en archivos HTML estáticos, con soporte para RSS, mapas del sitio, etiquetas, archivos y más de 50 temas CSS que se pueden cambiar fácilmente sin romper la estructura del sitio.

En sus ultimas versiones también se ha añadido soporte para múltiples autores, un editor para las publicaciones, un servidor local para desarrollo y poder previsualizar nuestro sitio web, etc.

BSSG es extremadamente simple y fácil de usar, permitiéndote tener un blog en funcionamiento en cuestión de minutos.

Lo que hace especial a BSSG es la facilidad con la que puedes cambiar de tema sin complicaciones.

Este proyecto es el resultado de más de 10 años de trabajo de su creador, Stefano Marinelli, y genera sitios que alcanzan puntuaciones muy altas en accesibilidad y velocidad.

Características destacadas
#

  • Portabilidad: Utiliza herramientas nativas del sistema operativo (por ejemplo, md5sum en Linux o md5 en OpenBSD y NetBSD).

  • Temas simples: Los temas son únicamente archivos CSS, lo que mantiene inalterable la estructura del sitio y facilita la creación o cambio de temas. Hay más de 50 disponibles, que puedes ver aquí.

  • Funciones esenciales: Soporte para feeds RSS, sitemap.xml, etiquetas OpenGraph (para compartir en redes sociales), e internacionalización (el blog puede estar en otros idiomas, aunque no es multilingüe).

  • Script de copia de seguridad y restauración: Solo copia archivos esenciales como la configuración, publicaciones y páginas.

  • Dependencias mínimas.

  • Compatibilidad con Markdown: Admite CommonMark, Pandoc y markdown.pl.

  • Imágenes destacadas.

  • Integración opcional con GNU Parallel: Acelera la construcción de sitios con muchas publicaciones.

  • Alta accesibilidad y rendimiento: Sitios rápidos y accesibles de forma predeterminada.

  • Licencia BSD: Código abierto bajo una licencia muy permisiva.

Además, experimentalmente, BSSG cuenta con una interfaz de administración básica (basada en Node Express), que incluye un editor Markdown y permite programar publicaciones, generando archivos y ejecutando el generador en el momento adecuado.


Requisitos
#

Para utilizar BSSG necesitarás:

  • Bash

  • Un procesador de Markdown: cmark (por defecto y recomendado), pandoc o markdown.pl (configurable mediante MARKDOWN_PROCESSOR en config.sh.local)

  • Utilidades estándar de Unix (awk, sed, grep, find, date, entre otras)

  • (Opcional) GNU parallel para construcciones más rápidas

Si vas a hacer uso del servidor es necesario instalar socat

Instalación
#

El proceso de instalación es muy sencillo:

Clona el repositorio de BSSG
#

git clone https://brew.bsd.cafe/stefano/BSSG.git
cd BSSG

Inicializa el directorio de tu sitio
#

./bssg.sh init /ruta/hacia/tu/sitio/web

Este comando creará un nuevo directorio para tu sitio web con la estructura necesaria (src, pages, drafts, static) y el archivo de configuración config.sh.local. El script te preguntará si deseas configurar automáticamente los scripts para trabajar con tu nuevo sitio.

Si optas por separar el sitio de los scripts principales (opción recomendada), toda la configuración se realizará en /ruta/hacia/tu/sitio/web/config.sh.local.

Crea tu primera publicación
#

Para crear una nueva entrada en tu blog:

./bssg.sh post

Salida de ejemplo:

[SUCCESS] Default configuration loaded from config.sh
[SUCCESS] Local configuration loaded from config.sh.local
[INFO] Loading locale: es from locales/es.sh
[INFO] Expanding tilde (~) in configuration paths...
Central configuration loaded via config_loader.sh
Starting interactive post creation...
Enter post title:

Si no configuraste los scripts automáticamente en el paso anterior, debes indicar manualmente el archivo de configuración:

./bssg.sh post --config /ruta/hacia/tu/sitio/web/config.sh.local
También puedes crear manualmente un archivo .md en la carpeta /src utilizando tu editor de texto favorito. Recuerda mantener la estructura BSSG.

Si prefieres utilizar una interfaz gráfica en vez de la terminal, simplemente abre el archivo bssg-editor.html en tu navegador web favorito, rellena los metadatos de la publicación en la barra lateral y comienza a escribir en el editor.

A medida que vas escribiendo puedes guardar el trabajo y una vez finalizada la entrada puedes exportar el archivo markdown con el formato adecuado para BSSG.


Construye tu sitio
#

Una vez tengas tus publicaciones listas:

./bssg.sh build

Salida:

[SUCCESS] Default configuration loaded from config.sh
[SUCCESS] Local configuration loaded from config.sh.local
[INFO] Loading locale: es from locales/es.sh
[INFO] Expanding tilde (~) in configuration paths...
Central configuration loaded via config_loader.sh
Parsing build-specific arguments...
Invoking build process (scripts/build/main.sh)...
BSSG Build Process - Starting...
Already in project root: /home/carlos/Descargas/bssg/BSSG
Using theme: terminal
Loaded utilities.
Checking dependencies...
GNU parallel found! Using parallel processing.

Recuerda que, si no configuraste los scripts automáticamente, debes indicar la ubicación de la configuración:

./bssg.sh build --config /ruta/hacia/tu/sitio/web/config.sh.local

Visualiza tu sitio localmente
#

En sus ultimas versiones BSSG cuenta con su propio servidor de desarrollo para poder previsualizar nuestro sitio web.

Basta con ejecutar el comando:

./bssg.sh server

Este comando volverá a construir el sitio web y sera accesible desde tu navegador web en el puerto por defecto (8000) http://localhost:8000

También podemos utilizar el modulo de python para levantar un servidor http y previsualizar el contenido

cd /ruta/hacia/tu/sitio/web/
python3 -m http.server 8000

Accede a http://localhost:8000 desde tu navegador favorito.

Captura de pantalla de BSSG funcionando


Esto es solo una pequeña muestra de todo lo que BSSG puede ofrecerte. Cuenta con muchas más funcionalidades, como copias de seguridad automáticas y despliegue de sitios en servidores remotos. Puedes leer más en su documentación oficial.

Espero que te haya gustado, pasa un gran día 🐧