Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Build status Test coverage

What is this?

Rtfblog is a blog software that powers my blog, written in Go. Its primary purpose is to serve my own needs, but I was writing it with making it available to others in mind.

When I started it, this was my first sizeable piece of Go code (you can certainly tell that if you look at early commits!), so I was a baby gopher:


Can I use it?

Yes. But I can't promise it would be easy at this point. You should be able to build without problems, but installing and running will require reading some deployment code. You will need a physical server or a VPS to run it. I have only tried running it on Linux, but in theory it should run everywhere where Go runs.


Build instructions on Ubuntu 14.04 (older versions might differ a bit):

  • $ cat scripts/dev-packages.txt | xargs sudo apt-get install -y
    • Note: make sure your $GOPATH and $GOBIN are set up (see the docs)
  • Node JS (you will need to use or follow these instructions, it doesn't work with the one provided by the package manager)
    • Note: make sure node/bin/ dir is in PATH, build scripts assume that
  • $ npm install -g grunt-cli bower browserify
  • $ make
    • Note: don't get surprised when make will take a lot of time and network activity on the first run, it's downloading dependencies.


You will need goose for DB migration. Read to get an overview of how I install it on my server, you would need to do essentially the same. Get it at:

go get

You will need go-bindata to build embedded resources. Get it at:

go get -u



Currently rtfblog supports PostgreSQL and SQLite. It ships with an empty default.db SQLite database for immediate use.

Here is a useful quick start primer on how to configure postgres for the first time.

Config file

The server is meant to start and run without any configuration whatsoever. Currently that is not fully achieved, since the server requires at least a DB connection being configured. But it should at least start and serve the static content.

The sample-server.conf should suit your needs with few simple modifications. The server is looking for config in these locations, in this order:

  • /etc/rtfblogrc
  • $HOME/.rtfblogrc
  • ./.rtfblogrc
  • ./server.conf

All the files found will be read, in the order specified above, with options in more specific locations overriding the more generic ones. So if you happen to run a few instances, you can have global stuff configured in one place, leaving local tweaks for each instance.


BSD Simplified, see