[{"content":"","date":"30 August 2026","externalUrl":null,"permalink":"/tags/blowfish/","section":"Tags","summary":"","title":"Blowfish","type":"tags"},{"content":" Building XSAH with Hugo SSG and Blowfish Template # XSAH is my personal website for documenting my technical journey, projects, experiments, and notes.\nThe site is built with Hugo and the Blowfish theme, with Git used for version control and GitHub used for repository hosting. Deployment is handled through GitHub Actions and GitHub Pages.\nThis note documents the initial setup, customization, and deployment of the website.\n1. Installing Hugo # The first step was installing the Extended version of Hugo was chosen because it provides more features and capabilities than the standard version, including additional asset processing features required by themes such as Blowfish.\nHugo Extended was installed and verified with:\n$ hugo version The installed version was:\nhugo v0.165.0 ... extended linux/amd64 A new Hugo site was initialized, followed by moving into its directory:\n$ hugo new site xsah $ cd xsah 2. Initializing Git # Git was used for version control, making it possible to track changes to the website, maintain its history, and safely manage updates over time.\nGit was initialized locally, and the default branch was renamed to main:\n$ git init $ git branch -M main The GitHub repository was added as the remote:\n$ git remote add origin git@github.com:\u0026lt;username\u0026gt;/\u0026lt;repository\u0026gt;.git 3. Adding the Blowfish Theme # Blowfish was added to the project as a Git submodule. Hugo also provides its own module system, which can be used to manage themes and other dependencies.\nFor this project, however, Git submodules were preferred to keep the theme as a separate Git-managed dependency:\n$ git submodule add https://github.com/nunocoracao/blowfish.git themes/blowfish Using a submodule keeps the theme repository separate from the website repository while allowing the project to track a specific theme version.\nThe theme can be updated when needed with:\n$ git submodule update --remote --merge 4. Shallow Clone of the Blowfish Repository # For obtaining the theme source without downloading its complete Git history, a shallow clone can be used:\n$ git clone --depth 1 https://github.com/nunocoracao/blowfish.git This retrieves the current theme with only the latest revision, reducing unnecessary repository history.\nThe required example configuration and content were then used as the starting point for the XSAH website.\n5. Cleaning the Default Configuration # The Blowfish example site contains a large amount of demonstration content and configuration intended to showcase the theme\u0026rsquo;s features.\nFor XSAH, unnecessary example content and multilingual configuration were removed to create a clean and maintainable starting point.\nThe demo content under content/ was removed while preserving the main _index.md file:\n$ find content -mindepth 1 -type f ! -name \u0026#34;_index.md\u0026#34; -delete The example site\u0026rsquo;s content and static files were removed:\n$ rm -rf themes/blowfish/exampleSite/content $ rm -rf themes/blowfish/exampleSite/static Only English is currently used, so the additional language configuration files were removed:\n$ rm config/_default/languages.de.toml $ rm config/_default/languages.es.toml $ rm config/_default/languages.fr.toml $ rm config/_default/languages.it.toml $ rm config/_default/languages.ja.toml $ rm config/_default/languages.pt-br.toml $ rm config/_default/languages.pt-pt.toml $ rm config/_default/languages.zh-cn.toml The corresponding unused menu configurations were removed as well:\n$ rm config/_default/menus.de.toml $ rm config/_default/menus.es.toml $ rm config/_default/menus.fr.toml $ rm config/_default/menus.it.toml $ rm config/_default/menus.ja.toml $ rm config/_default/menus.pt-br.toml $ rm config/_default/menus.pt-pt.toml $ rm config/_default/menus.zh-cn.toml The example site\u0026rsquo;s authors, examples, users, and demo tag content were no longer required:\n$ rm -rf content/authors $ rm -rf content/examples $ rm -rf content/users $ rm -rf content/tags/advanced Unused multilingual taxonomy files were also removed:\n$ rm content/tags/_index.de.md $ rm content/tags/_index.es.md $ rm content/tags/_index.fr.md $ rm content/tags/_index.it.md $ rm content/tags/_index.ja.md $ rm content/tags/_index.pt-br.md $ rm content/tags/_index.pt-pt.md $ rm content/tags/_index.zh-cn.md After each cleanup stage, the site was rebuilt with Hugo to verify that the remaining configuration and content were still valid:\n$ hugo The project was then reduced to a simpler structure focused on the actual website:\n. ├── archetypes/ ├── assets/ ├── config/ ├── content/ ├── static/ ├── themes/ └── hugo.toml The purpose was to remove the unnecessary parts of the Blowfish demo while keeping the core structure required by the XSAH website.\n6. Adding the XSAH Branding # After cleaning the demo content, the remaining Blowfish configuration was adapted to the XSAH project.\nThe site identity is defined in:\n$ nano config/_default/languages.en.toml The original Blowfish title and description were replaced with the XSAH branding:\ntitle = \u0026#34;Xsah\u0026#34; description = \u0026#34;.....\u0026#34; The theme\u0026rsquo;s logo and author information were also adapted to the XSAH identity.\nProject-specific theme settings remain in:\n$ config/_default/params.toml This keeps the customisation separate from the Blowfish theme itself.\n7. Customizing the Homepage # The homepage was configured to use Blowfish\u0026rsquo;s profile layout:\n[homepage] layout = \u0026#34;profile\u0026#34; showRecent = true showRecentItems = 12 showMoreLink = true The homepage content and introduction were then defined in:\n$ nano content/_index.md The page title and description were set to reflect the purpose of XSAH:\ntitle: \u0026#34;Learn. Build. Repeat.\u0026#34; description: \u0026#34;.....\u0026#34; A custom section was added between the profile and recent articles, containing three feature cards for Linux, DevOps, and Cloud.\nRecent articles were enabled through Blowfish\u0026rsquo;s built-in Homepage Layout configuration. The mainSections parameter was set to notes, making the content/notes/ section the source for the homepage\u0026rsquo;s Recent Articles list.\nThe existing Blowfish layout and shortcode mechanisms were reused instead of modifying the theme\u0026rsquo;s core templates.\n8. Creating the First Post # A first Markdown post was created to document the website setup:\n$ hugo new notes/building-xsah.md Hugo uses front matter at the beginning of the Markdown file to define metadata such as the title, date, description, tags, and category.\nFor example:\n--- title: \u0026#34;Building XSAH with Hugo and Blowfish\u0026#34; date: 2026-08-30 description: \u0026#34;.....\u0026#34; tags: - hugo - blowfish - git - github - github-pages categories: - notes --- The website can be previewed locally with:\n$ hugo server The local development server is then available at browser:\nhttp://localhost:1313/ 9. GitHub Actions Deployment # Deployment was automated using GitHub Actions and GitHub Pages.\nA workflow was added under:\n.github/ └── workflows/ └── hugo.yaml The workflow checks out the repository, installs the required Hugo version, builds the site, and deploys the generated files to GitHub Pages. It is based on the default Hugo workflow provided by GitHub:\nLocal changes ↓ git add ↓ git commit ↓ git push ↓ GitHub Actions ↓ Hugo build ↓ GitHub Pages ↓ XSAH website After committing and pushing the workflow, GitHub automatically builds and deploys the site to GitHub Pages whenever changes are pushed to the main branch.\n10. Committing and Pushing the Changes # The repository was connected to GitHub using SSH, allowing changes to be pushed without entering GitHub credentials for every operation.\nAfter completing the configuration, customization, branding, and initial content, the changes were committed and pushed to the main branch:\n$ git status $ git add . $ git commit -m \u0026#34;Set up and customize XSAH website\u0026#34; The changes were then pushed to GitHub:\n$ git push GitHub Actions automatically handled the build and deployment process.\nResult # The original Blowfish demo site was transformed into a clean, minimal XSAH website with a structure focused on Linux, DevOps, Cloud, and hands-on projects.\nThe homepage now presents the XSAH profile, topic cards, and recent notes, while the navigation provides access to the main sections of the site.\nThe project is version-controlled with Git, hosted on GitHub, and automatically built and deployed to GitHub Pages through GitHub Actions.\nThis provides a clean foundation for the next stage: documenting the learning journey, adding hands-on projects, and gradually building the site into a technical knowledge base.\nIf you want to customize template further, see the Advanced Customisation guide.\nStack: Hugo · Blowfish · Git · GitHub · GitHub Actions · GitHub Pages\n","date":"30 August 2026","externalUrl":null,"permalink":"/notes/building-xsah/","section":"Notes","summary":"Building XSAH with Hugo SSG and Blowfish Template # XSAH is my personal website for documenting my technical journey, projects, experiments, and notes.\n","title":"Building XSAH with Hugo and Blowfish","type":"notes"},{"content":"","date":"30 August 2026","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":"","date":"30 August 2026","externalUrl":null,"permalink":"/tags/git/","section":"Tags","summary":"","title":"Git","type":"tags"},{"content":"","date":"30 August 2026","externalUrl":null,"permalink":"/tags/github/","section":"Tags","summary":"","title":"Github","type":"tags"},{"content":"","date":"30 August 2026","externalUrl":null,"permalink":"/tags/github-pages/","section":"Tags","summary":"","title":"Github-Pages","type":"tags"},{"content":"","date":"30 August 2026","externalUrl":null,"permalink":"/tags/hugo/","section":"Tags","summary":"","title":"Hugo","type":"tags"},{"content":"A journey from zero to DevOps engineering, driven by hands-on practice, real-world infrastructure, and continuous learning.\nLinux Systems, administration, networking, and the foundations beneath everything. Explore Linux DevOps Automation, containers, CI/CD, infrastructure, and continuous delivery. Explore DevOps Cloud Cloud infrastructure, platforms, services, and scalable systems. Explore Cloud ","date":"30 August 2026","externalUrl":null,"permalink":"/","section":"Learn. Build. Repeat.","summary":"A journey from zero to DevOps engineering, driven by hands-on practice, real-world infrastructure, and continuous learning.\nLinux Systems, administration, networking, and the foundations beneath everything. Explore Linux DevOps Automation, containers, CI/CD, infrastructure, and continuous delivery. Explore DevOps Cloud Cloud infrastructure, platforms, services, and scalable systems. Explore Cloud ","title":"Learn. Build. Repeat.","type":"page"},{"content":"","date":"30 August 2026","externalUrl":null,"permalink":"/categories/notes/","section":"Categories","summary":"","title":"Notes","type":"categories"},{"content":"","date":"30 August 2026","externalUrl":null,"permalink":"/notes/","section":"Notes","summary":"","title":"Notes","type":"notes"},{"content":"Browse notes by topic and discover related subjects through tags.\n","date":"30 August 2026","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"Browse notes by topic and discover related subjects through tags.\n","title":"Tags","type":"tags"},{"content":"","externalUrl":null,"permalink":"/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/series/","section":"Series","summary":"","title":"Series","type":"series"}]