Hugo Site Example:

Introduction
This guide is not all inclusive. RTFM. Hugo is a static site generator, converting your .md text files, and a chosen theme into a modern looking website (like this one). There are a staggering number of themes to give you the look and feel that your site needs.

Everything Up Front
It all starts with the hugo.yaml file (you can use .toml too, but that’s beyond my expertise, consult the hugo documentation). Here is the configuration for this site:
hugo.yaml
baseURL: https://nobodyhome.dev/
languageCode: en-us
title: Nobody's Home
theme: ["PaperMod"]
enableRobotsTXT: true
buildDrafts: false
buildFuture: false
ShowReadingTime: true
ShowCodeCopyButtons: true
UseHugoToc: true
minify:
disableXML: true
minifyOutput: true
menu:
main:
- identifier: search
name: Search
url: /search/
weight: 1
- identifier: Tags
name: Tags
url: /tags/
weight: 2
- identifier: Posts
name: Posts
url: /posts/
weight: 3
params:
title: nobodyhome.dev
description: "Documentation and lessons learned from my homelab services."
author: welcome-welcome-2themachine
DateFormat: "January 2, 2006"
assets:
favicon: "/img/favicon.ico"
ShowBreadCrumbs: true
ShowPostNavLinks: true
profileMode:
enabled: true
title: Nobody's Home
subtitle: "Documentation and lessons learned from my homelab services."
buttons:
- name: Posts
url: /posts/
style: primary
- name: Search
url: /search/
style: primary
- name: Tags
url: /tags/
style: primary
imageUrl: "https://avatars.githubusercontent.com/u/11509172?v=4"
#imageUrl: "/assets/iamroot.png"
imageTitle: "I'm Root"
imageWidth: 300
imageHeight: 300
socialIcons:
- name: "Github"
url: "https://github.com/welcome-2themachine"
outputs:
home:
- HTML
- RSS
- JSON # necessary for search
Directory Structure
Here’s how everything is stored in the hugo directory. The hugo.yaml file resides in the root directory:
├──hugo.yaml #This is the yaml file above
├──README.md
├──archetypes
├──content
│ └──Posts #this is where your posts go
| └──posts.md
| └──search.md
├──PaperMod
├──public
│ ├──[DO NOT TOUCH THIS - HUGO GENERATED]
├──static
│ ├──assets #this is where I'm storing the images for my posts
│ │ ├──[A FOLDER PER POST WITH IMAGES]
│ └──img
└──themes
└──PaperMod
Breaking It Down
That was a dump of information, so here’s the context and some basics.
Getting Started
- Set up the project with
hugo new project PROJECT-NAME - Get the site up and running:
hugo serve. - Edit the site and posts to your heart’s content, then finalize it with
hugo build. - Move the site contents from the
publicfolder to your chosen web hosting service (nginx, apache, caddy, etc).
My workflow
- Build the post using a standard setting for each page:
---
title: "Hugo"
tags: ["web","service"]
author: welcome-2themachine
draft: false
canonicalURL: "https://nobodyhome.dev/posts/hugo"
showToc: true
ShowCodeCopyButtons: true
date: 2026-04-24
---
Build the post:
links: [text to display](link url)
images: 
code snippets using the “`” character, use three to open and close code blocks “```”
Regenerate the site contents:
hugo build --minify --cleanDestinationDir
or
hugo build --minify --cleanDestinationDir -d [DESTINATION DIR]
- Move the contents of the
publicfolder to your hosting service.
Additional Configuration
Search
See above ‘hugo.yaml’ - the search.md file contains the following contents:
---
title: "Search" # in any language you want
layout: "search" # necessary for search
url: "/search"
description: "Find what you're looking for"
summary: "search"
placeholder: "what are you looking for?"
---
Posts
Again, here’s the .md file:
---
title: "Posts"
layout: "archives"
url: "/posts/"
summary: "posts"
---
Conclusion
Hugo is incredibly flexible, and endlessly customizable. This little walkthough barely scratches the surface, but shows how I’ve implemented it onto my website.