Ask HN: What's your favorite blogging software? (as of Feb. 2017)

28 points by whitepoplar ↗ HN
Hi HN!

I want to start a blog and I'm trying to figure out what blogging software to use. Here's what I want out of it:

1) Custom domain 2) Free or cheap (I don't mind hosting on a VPS if needed) 3) Can handle a lot of traffic in keeping with #2. 4) Looks great and is pleasurable to use.

Any suggestions for your favorite blogging software? I'm leaning toward self-hosted Ghost, but would appreciate any recommendations. :)

37 comments

[ 4.5 ms ] story [ 102 ms ] thread
WordPress. It's like the iPhone of the blogging software.
Wordpress is more like the 'old outdated android' of blogging software.

Medium is more like the iPhone of blogging.

I've self-hosted wordpress and it's fine, does the job, and there are a million and one free resources as well as paid ones out there. Can be a pain to maintain and there's always a risk of things going sideways with a bad plugin install or upgrade.

If you are OK with self hosting then you are probably going to be OK with Jekyll & hosting on GitHub Pages. That's free, you can use a custom domain, and it's fast. There are a lot of Jekyll themes out there to make it look good too.

Static blogging software called bashblog using free hosting on Github
(comment deleted)
I self-hosted ghost, as you mentioned. I'm happy with it.

I'm tired of WP and it getting hacked a couple of times per year--even on my barebones blog--and I wanted markdown posts. My girlfriend does a lot of the editing and it's gone smoothly.

Site is snappy & simple. I spent 5 or 6 hours coding the template for a new blog and it wasn't very difficult to get it working well in ghost.

Bashblog mentioned in another comment looks cool. https://github.com/cfenollosa/bashblog

I also use self-hosted Ghost. Digital Ocean has a preconfigured droplet that you can use and everything will be setup for you without any extra work on your part.

Ghost's interface for writing is really nice. It get's out of the way so you can worry about writing content. Writing your own custom theme is pretty simple as well. I end up redesigning my own website every year or so.

A static website generator (octopress, middleman, jekyl, hugo... anything goes) + S3 + CloudFront for LetsEncrypt support.

Then you need 1 extra step to automate the publishing/sync to s3 of the generate static pages...

This is the setup I use. The "1 extra step" for me is a tool called s3_website: https://github.com/laurilehmijoki/s3_website

It makes publishing to S3/CloudFront extremely painless, and supports advanced thing like page redirects and Cache-Control settings per file type.

While echoing the "pick a static site generator" advice in the rest of the thread, my actual personal favorite is still:

Write your own!

That's what I did somewhere around 2000 or 2001, some years before I could program my way out of a wet paper bag or had a technical career. I'll probably still be using a variant of the same system[0] long after I have fully obsolesced and retired to the proverbial van down by the river to wait quietly for death.

A simple toolchain that you understand and can maintain in its entirety turns out to be very useful for a long-term writing project, and blogging occupies a sweet spot where you can leverage common tools and libraries (for tasks like templating, lightweight markup, and publishing) without sacrificing much of your understanding of the system as a whole. You may not need much more than some blobs of Markdown and a Makefile.

[0]: https://github.com/brennen/wrt

I can only second that - you'll learn so much on the way, though it's easy to get lost in the details, if you're doing most of the work yourself.

Just start with something dead simple and then build from that - you might make horrible design mistakes, but hey, it's just for fun after all, and it's one hell of a learning process.

I have written a script in Python. This generates all html/css/images from a bunch of markdown files, and I host them on Heroku (which gives quite nice deployment procedure with minimal effort, and costs almost nothing - $7 per month).

And due to my strange requirements, I couldn't use the widely used static page generators. I have a blog about programming, and sometimes I have some source files, data files, some programs - all used in a blog post, which is stored in a markdown file. I wanted to keep them in the same directory as the text file. I also wanted to publish only part of those files. To get there I implemented a couple of things like custom markdown tags, which are converted to proper links to the image files etc. The result is quite nice, I can shuffle the old blog posts to other directories, and the generated output is still the same. I can keep the images, data files next to the blog post, and they don't interfere with each other.

Previously I had all my blogs on Wordpress. That was terrible. Endless upgrades which sometimes destroyed my blog design. Security holes. Endless tries of hacking the page, or guessing the password.

Now I have no password, no hacking attempts (there is nothing to hack, and if someone does - I will redeploy the files from my computer). All posts are in git versioned files. I can edit them locally in Vim. Deployment is as simple as `git push heroku master`.

Can we see? Sounds awesome
Well, that's quite a private project, the code is tangled a little bit, and needs refactoring, which will be a problem due to time shortage.
That does sound like a fun project! Though it has to be said that most of the popular static-site creators will allow custom things to be done with plugins.

I wrote my own static-blog compiler, which reads a tree of markdown files, then spits out posts, archives, tags, etc. As an intermediary form it inserts all the posts into a local SQLite database (which can be trashed and rebuilt when required), which means I can efficiently output tags, etc.

Realistically my generator isn't so different from others, but it does integrate well for my personal use and supports comments - something a lot of static blogs miss. (I literally have a CGI script which writes out comments to flat-files, then these are picked up in the build-process, being fetched via rsync first).

Source:

https://github.com/skx/chronicle2/

Demo:

https://blog.steve.fi/

I have something similar. Although I don't use any database in the middle. I just read the files. I have a cache layer, which is totally useless since I got an SSD drive.

The only problem I have now is generating `similar posts` under each posts, which takes just too much time.

And I have no comments. I used disqus, but didn't like that.

I used to just read all the posts into a big hash, but when you have 1200+ the RAM usage started to get too high. That's when I started sticking them into an SQLite database.

Even if you remove the database post-build, such that each post must be re-parsed and re-added, the reduction of RAM meant things were still very fast on my desktop.

I have only 76 posts, and all of them cached on disk take 3MB, so don't have this problem yet.

However I'm thinking about something else: I'm going to write a blog software with a nice api. It will be storing posts in a database on the server side, and will store them on the local too (as cache) - however the source files will be on disk, versioned by git. And it will send just new versions to server using a local command line utility. I really love publishing with a one liner.

This way I could have fast search, and comments on the server side.

There are definitely different trade-offs to be made on storage, but it would seem that using both a database and a flat-file structure would be the worst of both worlds.

If the database is used to serve the content it must be online, and so you lose one of the big appeals of static-sites: That they are static and can be served trivially.

If you're writing in text-files you need some kind of update-process which might become tricky if you edit past-entries, etc.

I suspect that publishing with one command doesn't really matter too much on technology; in my own case I just use a Makefile:

* Download the comments from the remote server, via rsync.

* Rebuild the blog.

* Upload the generated HTML-site, via rsync.

> And I have no comments.

This is probably a feature.

Gitlab+Jekyll+LetsEncrypt+domain name has been working out great for me. Every part is free except for the domain name. It's easy to use but requires some HTML and CSS learning if you want to stand out.
WordPress is my choice, and it is probably the most popular blogging software in the world.

That said, it isn't blazing fast (although you can get it really fast) and tends to have some security holes.

Easy workarounds: cache the hell out of it, daily incremental backups, update all plugins and framework updates, keep a secure server in general, reduce footprints (wp-admin, rename db prefixes, etc) and simple stuff like not using bloated themes and plugins.

I love WordPress, I've been using it for 11 years now on my main money making website and as per my website speed checker it is faster than 90% of the websites out there.

I've only been hacked once, and that was when that huge XML-RPC attack came out, and that basically got everyone. I was "down" (I took myself down) for about 1 hour, and didn't lose any data.

This fits your exact needs: custom domain, free, can handle a lot of traffic, and is pleasurable to use.

If you want to learn programming sure, write a CMS. If you want to start a blog, install WordPress.

Im wordpress too on wordpress.com

I keep looking at the options - static, self-hosted - and while id like to host my own domain I dont want to support it. The one time i did host my WP own blog I got hacked - so gave up as I dont need the hassle of learning how to support WP

all valid points - I won't say but, so I'll just say: if you really want to be hands off you could consider a "WP hosting company"
I switched from Ghost to Hugo[0], I love versioning. I host the overall on Github static pages.

[0] https://gohugo.io/

I can recommend to use Hugo [0] as static website generator. They have plenty of themes [1] to choose from. You can still adjust it with basic knowledge in HTML/CSS. Afterwards you can chose where to host it. You can use Github Pages [2] for free or pay for a service like DigitalOcean [3]. I wrote a technical cheatsheet [4] on how to setup your own website with these ingredients.

- [0] https://gohugo.io/

- [1] http://themes.gohugo.io/

- [2] https://pages.github.com/

- [3] https://www.digitalocean.com/

- [4] http://www.robinwieruch.de/own-website-in-five-days/

Less is smart nowadays, the main hassle being the database with users & comments, it can really escalate quickly from a security point of view. That said, a minimal, self-hosted, firewalled, closed to users & comments wordpress would do the trick, even using a default theme with almost to none widgets. How do you funnel traffic then? Leverage and redirect to your blog from main and relevant socials / forums, let the giants bear the burden ehehe.
I am currently creating a static CMS with free hosting, custom domain, nice GUI, has backups, and is open to plugin development. If you're interested in being notified when it's ready, send me a message(hanniabu at gmail). I'd also like to hear your feedback to improve.
Right now? Hugo.

It fits all the boxes you're looking for except "Looks great". For that, you'll need a theme - but fortunately Hugo themes are pretty easy to implement given a base HTML theme, or you can use one of the Bootstrap 4-based Hugo themes, which work pretty well and look pretty decent.

IIRC this one works pretty well: http://themes.gohugo.io/bootstrap/

You'll not need a VPS - S3 or Google Cloud Storage will work fine. Having said that, a $5 nginx VPS will also happily handle a Hugo blog even if it's being hit with a Reddit front-page hug of death.

You WILL need to figure out your deployment process, which is a bit more irksome on Hugo than something like Wordpress. But it's not a huge deal.

Github Pages with Jekyll Bootstrap would be a good start, it supports custom domains (http only) after all. It will be quite easy to migrate to some CDN when you have moderate traffic.
I also wrote my own last year. It was fun and a great way to learn some APIs I'd wanted to work with.

I used CouchDB/PouchDB, Mustache.js, JQuery, TinyMCE, and a few other open source tools. I wouldn't say it was necessarily "cheap" since I built it on a $20 a month DigitalOcean server but when considered as an investment in learning it was a huge bargain.

Personally, I like mine a lot better than WordPress. I think it's a lot easier to learn how to use and as far as "Looks Great", well, that's also something that I had to make happen so I went with using a Bootstrap template and while I didn't create anything award winning design wise with it I think it's at least pleasant to look at and usable, and it's easy to customize.

I took mine a step further and set it up to let users create accounts and publish their own stuff there, so you could actually use it to blog if you wanted to.

It's written almost entirely in Javascript so almost all the code is accessible. Check it out. If you want to set up your own I'll zip the code and give it to you with a GPL:

http://ibloc.com

Blogspot (Blogger.com).

1) Supports custom domain

2) Free

3) Can handle traffic (I know a few companies are using blogger.com for their companies News/Blog

4) Any software would require you to figure out how their theme works :)

UI is a bit clunky but it fills my requirements => your #1 + #2 + no maintenance for me

Github pages

- jekyll built in

- markdown supported

- custom domains

- no hosting fees or servers to manage or security updates to patch

- very fast and reliable hosting

- best for last, it's git, works from command line or within github's site GUI

I use 3 Ghost blogs on a single VPS and love it. If you want to skip the hassle of setting things up (lets encrypt, backup, restore etc), you should check out cloudron.io. They have a self-hosted option that runs on pretty much any VPS provider out there.

Edit: also wanted to point out that Ghost is non-profit

Currently I am using Lektor. My plan is to move to my own a custom static generator in the next two years.