Looking for a simple git-based blog system. I.E., “git push” and the stuff in the repo turns into some static content at the remote.

I’m thinking something that is triggered by a commit hook or some such, ideally turning markdown into markup, although I could deal with HTML in the repo if necessary.

Considering writing the whole thing myself but figured I’d ask just in case I don’t have to :)

Decided to give Hugo a shot, thanks for all the suggestions!

Found this tutorial that looks pretty good in case anyone else is looking for such a thing:

Use ikiwiki, Hugo or Jekyll together with GitLab pages?…

For self-hosting, yeah, just pushing to your http server and running the generator in post-commit will do the trick.

Using symlinks you can make the flip from previous rendering to current rendering atomic.

@clacke definitely want to go the self-hosted route, preferably using static files for performance, lower overhead, etc.

When you say “the generator”, are you referring to something specific?

@clacke ah I think I got it, thanks for the suggestions!

@jjg The search keyword to start with is probably "static site generator".

One of the oldest, best known examples is Jekyll, written in Ruby. GitHub's GitHub Pages system will auto-build Jekyll-based git repositories on git push and host them on You can even CNAME a domain to them. (This is how I host my personal blog, for instance.)

Many newer options such as Hugo (written in golang), Gatsby (React-based), etc. Newer static page hosts like and Zeit's Now.

@jjg roll your own! it's fun. :)

here's mine (i don't use a commit hook, but it'd be easy enough):

@jjg I'm going with jekyll personally. Had used it on for a long time, but finally grew out of that due to wanting formatting plugins. Workflow is build-test-push, which suits me as I usually want to fix a dozen typos before I push. (Also currently busted.)

@jjg @gemlog Might be a bit more technical than you are looking for, but I use Hugo to deploy my site. It’s just a single statically compiled binary on the server end. I edit my local repository, push to master and a git hook clones the repository, builds it and deploys to /var/www

@jamie @jjg Perfectly straightforward and appropriate to this thread. Hugo and git hooks came up in a related thread.

@jjg I just set up Hugo to push to Netlify and it is exactly this. Lots of nice templates to start from as well

Not really a lot of content yet, but here’s my site for reference:

@jjg Plerd is something like that, except triggered by moving files into a (possibly remote/Dropboxed/etc) directory. Author is pretty responsive, might have some thoughts about git integration.

@jjg I don't know if this could be a component of your system or not. I use something called MDwiki to take markdown pages and render them as HTML. It's entirely client-side (HTML and JS), installation is literally dropping an HTML file on your server.!ind

@jjg It's been pretty easy to deal with so far. And being able to tweak the #golang code if necessary is a plus.

I would be dead in the water fiddling with Wordpress PHP spaghetti.

@h that's where I'm departing from (WP).

So far so good.

@h maybe you can help me out with something that I think might be Go-specific?

Working on the server-side of the deployment and I get:

"Error: Error copying static files: chtimes <private details>, operation not permitted" during the hugo command.

Of course it works with sudo, but that's not cool :)

I've confirmed that the user is in the right group, and that the directory permissions are cool, etc. (cp, mkdir all work) but I'm not sure what "chtimes" is trying to do?

@jjg Should be able to 'touch' though. Baffles me.

@h @jjg That's strange, as Chtimes() basically just does the same thing that touch does. Maybe the filesystem you're running the software on doesn't support utimes(2) system calls?

@vertigo @jjg

It could be a Hugo bug too, if it's fiddling with invalid timestamps for a given filesystem... but that seems highly unlikely.

@vertigo @h

I thought maybe some weird FS thing but sudo works so...had to be permissions?

Anyway I was able to work-around it by telling Hugo to stop messing with timestamps :)

@vertigo @h to find a way to migrate wordpress content without agony 😂

@jjg A database export should be enough, and generate output as markdown or the usual Hugo inout format from that.

@jjg I would personally avoid PHP, the xmlrpc api, and plugins like the pest. A database export should suffice.


@jjg If I'm to guess from this information alone, it's trying to perform something equivalent to a unix 'touch'

@jjg Hey, thanks for that. Been looking for a good tutorial!

@xmanmonk @jjg
I didn't find DO to be a good deal for me, but I have availed myself of some of their tutorials since I left them.

@gemlog @xmanmonk same here, I use a different VPS but still use their tutorials because they are soooo good.

Kind of feel guilty about it 😇

@jjg @gemlog @xmanmonk
Ah. That's what that feeling was - it was kind of vague.
Seriously, I did buy a droplet from them once, but didn't think it was a very good deal compared to other providers.

@jjg The functionality is already in the Open Live Writer (with completely different technology).

Sign in to participate in the conversation

A Fediverse instance for people interested in cooperative and collective projects.