Ready to jump in? Follow these steps to get the Gardener documentation running locally:
For the Docker-based preview (recommended):
- Docker installed and running.
For local development (make dev, make local-preview):
-
Node.js v24 (matches the version used in CI and the Docker image).
-
pnpm β enable it via Corepack (bundled with Node):
corepack enableCorepack picks up the pinned pnpm version from
package.jsonautomatically.
- Build and run a Docker container:
make docker-preview- Visit http://localhost:5173 in your browser! π
The Gardener documentation uses a distributed documentation model where content is gathered from multiple repositories into hugo/content/ by a scheduled CI job (docforge). The aggregated tree is committed to master, so local builds and PRs work against hugo/content/ directly without running docforge.
All content lives in the committed hugo/content/ tree. Every markdown file carries exactly one frontmatter marker that tells you who owns it:
-
local: trueβ locally maintained. Edit these files directly here ingardener/documentation.hugo/content/blog/- Blog postshugo/content/community/- Community-related contenthugo/content/about/- About pageshugo/content/index.md- Landing pagehugo/content/public/- Static assets (favicon, logos, og-image); not markdown, so no marker
-
managed: trueβ aggregated from an upstream repository. Do not edit here. The nightly aggregation run overwrites these files, so any local change is silently lost. Thegithub_repo/github_subdirfrontmatter fields point at the upstream source; open your PR there instead. A CI check (enforce-managed-files) blocks PRs that touchmanaged: truefiles.
Managed content is pulled from upstream repositories into hugo/content/ by a
scheduled CI job and committed to master. The structure of what gets
aggregated is defined in the .docforge/*.yaml manifest files. Contributors do
not run this aggregation locally; it happens in CI.
- To modify local content, edit the
local: truefiles directly inhugo/content/ - Content changes are reflected immediately when using
make dev
- Create new blog posts in
hugo/content/blog/YEAR/MONTH/your-post.md - Include front matter at the top of your file:
--- local: true title: Your Awesome Blog Post description: "A brief description of your post" date: 2025-06-24 authors: - name: Your Name email: your.email@example.com ---
Gardener documentation pulls content from multiple repositories. Key remote sources include:
gardener/gardener: Core Gardener documentationgardener/dashboard: Dashboard documentationgardener/gardenctl-v2: CLI documentation
To modify these, submit changes to their respective repositories.
make dev- Start the development server with live reloadingmake docker-preview- Build and run the preview in a Docker containermake local-preview- Build and run the preview locally