Skip to content

Commit 0be1724

Browse files
authored
docs: fix 14 broken links and stale talm anchor across v1 docs (#486)
## What Fixes 14 broken links in the v1 docs tree found by an automated pass: static validation of every `{{% ref %}}` / `{{% relref %}}` shortcode target plus a lychee offline check of raw markdown links. 11 files touched, two logical groups of fixes. **Group 1 — `{{% ref %}}` shortcodes written without a leading slash (8 fixes, 6 files):** A ref written as `ref "docs/v1/foo"` (no leading `/`) is treated by Hugo as *relative to the calling page*, so Hugo resolves it to `docs/v1/docs/v1/foo`, which never exists. The rest of the v1 docs use the absolute form `ref "/docs/v1/foo"`. Normalize the outliers: - `install/providers/hetzner.md` — 2 refs (one also had a stale anchor, see below) - `operations/services/_index.md` — 2 refs - `guides/concepts.md` — 2 refs - `operations/services/monitoring/dashboards.md` — 3 refs - `operations/services/monitoring/alerting.md` — 1 ref - `operations/services/monitoring/logs.md` — 3 refs **Stale anchor inside `hetzner.md`:** the Hetzner install guide linked readers at `talm#1-initialize-cluster-configuration`, but Talm's guide has since grown a new `## 1. Install Dependencies` section ahead of "Initialize Cluster Configuration", which is now `## 2.`. Update the anchor to `#2-initialize-cluster-configuration`. **Group 2 — plain markdown links (6 fixes, 5 files):** - `operations/oidc/enable_oidc.md` → `[Self-Signed Certificates](../self-signed-certificates/)`: resolves to `operations/self-signed-certificates` (one directory above where the file lives). Target file is `operations/oidc/self-signed-certificates.md`, so use `./self-signed-certificates/`. - `operations/oidc/self-signed-certificates.md` → two mirror-image breakages: `../enable_oidc/` and `../users_and_roles/` both point one level too high. Use `./enable_oidc/` and `./users_and_roles/`. - `virtualization/vm-instance.md` → `./DEVELOPMENT.md` is a dangling relative link to a file that does not exist in `content/`. Replace with the real Developer Guide at `/docs/v1/development/`. - `operations/faq/_index.md` → `/docs/operations/troubleshooting/` is missing the `/v1/` segment and points at a non-existent legacy path. Add `/v1/`. - `install/providers/servers-com/_index.md` → `/docs/getting-started/install-cozystack` has the same missing `/v1/` segment. Add `/v1/`. ## Why All 14 are real broken links on the live site right now. None of them produce a Hugo build error (Hugo's default `refLinksErrorLevel` is `warning`, and plain markdown link resolution happens at browser time, not build time), which is why they accumulated unnoticed. Every broken link costs readers trust and routes them to 404s or to wrong pages. ## Verification - Wrote a Python walker that enumerates every `{{% ref %}}`/`{{% relref %}}` target in `content/en/docs/v1/` and tries to resolve it against the filesystem — after this PR it reports **0 missing targets** (down from 8). - Ran `lychee --offline` on `content/en/docs/v1/**/*.md` before and after. False positives for `/img/...` absolute paths and for Hugo-routed absolute paths like `/docs/v1/development/` (where a page exists but lychee does not know Hugo's routing) were filtered manually by cross-checking each finding against the actual filesystem. After the fixes, the remaining lychee "errors" are all confirmed false positives (static asset paths and Hugo-routed pages that do exist). - `hugo` builds cleanly (440 pages, no ref warnings) both before and after. - Every replacement was spot-checked against the real target file existing on disk. ## Out of scope - `lychee` also flagged a large number of `/img/...` absolute image paths as broken, but those are all false positives — `/img/` is a static asset root, Hugo serves it via `static/img/`, and the rendered pages on the live site show the images correctly. - `markdownlint` across the v1 tree surfaced many style-only issues (MD030, MD012, MD033, MD034 bare URLs, MD040 missing code-block language) that are pre-existing and mostly in auto-generated `content/en/docs/v1/applications/*.md` files (which are regenerated from upstream `cozystack/cozystack` READMEs). Those should be fixed in the upstream READMEs, not here. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Normalized internal documentation links and cross-references across multiple guides and reference pages to use consistent, versioned/absolute paths. This improves navigation reliability and prevents broken or ambiguous links in concept, install, operations, and virtualization docs. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
2 parents f1c640d + 7288874 commit 0be1724

6 files changed

Lines changed: 7 additions & 7 deletions

File tree

content/en/docs/v1.2/install/providers/hetzner.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ but has instructions and examples specific to Hetzner.
161161

162162
A bunch of files is now created in the `hetzner-cluster` directory.
163163
To learn more about the role of each file, refer to the
164-
[Talm guide]({{% ref "/docs/v1.2/install/kubernetes/talm#1-initialize-cluster-configuration" %}}).
164+
[Talm guide]({{% ref "/docs/v1.2/install/kubernetes/talm#2-initialize-cluster-configuration" %}}).
165165

166166
1. Edit `values.yaml`, modifying the following values:
167167

content/en/docs/v1.2/install/providers/servers-com/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,4 +231,4 @@ Use [Talm](https://github.com/cozystack/talm) to apply config and install Talos
231231
kubectl get nodes
232232
```
233233

234-
Now follow **Get Started** guide starting from the [**Install Cozystack**](/docs/getting-started/install-cozystack) section, to continue the installation.
234+
Now follow **Get Started** guide starting from the [**Install Cozystack**]({{% ref "/docs/v1.2/getting-started/install-cozystack" %}}) section, to continue the installation.

content/en/docs/v1.2/operations/faq/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ aliases:
99
---
1010

1111
{{% alert title="Troubleshooting" %}}
12-
Troubleshooting advice can be found on our [Troubleshooting Cheatsheet](/docs/operations/troubleshooting/).
12+
Troubleshooting advice can be found on our [Troubleshooting Cheatsheet]({{% ref "/docs/v1.2/operations/troubleshooting" %}}).
1313
{{% /alert %}}
1414

1515

content/en/docs/v1.2/operations/oidc/enable_oidc.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ kubectl patch packages.cozystack.io cozystack.cozystack-platform --type=merge -p
8282
```
8383

8484
{{% alert color="info" %}}
85-
**Optional**: If you want the dashboard to reach Keycloak via the internal cluster network instead of the external ingress, set `keycloakInternalUrl`. This is useful in environments with self-signed certificates or restricted external access. See [Self-Signed Certificates](../self-signed-certificates/) for details.
85+
**Optional**: If you want the dashboard to reach Keycloak via the internal cluster network instead of the external ingress, set `keycloakInternalUrl`. This is useful in environments with self-signed certificates or restricted external access. See [Self-Signed Certificates]({{% ref "/docs/v1.2/operations/oidc/self-signed-certificates" %}}) for details.
8686
{{% /alert %}}
8787

8888
Within one minute, CozyStack will reconcile and create three new `HelmRelease` resources:

content/en/docs/v1.2/operations/oidc/self-signed-certificates.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ This guide explains how to configure Kubernetes API server for OIDC authenticati
1212

1313
## Prerequisites
1414

15-
- Cozystack cluster with OIDC enabled (see [Enable OIDC Server](../enable_oidc/))
15+
- Cozystack cluster with OIDC enabled (see [Enable OIDC Server]({{% ref "/docs/v1.2/operations/oidc/enable_oidc" %}}))
1616
- Talos Linux control plane nodes
1717
- `talosctl` configured for your cluster
1818
- `kubelogin` installed
@@ -184,4 +184,4 @@ kubectl get pods -n kube-system -l component=kube-apiserver \
184184

185185
- **Certificate not found**: Ensure the certificate file path in `extraVolumes` matches the path specified in `oidc-ca-file`.
186186
- **Domain resolution fails**: Verify that `extraHostEntries` is correctly configured on all control plane nodes.
187-
- **Authentication fails**: Check that the user exists in Keycloak and has the required group memberships (see [Users and Roles](../users_and_roles/)).
187+
- **Authentication fails**: Check that the user exists in Keycloak and has the required group memberships (see [Users and Roles]({{% ref "/docs/v1.2/operations/oidc/users_and_roles" %}})).

content/en/docs/v1.2/virtualization/vm-instance.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ Specific characteristics of this series are:
186186
## Development
187187

188188
To get started with customizing or creating your own instancetypes and preferences
189-
see [DEVELOPMENT.md](./DEVELOPMENT.md).
189+
see [Developer Guide]({{% ref "/docs/v1.2/development" %}}).
190190

191191
## Resources
192192

0 commit comments

Comments
 (0)