Micron Document

███╗ ██╗███╗ ██╗ ██████╗███╗ ███╗███████╗ ███████╗████████╗ █████╗ ██████╗ ████████╗███████╗██████╗
████╗ ██║████╗ ██║ ██╔════╝████╗ ████║██╔════╝ ██╔════╝╚══██╔══╝██╔══██╗██╔══██╗╚══██╔══╝██╔════╝██╔══██╗
██╔██╗ ██║██╔██╗ ██║ ██║ ██╔████╔██║███████╗ ███████╗ ██║ ███████║██████╔╝ ██║ █████╗ ██████╔╝
██║╚██╗██║██║╚██╗██║ ██║ ██║╚██╔╝██║╚════██║ ╚════██║ ██║ ██╔══██║██╔══██╗ ██║ ██╔══╝ ██╔══██╗
██║ ╚████║██║ ╚████║ ╚██████╗██║ ╚═╝ ██║███████║ ███████║ ██║ ██║ ██║██║ ██║ ██║ ███████╗██║ ██║
╚═╝ ╚═══╝╚═╝ ╚═══╝ ╚═════╝╚═╝ ╚═╝╚══════╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝

This guide walks through the full setup flow for turning this repository into your own NomadNet site.

It covers:

- Cloning the project
- Changing theme and shared settings
- Creating your own content pages
- Deploying
- manually
- automatically with Forgejo

1. Clone the project

Clone this repository to the machine where you want to work on content:

bash
git clone https://code.carstenboll.dk/Carsten/NomadNet_CMS_Starter.git
cd NomadNet_CMS_Starter

You can also download a zipped version of the repo from the Reticulum Denmark node.

Create your own remote if this will become your own project:

bash
git remote rename origin upstream
# Add your own remote here, for example:
# git remote add origin <your-repo-url>

2. Understand the project layout

You will work mainly in these folders:

- content/: create pages using markdown
- system/config/: edit site-level settings (theme, navigation)
- system/templates/: edit page and fragment templates
- assets/: where you place static assets like images

3. Edit site theme and shared variables

Start with system/config/site_theme.py.

This file controls site-wide values such as:

- site name and tagline
- colors and visual defaults
- shared header/footer text
- other presentation values used by templates

Also review navigation in system/config/navigation.yaml once you are ready to expose new pages in the menu.

4. Create a content page

Create a Markdown file in content/, for example:

content/about.md

Use frontmatter like:

md
---
template: default
title: About
slug: about
route: content/about.mu
summary: About this node
---
Write your page content here using markdown and directives.


5. Add page to the navigation

If you want a page in the main menu, add it to system/config/navigation.yaml.

If you do not add it there, it can still exist and be reachable by direct path.

6. Deployment

There are two ways to deploy a site built with the NN CMS Starter:

1. Manually by running a deploy script directly on the target server
2. Automatically by using the included forgejo-based CI/CD workflow

The automatic flow is the one I use to deploy this starter site, and you may have to edit it to suit your needs, although I've tried to make it configurable using secrets and variables.

Both of these options assume that you use either NomadNet or RNS Page Node to host a node, and that you've set up a service which makes this happen.

6.1 Manual deployment

Use this when you want to deploy directly from the target server.

1. Ensure the deploy script is executable:

bash
chmod +x .forgejo/scripts/deploy.sh

2. Run it from the repo checkout on your server:

bash
./.forgejo/scripts/deploy.sh

By default, the script uses:

- SERVICE=reticulum.service
- TARGET_DIR=$HOME/.nomadnetwork/storage/pages
- FILES_DIR=$HOME/.nomadnetwork/storage/files

You can override those for one run:

bash
SERVICE=reticulum.service
TARGET_DIR="$HOME/.nomadnetwork/storage/pages"
FILES_DIR="$HOME/.nomadnetwork/storage/files"
./.forgejo/scripts/deploy.sh

6.2 Set up Forgejo-based deployment flow

Use this when you want to set up automatic deployment on pushes to main.

1. Keep .forgejo/workflows/deploy.yml in your repo.
2. In Forgejo repo settings, add secrets:
- DEPLOY_SSH_KEY
- DEPLOY_HOST
- DEPLOY_USER
3. Add variables (optional, only if you want to override deploy defaults):
- SERVICE
- TARGET_DIR
- FILES_DIR
- ARCHIVE_TARGET_DIR
4. Push or merge to main

What happens on each push to main:

- Python sources are compiled as a quick test
- archive upload runs only if ARCHIVE_TARGET_DIR is set
- deploy script is executed remotely over SSH

Current archive behavior:

- filename is fixed as NomadNet_CMS_Starter.zip
- if a file with that name already exists in ARCHIVE_TARGET_DIR, it is replaced

8. Verify that deployment worked

After deployment, check:

- Pages render under your expected NomadNet routes
- Newly created pages are reachable
- Downloads appear from your NomadNet storage/files location
- Service is running:

bash
systemctl status yourservice.service




NomadNet CMS Starter - A reusable NomadNet site starter built from Markdown and Micron.

Page last updated 03/06/2026 13:36