Managing notes with the Gollum wiki
I already wrote about how I took notes in Markdown, render them with Pandoc and keep them in sync with my server via Bitpocket. However, there are several problems with this approach:
- Wherever I am, I need SSH access to my machine and Bitpocket must be installed to keep everything up to date.
- Even the smallest changes require mundane tasks.
- From within a note I cannot reference and jump to other notes.
Obviously, the perfect solution to all my problems would be a web-based wiki with Markdown formatting. A quick search revealed only two serious Markdown-based wikis: Markdoc and Gollum.
Markdoc is for wikis what Jekyll is for blogs: A static site generator for a bunch of Markdown files. The builtin web server is good for viewing the generated HTML pages but nothing else. Because Markdoc does not solve any of the mentioned problems, I took a stab at Gollum.
Gollum was founded by GitHub developers and backs all public GitHub wikis. With this in mind, it is no wonder that each wiki is backed by a Git repository rather than a data base. Thus editing a page, simply requires a Git commit. However for quick edits the builtin web server is much faster.
As with most Ruby programs, you can install Gollum with
gem install gollum
and run it by pointing it to an existing Git repository:
git init .
gollum .
A big advantage compared to my retired setup is a live editing preview
and MathJax support
However, you should be aware that the Markdown processor eats escape characters
and that you have to enclose inline equations in \\(
and \\)
.
To get Gollum (semi-privately) online, I run Gollum locally inside a tmux session and setup nginx as a reverse proxy that forwards outside requests to the Gollum service. That’s definitely not a perfect setup but it works very well for me.
One last word: If you want to serve a statically generated site you could either use Markdoc or Smeagol (way too many puns intended). I hope this will be me last infrastructural change to my “note taking system” for the foreseeable future. Keeping fingers crossed!