Site now powered by hugo

hugo is a static website engine. This site was previously done using b2evolution, but with the exception of supporting user comments, I did not need any of the dynamic overhead. I moved to hugo to eliminate having to moderate comments, manage updates and ward off hacking attempts.

Creating the site was a matter of installing hugo locally

apt-get install hugo python-pygments

and running hugo new site . in a new folder. Then I cloned the vienna theme from github into the themes directory. I also forked the theme in my github account so I can save the modifications I have made. I fixed a problem with the Google+ link, changed a few styles and changed the main image. I also have the entire site directory checked into github, so the themes folder is a nested repository.

I add new content with hugo new post/post_filename.md, where I choose an appropritate name. This creates a new file which I edit using the remarkable markdown editor, editing the fields at the top and adding content at the bottom.

Update 1: I have switched to editing my pages in jEdit (or any editor that provides syntax highlighting for .md files). The preview pane that Remarkable provides does not use the same styling as the final pages, so it is better to edit files in a normal editor, and then upon saving the development web server (see serve.sh, below) reloads the pages and the browser automatically updates. This way you can see directly what your changes will be when deployed.

Update 2: I will often create new pages by copying existing pages and editing them. There is no need to use hugo new post... as you can manually update the front matter (the header at the top of the page in the +++ blocks) as needed.

The site is tested using the Hugo built in local server, started with the serve.sh script:

#!/bin/bash
hugo server -w -D

The -w switch causes the server to watch for file system changes.
The -D switch causes the server to process pages that are marked as draft, which aren’t normally deployed. See front matter docs for more information.

Note that the server watches for file changes, and recompiles and redeploys files as you change them. However, you still need to compile them (compile.sh) before deploying them to the live server (push.sh).

Content is built using a small compile.sh script:

#!/bin/bash
hugo --cleanDestinationDir

The built site is pushed to my host using another script, push.sh:

#!/bin/bash
rsync -e "/usr/bin/ssh" --bwlimit=2000 -av ./public/ user@myhost.com:/home/.../rainshowers.org/

where user@myhost.com is my web host account.

The directory tree looks like this:

├── compile.sh
├── push.sh
├── serve.sh
├── config.toml
├── content
│   └── post
│       ├── hugo_site.md
│       └── ...
└── themes
    ├── main.css
    └── vienna
        ├── static
            ├── css
            │   └── main.css
            ├── images
                └── bg.jpg  # background image