What will you need
Creating a GitLab Page
It is as easy as clone an example GitLab Page Hugo example as the base for your own blog or homepage.
- 
Go to https://gitlab.com/pages/hugo and fork the project to your GitLab account

 - 
In your new repository, remove the fork relationship (Settings > General > Advanced > Remove fork relationship)

 - 
Make sure your have the Shared Runners enabled (Settings > CI/CD > Runners)

 - 
Trigger a build to check if everything is OK (Repositories > Files > README.md > Edit, change something in the file and Commit changes)

 - 
Check if a job executed with success (CI / CD > Jobs)

 - 
Check if the page is up and running using the link in Settings > Pages > Access pages
 - 
Rename the project name (Settings > General > Naming, topics, avatar > Project name)
 - 
Rename the repository (Settings > General > Advanced > Change path)

 - 
Check if the page url changed and it’s still working (Settings > Pages > Access pages)
 
Installing Hugo
In my case I’m using Arch Linux and it was as easy as:
yay -S hugo
Setup up your local environment
- Clone your page
 
mkdir ~/www/mypage
cd ~/www/mypage
git clone https://gitlab.com/youruser/youruser.gitlab.io
- Add the public directorie to your gitignore
 
echo "/public" >> .gitignore
- Choose a theme
 
git submodule add https://github.com/rhazdon/hugo-theme-hello-friend-ng.git themes/hello-friend-ng
- Configure your site
 
vim config.toml
baseurl = "https://youruser.gitlab.io/"
title = "My homepage"
DefaultContentLanguage = "en"
theme = "hello-friend-ng"
PygmentsCodeFences = true
PygmentsStyle = "monokai"
copyright = '<a href="https://creativecommons.org/licenses/by-nc/4.0/" target="_blank" rel="noopener">CC BY-NC 4.0</a>'
enableRobotsTXT = false
enableGitInfo = false
enableEmoji     = true
enableMissingTranslationPlaceholders = false
disableRSS     = false
disableSitemap = false
disable404     = false
disableHugoGeneratorInject = false
[permalinks]
  posts = "/posts/:year/:month/:title/"
[author]
  name = "my name"
  avatar = "static/my_avatar.png"
[taxonomies]
  tag      = "tags"
  category = "categories"
[params]
  dateform        = "January 2, 2006"
  dateformShort   = "Jan 2"
  dateformNum     = "2006-01-02"
  dateformNumTime = "2006-01-02 15:04 +0000"
  lastModDisplay = "Modified:"
  disableReadOtherPosts = false
  description = "my description"
  keywords = "homepage, blog"
  images = [""]
  contentTypeName = "posts"
  defaultTheme = "dark"
  showReadingTime = false
  [params.logo]
    logoText     = "$ cd ~"
    logoHomeLink = "/"
    # logoCursorDisabled = true
    logoCursorColor    = "#5e81ac"
    logoCursorAnimate  = "1s"
  [[params.social]]
    name = "email"
    url  = "mailto:me@mymail.com"
  [[params.social]]
    name = "twitter"
    url  = "https://twitter.com/myuser"
[menu]
  [[menu.main]]
    identifier = "whoami"
    name       = "whoami"
    url        = "/page/about"
  [[menu.main]]
    identifier = "posts"
    name       = "posts"
    url        = "posts/"
- Run your new site in http://localhost:1313/
 
hugo server -D
Push your changes to GitLab
cd ~/www/mypage
git add .
git commit
git push
How to create new posts
- Create a new post using Hugo
 
cd ~/www/mypage
hugo new posts/my-first-post.md
- Add your text, and don’t forget to change to ‘draft: false’ after finising
 
vim content/posts/my-first-post.md
---
title: "My first post"
date: 2020-04-13T21:19:55+01:00
draft: false
toc: false
images:
tags:
  - tag1
  - tag2
---
## A header
text
How to create other pages
- Create markdown files in content/page
 
cd ~/www/mypage
mkdir content/page/
vim content/page/about.md
- In you config.toml you can add the page (no need for the .md extension)
 
  [[menu.main]]
    identifier = "about"
    name       = "about"
    url        = "/page/about"
Using your own domain
- 
Add you domain name (Settings > Pages > New Domain)

 - 
Follow the given instructions to add the DNS and Verification records in your domain registrar
 
References
- https://gohugo.io/getting-started/quick-start/
 - https://gohugo.io/hosting-and-deployment/hosting-on-gitlab/
 - https://about.gitlab.com/blog/2016/04/07/gitlab-pages-setup/
 - https://gitlab.com/help/user/project/pages/custom_domains_ssl_tls_certification/index.md
 - https://www.youtube.com/watch?v=TWqh9MtT4Bg