Hugo+Codeberg免費架設靜態網站的使用者指南

包含個人電腦上使用Hugo靜態網站生成器的內容,以及上傳網頁程式碼到Codeberg,使用 Codeberg Pages 建立網站。

所有步驟是免費的,你將會得到一個簡單的個人網站。


1 Hugo&Codeberg Link to heading

Hugo 」是一個由 Go語言撰寫的命令行界面 靜態網站生成器 ,在 Apache License 2.0許可證下。

它可以輸入 Markdown 檔案生成html網頁,用於製作個人網頁。

Codeberg」是一個德國非營利組織,營運 開源軟體開發 和程式碼託管服務。


2 製作網站的步驟 Link to heading

1.首先,使用文字編輯器、可以寫文章輸出MarkDown檔案的筆記軟體,例如:Obsidian。

2.執行 Hugo 命令 生成和預覽網頁。

3.上傳網頁程式碼到Codeberg,使用 Codeberg Pages託管網站。


3 建立開發環境需要的工具 Link to heading

Hugo 支援 Windows、MacOS、Linux 作業系統。 在安裝Hugo之前,你需要文字編輯器和 Git。 我選擇 GNOME Gedit 和一個預裝 Git 的 Linux 發行版,Windows 或 MacOS 需要手動下載 Git


4 安裝 Hugo Link to heading

Linux

1.從 Hugo Github Releases下載 Hugo_extended 版本,在使用者目錄(舉例:/home/user)打開終端機輸入命令:

tar zxvf hugo*.tar.gz

sudo mv hugo /usr/bin

sudo chmod +x /usr/bin/hugo

2.完成安裝後,輸入 “hugo version” 指令檢查 hugo 版本。

hugo version

5 建立 Hugo 網站 Link to heading

1.添加一個新資料夾 (例如:myblog)在使用者目錄,使用這個資料夾作為「Hugo 網站根目錄」,全部的原代碼和文章放在裡面。

2.打開終端機,輸入指令創建新網站: hugo new 它剛會生成 Hugo 網頁所需的基本檔案,把檔案放進 myblog 目錄。

hugo new site myblog

3.進入 myblog 目錄,初始化 Git。

cd myblog

git init

6 安裝 Hugo 主題 Link to heading

1.Hugo 主題官方網站 提供許多主題,不同的主題有不一樣的界面和功能,我選擇 hugo coder 為例。

2.在 Hugo 網站根目錄 myblog 打開終端機,輸入 git submodule 命令下載 hugo coder 到theme 目錄。

bash
git submodule add https://github.com/luizdepra/hugo-coder.git themes/hugo-coder

3.在 myblog 目錄找到 hugo.toml ,打開並編輯它添加設定:

# 使用主題
theme = "hugo-coder" # 就寫 hugo-coder,別亂動。
# 網站域名 (以我的網站為例):
baseURL = 'https://mooncat.codeberg.page'
# 網站語言
languageCode = 'en'
defaultcontentlanguage = "en"
# 網站標題
title = 'Mooncat的個人網站'

[pagination]
pagerSize = 20

[service]

[markup.highlight] # 網站內程式碼的高亮規則
style = "github-dark"

[params]
  author = "Mooncat"
  info = "想了解我的話,就透過這個網站吧。"
  description = "Mooncat 的個人網站"
  avatarurl = "images/avatar.png" # 就是網站首頁那張圖,自己改連結,我建議放在 content/images,然後看你的檔名修改。
  #gravatar = "john.doe@example.com"

  faviconSVG = "images/favicon.png" # 網站小圖示,我也是放在 content/images
  
  since = 2025 # 網站創始年份

  enableTwemoji = true

  colorScheme = "auto"
  hidecolorschemetoggle = false

  # customCSS = ["custom.css"]
  # customSCSS = ["scss/custom.scss"]
  # customJS = ["js/custom.js"]

[taxonomies] # 這裡不要動
  category = "categories"
  series = "series"
  tag = "tags"
  author = "authors"

# Social links
# 這裡要放首頁個人圖片下面那些按鈕,怎麼寫請參考 hugo-coder 的官方文件
[[params.social]]
  name = "RSS"
  icon = "fa-solid fa-rss fa-2x"
  weight = 1
  url = "https://mastodon.social/@mooncat0.rss"
  rel = "alternate"
  type = "application/rss+xml"
[[params.social]]
  name = "Github"
  icon = "fa-brands fa-github fa-2x"
  weight = 2
  url = "https://github.com"

# Menu links
# 這裡能調整網站右上角出現的東西,weight 的數字越大越靠右(手機的話是靠下方) 
# url 就寫你給那個資料夾的命名
[[menu.main]]
  name = "文章"
  weight = 1
  url  = "articles/"
[[menu.main]]
  name = "關於"
  weight = 2
  url = "about/"
[[menu.main]]
  name = "標籤"
  weight = 3
  url = "tags/"
[[menu.main]]
  name = "聯絡我"
  weight = 4
  url = "contact/"
[[menu.main]]
  name = "連結"
  weight = 5
  url = "links/"
[[menu.main]]
  name = "本網站隱私政策"
  weight = 6
  url = "privacy/"
  

7 撰寫 MarkDown 文章 Link to heading

MarkDown 文章要放在 Hugo 網站根目錄 myblog 的 content 資料夾。

1.在 Hugo 網站根目錄 打開終端機輸入指令添加 index.md

hugo new /content/articles/helloworld/index.md

目錄名稱 /articles/helloworld 將變成這個文章的網址,你可以自訂目錄名稱 helloworld,裡面的 index.md 不可以重命名。

2.打開 index.md 開始編輯撰寫內容:

---
title: "我的第一個文章"
date: 2025-10-02T23:40:00+08:00
#lastmod: 2025-10-02 # 最後修改時間
draft: false

# 文章設定
toc: true         # 是否顯示目錄
math: false       # 是否啟用數學公式
code: true        # 是否有程式碼
---

Hello World!

哈囉!

最上面以分隔線圍起來的東西稱為 yaml frontmatter,你們可以自己研究要怎麼寫,分隔線下的 Markdown 文章要怎麼寫,改天我再寫一篇文章講解。


8 在本機預覽網站 Link to heading

在你的電腦上檢查網頁內容。

1.回到 Hugo 網站根目錄 myblog 打開終端機,輸入 hugo server 指令運行本機網站伺服器 。

2.如果終端機顯示 Web Server is available at,意味著網站伺服器正在運行。

3.開啟瀏覽器,輸入 http://localhost:1313 可以看到網站的樣子。

4.在終端機按 CTRL+C 關掉這個測試網站。

5.如果運行指令 hugo 將會生成靜態網站在網站根目錄 myblog。


9 使用 Codeberg Pages 託管靜態網站 Link to heading

1.建立一個公開 repository 命名為 “pages” 在你的帳號。

2.上傳 Hugo 生成的靜態網頁檔案在 “pages” repository

3.訪問網址 https://{codeberg username}.codeberg.page


10 注意事項 Link to heading

建議使用不同瀏覽器去測試,避免你沒發現當使用其他瀏覽器的任何bug。