Stephen Cochrane, 2025-09-03 |
|
---|
iuno upgrade && retiring gwiki
tldr;
The iuno source code can be found here.
Why
Previously, my website was running on an instance of gwiki . Which, at the time, was a nifty work around to quickly automate updates to my website, blog and wiki.
However… Whenever I would redeploy my website on new hardware, the http server I used would sometimes break due to back words incompatible config changes. This was frustrating, but since it was a rare occurrence, I would just fix it as it came up.
So what changed? Well, I needed an excuse to learn go, and decided it was also the perfect opportunity to rewrite my archaic website backend.
Additionally, the latest plague on the internet is that of AI scrapers used to fuel ML training is what prompted me to finally tackle this project.
So suffice it to say, I wanted to also include some sort of deterrence, Drew wrote a more in depth post on this topic, you can find that here.
Goals
Firstly, iuno should be simple, and lightweight. We don’t need a billion lines of js to show a pretty website, just some well planned html (maybe htmx) and css.
To replace gwiki, this means it needs to do the following:
- Automated build
- Pull changes from upstream only when needed (i.e not spamming
$ git pull
) - Serve content via http
Features
With all that out of the way, lets get into what iuno can do! For now, its pretty bare bones, but it has an excellent foundation that I can build off.
- Automated upstream polling
- any changes pushed to the repository that an iuno instance is watching, are pulled, and the website rebuild
- explicit file sharing (with
-permit
, you can specify what type of files the http server can return)- by default, iuno only returns the following:
html,css,ico,png,gif,pdf
- by default, iuno only returns the following:
- Markdown blog
- this blog was written using this feature, how meta!
- Containerization
- iuno ships with an official alpine image, clocking it at a size of only ~39.3 MB