5.7 KiB
| title | description | published | date | tags | editor | dateCreated |
|---|---|---|---|---|---|---|
| Netgrimoire Documentation | How to create and use Netgrimoire Docs | true | 2026-02-03T02:54:56.444Z | markdown | 2026-02-03T02:54:56.444Z |
Homelab Documentation Structure & Diagram Standards
This document describes the official documentation structure for the homelab Wiki.js instance, including:
- Folder and page layout
- Naming conventions
- How Git fits into the workflow
- How to use draw.io (diagrams.net) for diagrams
- How to ensure documentation is accessible when the lab is down
This page is intended to be a reference and enforcement guide.
Core Principles
- Wiki.js is the editor, Git is the source of truth
- All documentation must be readable without Wiki.js
- Diagrams must be viewable without draw.io
- Folder structure must be predictable and consistent
- Emergency documentation must not depend on the lab being up
Repository Overview
All documentation lives in a single Git repository.
Wiki.js writes Markdown files into this repository automatically.
The repository can be cloned to a laptop or other device for offline access.
Example:
git clone ssh://git@forgejo.example.com/homelab/docs.git
Top-Level Folder Structure
homelab-docs/
├── README.md
├── emergency/
├── infrastructure/
├── storage/
├── services/
├── runbooks/
├── diagrams/
└── assets/
Folder Purpose
| Folder | Purpose |
|---|---|
| README.md | Entry point when the lab is down |
| emergency/ | Recovery procedures and break-glass docs |
| infrastructure/ | Core systems (identity, backups, networking) |
| storage/ | Storage platforms and layouts |
| services/ | Application-specific documentation |
| runbooks/ | Step-by-step operational procedures |
| diagrams/ | All draw.io diagrams and exports |
| assets/ | Images or files used by documentation |
Storage Documentation Structure
storage/
└── core/
├── zfs.md
├── local-drives.md
├── nas.md
└── btrfs.md
Guidelines:
- Each storage technology gets its own page
- Pages describe architecture, layout, and operational notes
- Backup and snapshot policies belong elsewhere
Infrastructure Documentation Structure
infrastructure/
└── backups/
├── zfs-snapshots.md
└── application-backups.md
Guidelines:
- Infrastructure describes cross-cutting systems
- Anything used by multiple hosts or services belongs here
- Backup strategies are infrastructure, not storage
Services Documentation Structure
services/
└── mailcow.md
Guidelines:
- One page per service
- Page should include:
- Purpose
- Architecture
- Volumes
- Backup considerations
- Recovery notes
Emergency Documentation
emergency/
├── bring-up-order.md
├── swarm-recovery.md
├── zfs-import.md
├── network-restore.md
└── identity-break-glass.md
Rules:
Emergency docs must be:
- Text-first
- Copy/paste friendly
- Free of dependencies
These pages should be readable directly from Git.
Naming Conventions (Mandatory)
Folders:
- Lowercase
- No spaces
- Example:
infrastructure/backups
Page filenames:
- Lowercase
- Hyphen-separated
- Example:
zfs-snapshots.md
Page titles:
- Human readable
- Proper case
- Example:
# ZFS Snapshots
draw.io (diagrams.net) Usage
draw.io is used only to create diagrams, never as the sole storage location.
Diagram Storage Layout
diagrams/
├── network/
│ ├── core.drawio
│ ├── core.png
│ └── core.svg
├── docker/
│ ├── swarm-architecture.drawio
│ └── swarm-architecture.png
└── storage/
├── zfs-layout.drawio
└── zfs-layout.png
File Types
| File | Purpose |
|---|---|
| .drawio | Editable source |
| .png | Offline viewing |
| .svg | Zoomable / high quality (optional) |
Every diagram MUST have a PNG export.
Adding a Diagram (Required Workflow)
- Create or edit the diagram in draw.io
- Save the
.drawiofile intodiagrams/<category>/ - Export a
.png(and optional.svg) - Commit all files to Git
If a diagram cannot be viewed without draw.io running, it is not complete.
Embedding Diagrams in Wiki.js Pages
Always embed PNG or SVG, never live editors.
Example:

_Source file: core.drawio_
This ensures:
- Fast rendering
- Offline viewing
- No service dependency
Git Workflow Expectations
Authoring:
- All pages are created and edited in Wiki.js
- Wiki.js commits changes automatically
Offline Access:
- Documentation is read directly from the Git clone
- Markdown and images must be sufficient without Wiki.js
What Not To Do:
- Do not create wiki pages directly in Git
- Do not rename paths outside Wiki.js
- Do not store diagrams only inside draw.io
Lab-Down Access Model
When the lab is unavailable:
- Open the local Git clone
- Read
README.md - Navigate to
emergency/ - View diagrams via
.pngfiles - Execute recovery steps
No services are required.
README.md (Recommended Content)
The root README.md should contain:
- Purpose of the documentation
- Where to start during an outage
- Link list to emergency procedures
- High-level architecture notes
Final Notes
This structure is designed to:
- Scale cleanly
- Survive outages
- Remain readable for years
- Support automation and GitOps workflows
If documentation cannot be read when the lab is down, it is incomplete.
This structure makes that impossible.