Skip to content

Commit eb2957f

Browse files
mazzma12claude
andauthored
fix(docs): repair dead links and fail the build on broken links (#1154)
* fix(docs): repair dead internal links and image paths Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * build(docs): fail the build on broken links Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
1 parent 1f45fa7 commit eb2957f

24 files changed

Lines changed: 31 additions & 37 deletions

crowdsec-docs/docusaurus.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ const config: Config = {
287287
baseUrl: "/",
288288
// Amplify serves `page/index.html` at `page/` and redirects `page` there, so canonical and sitemap URLs must end with a slash.
289289
trailingSlash: true,
290-
onBrokenLinks: "warn",
290+
onBrokenLinks: "throw",
291291
onBrokenMarkdownLinks: "warn",
292292
favicon: "img/crowdsec_no_txt.png",
293293
organizationName: "CrowdSec",

crowdsec-docs/src/sectionMap.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export const SECTION_MAP: Record<string, SectionInfo> = {
3434
},
3535
cscliSidebar: {
3636
label: "Cscli",
37-
introPath: "/docs/cscli/cscli",
37+
introPath: "/docs/next/cscli",
3838
parent: { label: "Security Engine", introPath: "/docs/intro" },
3939
},
4040
sdkSideBar: {

crowdsec-docs/unversioned/blocklists/security_engine.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Install Remediation Component:
2727
- [Unix Firewall](bouncers/firewall.mdx)
2828
- [Nginx](bouncers/nginx.mdx)
2929
- [HAProxy](bouncers/haproxy.mdx)
30-
- [Cloudflare Workers](bouncers/cloudflare-workers.mdx)
30+
- [Cloudflare Workers](../bouncers/cloudflare.mdx)
3131

3232
The above is just a limited selection of the available Remediation Components. To see the complete list, including Third Party options, visit the [Hub](https://hub.crowdsec.net/remediation-components).
3333

crowdsec-docs/unversioned/bouncers/cloudflare-deprecated.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl';
99
import BouncerHeader from "@site/src/components/bouncer-header";
1010

1111
<p align="center">
12-
<img src={useBaseUrl('/img/crowdsec_cloudfare.svg')} width="400" height="300" />
12+
<img src={useBaseUrl('/img/crowdsec_cloudflare.svg')} width="400" height="300" />
1313
</p>
1414

1515
<p align="center">
@@ -20,7 +20,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
2020
<BouncerHeader
2121
title="Cloudflare Bouncer (Deprecated)"
2222
typeLabel="DEPRECATED"
23-
imgSrc="/img/crowdsec_cloudfare.svg"
23+
imgSrc="/img/crowdsec_cloudflare.svg"
2424
description="Syncs CrowdSec decisions with Cloudflare Workers to block or challenge traffic on your zones."
2525
featuresSupport="streammode"
2626
/>

crowdsec-docs/unversioned/bouncers/cloudflare.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ Here's a quick comparative overview:
8585
**Self-Hosted Installer** works best with a **Blocklist Integration Endpoint** — no infrastructure to expose, the Sync Worker pulls decisions directly from CrowdSec.
8686

8787
Using a **self-hosted Security Engine (LAPI)** as the decision source requires the LAPI to be reachable from Cloudflare's network, which means exposing it publicly. If that's a concern:
88-
- **Premium users** can enable [Remediation Sync](/u/console/integrations/intro) on their Console integration — decisions are forwarded from the LAPI without exposing it to the internet.
88+
- **Premium users** can enable [Remediation Sync](/u/console/remediation_sync) on their Console integration — decisions are forwarded from the LAPI without exposing it to the internet.
8989
- Alternatively, use the **CLI Bouncer Daemon** running alongside your LAPI, so the bouncer pulls decisions locally and pushes them to Cloudflare without any inbound exposure.
9090
:::
9191

crowdsec-docs/unversioned/bouncers/envoy.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ with WAF and virtual patching, follow the
4545

4646
1. It is assumed that you already have:
4747
- A working CrowdSec
48-
[Security Engine](/intro) installation. For a Kubernetes install
48+
[Security Engine](/docs/next/intro) installation. For a Kubernetes install
4949
quickstart, refer to
5050
[/u/getting_started/installation/kubernetes](/u/getting_started/installation/kubernetes).
5151
- A working Envoy Gateway installation with the Gateway API CRDs and an

crowdsec-docs/unversioned/bouncers/traefik.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ At the end, you will have:
6060

6161
It is assumed that you already have:
6262

63-
- A working CrowdSec [Security Engine](/intro.mdx) installation. For a
63+
- A working CrowdSec [Security Engine](/docs/next/intro) installation. For a
6464
Kubernetes install quickstart, refer to
6565
[/u/getting_started/installation/kubernetes](/u/getting_started/installation/kubernetes).
6666
- A working Traefik installation in Kubernetes.

crowdsec-docs/unversioned/console/premium_upgrade.mdx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,6 @@ export const personaOptions = [
188188
before: "Community: 1 user only",
189189
after: "Premium: full team"
190190
}}
191-
link="/u/console/organizations/intro"
192191
/>
193192

194193
<FeatureCard
@@ -316,7 +315,7 @@ export const personaOptions = [
316315
metric="15k → 60k IPs"
317316
category="protection"
318317
description="Top 60k most aggressive attackers (up from 3,000 in Community)."
319-
link="/u/console/blocklists/intro"
318+
link="/u/console/blocklists/overview"
320319
/>
321320

322321
<FeatureCard
@@ -427,7 +426,6 @@ export const personaOptions = [
427426
metric="3 seats included"
428427
category="scale"
429428
description="Provide view/edit/admin access to team members or clients. Add seats as your business grows."
430-
link="/u/console/organizations/intro"
431429
/>
432430

433431
<FeatureCard
@@ -451,7 +449,7 @@ export const personaOptions = [
451449
metric="15k → 60k IPs"
452450
category="protection"
453451
description="Access to 60k most aggressive IPs (vs 15k in Community)."
454-
link="/u/console/blocklists/intro"
452+
link="/u/console/blocklists/overview"
455453
/>
456454

457455
<FeatureCard

crowdsec-docs/unversioned/console/premium_upgrade/features_overview.mdx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ Make the best use of the premium features for your needs in: **Scaling, Multi-te
9191
before: "Community: 1 user only",
9292
after: "Premium: full team (5+)"
9393
}}
94-
link="/u/console/organizations/intro"
9594
/>
9695

9796
</DocCardGrid>

crowdsec-docs/unversioned/console/premium_upgrade/optimal_setup.mdx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,6 @@ Create a new organization specifically for your Production environment.
7070

7171
**Community accounts** get **1 extra organization for free** (beyond your Personal Account).
7272

73-
[Learn about Organizations →](/u/console/organizations/intro)
74-
7573
</div>
7674

7775
<div className="border border-solid border-border rounded-lg p-6 bg-card text-left">

0 commit comments

Comments
 (0)