For a while now I have been thinking in migrating this blog to Hugo (from Ghost), mainly because I wanted save 10 bucks a month that were being spent on my DigitalOcean VPS that I was using to run the website (with Docker + Nginx + Let’s Encrypt SSL). DigitalOcean is great, but I simply lack the time to manage the installation, updating the OS, updating Ghost itself, renewals of the SSL certificate, etc. Those are simple things, but with time, they started to annoy me a bit.
So I finally did it and not only migrated to Hugo, but discovered the amazing services of Netlify. They offers a free account with some nice features like:
Free SSL for those domains (using Let’s Encrypt);
DNS management (easy redirects are a plus here);
There are more features but those are the main ones if you are going to use it with Hugo (or any other static website generator). The interface is very intuitive, modern and complete and there’s also a CLI tool if you want to. In my case, I’m hosting my blog files on a BitBucket repository, which Netlify watches and runs a deploy after every commit to master. Setting up the domain was also very easy, just had to change the nameservers on my registrar and choose to use the Let’s Encrypt SSL (you can use a custom one too). Netlify also provides a tool to test your website and the results I got after the migration were more than satisfying.
Setting up Hugo was incredibly straightforward. There are tons of themes available and installing them is hassle free, even if you choose to use
git submodules (which is kinda necessary if you are using Netlify). I am no frontend developer but I was able to “create” my own theme in a few minutes, forking the great After-Dark theme and customizing the CSS a bit, following the developer instructions.
Porting my previous posts was (mostly) a matter of copying & pasting to new files, following Hugo standards. Netlify made the website much faster and in sync with new technologies like HTTP/2. I was even more impressed when I tried to use Pygments with it and all I had to do was create a
requirements.txt on the root of my repository and add the Python package name inside of it (the build system will download the package for you, like TravisCI for example).
Another service which I can vouch for is Forestry.io, which can give you a free CMS for you static website, with a nice markdown editor and a bunch of other features like post/page creation, website previewing, site configuration, and media management. In fact, I’m writing this post directly via their web interface and it looks great on the WYSIWYG editor. Forestry.io also provides some similar features from Netlify, such as continuous deployment but I have opted to use the latter because they manage my DNS, SSL and have a CDN too.
I highly recommend Hugo + Netlify (and Forestry.io) for anyone who wants a simple, free and easy to setup/manage blog. That combination removes the hassle of having to manage a website and you also don’t need to be an expert to get started.