ssh’ing into my Digital Ocean droplet has become rather annoying for maintaining this website. Particularly annoying is dealing with images on two different filesystems. In the README (commit 1a0ee5a), I describe the steps I have been doing to publish an article to

I tried implementing this method, but it is very long and requires many modifications to the post-receive hook to get it working on a per-user basis.

Here I outline a way to do this in a more conservative manner.

Installation on development machine

  1. On a development laptop, Fedora, I installed Go and Hugo via
sudo dnf install golang
mkdir -p ~/Build/go
export GOPATH=$HOME/Build/go
go get -v
  1. Clone repository
cd ~/Build/
git clone git://

New workflow for publishing an article

  1. I once again use Hugo to create my article
cd ~/Build/
hugo new post/
  1. Add content, run hugo server, then preview http://localhost:1313 in a browser to determine what needs to be edited. The cool thing about this is you can edit/add a file while the test server is running. You don’t even need to refresh the browser page whenever you save the file!

  2. Run rm -r public/ ; hugo to remove the old and create the new public/ directory on the development machine.

  3. Ship the changes to the production server (DO droplet) with rsync:

rsync -avP --delete --exclude=".well-known" public/

The new article will now show up on the

  1. Finally, commit the new article to GitHub:
git add content/post/
git commit -m "Add article"
git push -u origin master

Much nicer way to go about it. Images and other assets can be more readily copied and modified. I can edit a webpage on the fly before publishing layout-bugs and typos to the world (or, at least to a lesser extent).