Wordpress, mmm... doe mij maar Hugo

Al jaren heb ik dit blog op dit domein tonsnoei.nl, maar ik schrijf niet zo zoveel. Dus er staan maar 5 posts, uhm, nu ja, dit is nummer 6.

Het is niet zo dat ik niet veel schrijf. Onder andere veel code, maar ook veel technische documentatie en instructielijstjes. Die laatste vooral voor mijzelf. Hierin hou ik bij hoe ik tot bepaalde technische oplossingen ben gekomen. Handig om later na te lezen. Bijvoorbeeld als ik zo'n oplossing ergens anders in wil zetten.

Vaak zijn die lijstje leuk om te delen met anderen. Dingen waar je soms uren op zit te turen en te zwoegen die je daarna kunt delen met anderen. Als een ander daar wat mee kan is dat natuurlijk super. Ik kan dan ook wat terug doen voor al die anderen die mij dankzij hun artikelen ook hebben geholpen om dingen voor elkaar te krijgen.

Markdown

Maar waarom komt er dan niet van om te posten? Als ik documenteer, schrijf ik met name in Markdown-formaat. Je kunt via plaintext text formatteren op een simpele manier. Hieronder een voorbeeld:

1# Hoofdstuk 1
2Deze tekst is **vetgedrukt**. 
3
4Een lijstje:
5* Item 1
6* Item 2

Die markdown verenigt zich niet zomaar met een WordPress website. Zonder Markdown is het toch wel gedoel om documentatie te formatteren. Je kent het wel. Stukje tekst selecteren, vet maken. Lijstje selecteren en bullets aanzetten e.d. Gedoe. Markdown vindt ik wat dat betreft een stuk makkelijker.

WordPress de deur uit

Tja, Markdown geen match met WordPress. Dan WordPress er maar uit en een blog op basis van Markdown. Na wat rondzoeken kwam ik uit op Hugo. Een tool die op basis van Markdown documenten een website opbouwt. Geen CMS zoals WordPress, maar een commandline tool om je site op te bouwen. Echt iets voor programmeurs, maar wel heel handig. Bovendien host de uiteindelijke website alleen statische content. Geen database meer. Geen caching. Geen plugins. Geen security-patches. Platte HTML, ouderwets maar tegelijkertijd modern en supersnel.

Hugo wat?

Tools zoals Hugo zijn hot. En is Vergelijkbaar met andere bekende tools zoals Jykell en GatsbyJS. Het zijn zogenaamde static site generators. Het maken van posts doe je op je eigen computer. De tool genereert vervolgens een sjiek website die automatisch wordt gepubliceerd. Eigenlijk precies wat je vaak nodig hebt zonder overbodige toeters en bellen van het dynamisch genereren van content.

Met alle DevOps tools van tegenwoordig die ook nog eens gratis beschikbaar zijn is het een goed alternatief voor een full-blown hosted CMS zoals WordPress. Maar, het is dan ook wel echt iets voor developers en niet zonder meer te gebruiken als je niet-technisch bent.

Hoe werkt het?

Het schema hieronder geeft weer hoe het publiceren van een nieuwe post werkt.

Publicatie nieuw blog post met Hugo

  1. Het schrijven van de post in Markdown-formaat. De Markdown wordt opgeslagen binnen het Hugo website project. Op de laptop draait Hugo zodat je live kunt zien wat voor effect wijzigingen in Markdown, hebben op een lokale website-copie,
  2. De Hugo website staat in een Git-folder. Na de wijzigingen kan alles worden gecommit naar de lokale Git.
  3. Als er een update van de website moet worden gedaan pushen we alle wijzigingen naar de master-branch van het tonsnoei.nl website project op Gitlab.com
  4. Ik heb Gitlab CI/CD (Continues Integration / Continues Delivery) zo ingericht dat bij een wijziging op de master-branch de website opnieuw wordt gebouwd met Hugo. Alle Markdown files worden opgepakt en omgezet naar HTML. Feitelijk wordt de website helemaal opnieuw opgebouwd.
  5. Het resultaat uit stap 4 wordt door Gitlab CI/CD via rsync/ssh gepubliceerd naar de NGINX webserver. Een update van de website is dan live op tonsnoei.nl

Ik hoop binnenkort wat meer Hugo-gerelateerde posts te plaatsen. Posts met meer details over deze oplossing via mijn nieuw Hugo-gedreven website!

Tot lezens! :-)