If you want to generate static websites (like this blog) then Hugo is the package for you. There are several cool things about Hugo, the biggest being performance. It compiles static sites faster than any other static site generator I’ve used.

In the last tutorial, I showed how to set it up and deploy to a small Linux server, and in this article I’ll show you how to set it up for personal development in Pop!_OS. You can generate pages and push them to any static host.

Install Golang

The first thing you’ll need to do, if you haven’t already is install Golang

sudo apt install golang

but you’ll be a few versions behind. I like to have the freshest version of the language, so I just Download Golang and grab the latest archive for Linux. It’s a binary format so you don’t even have to build it.

Extract it with this command:

tar -C /usr/local -xzf [name of archive]

Then add the path to go in your profile:

vi ~/.profile

PATH=$PATH:/usr/local/go/bin

Type in “go version” to verify:

Hugo on Pop!_OS

Install Hugo

Now you’ll need to install Hugo itself. There are a few ways to do it, including using apt, but again I like to have the latest version:

mkdir $HOME/src
cd $HOME/src
git clone https://github.com/gohugoio/hugo.git
cd hugo
go install --tags extended

This will install the latest version of Hugo to your machine. Now you’ll need to add another folder to the path so you can run hugo:

In ~/.profile:

export PATH=$PATH:/home/[Your username]/go

Now you need to test out hugo:

hugo help

It should look something like this:

Hugo on Pop!_OS

Create a New Hugo Site

Now you’ll need to create a new Hugo site:

hugo new site hellohugo

Now you’re going to need a theme:

You can find a good list of Hugo themes here.

Once you find one you like, copy the link the repo. I choose “Hyde” for this example:

cd themes
git clone https://github.com/spf13/hyde

You must then add the following to your config.toml file:

theme = "hyde"

Now create a new post:

hugo new helloworld.md

Your post should look like this:

---
title: "Post"
date: 2020-03-03T22:29:45-08:00
draft: false
---

Hello! This is the first blog post!

Add some content, and make sure to change “draft” to false when you’re ready to publish it.

To test it out:

hugo serve

Hugo on Pop!_OS

And you’re ready to view your blog on localhost:1313:

Hugo on Pop!_OS

All files are generated in /public so when you’re ready to publish run:

hugo

And then all the files in /public will be your new site.

Hugo on Pop!_OS

Enjoy your new blog!

If you have any questions or comments feel free to contact me. Let me know what cool sites you’ve built with Hugo!

Get notified when new tutorials are posted:



Published: Mar 3, 2020 by Jeremy Morgan. Contact me before republishing this content.