mirror of
https://codeberg.org/cunicu/cunicu.git
synced 2025-09-26 21:01:14 +08:00
doc(website): Tweak configuration sections of website and update Docusaurus
Signed-off-by: Steffen Vogel <post@steffenvogel.de>
This commit is contained in:
@@ -11,13 +11,13 @@ This page describes the ways of configuring the cunīcu daemon (`cunicu daemon`)
|
||||
## Command Line Flags
|
||||
|
||||
Basic options of `cunicu daemon` can be configured by passing command line arguments.
|
||||
A full overview is available in its [manpage](./usage/md/cunicu_daemon.md).
|
||||
A full overview is available in its [manpage](../usage/md/cunicu_daemon.md).
|
||||
|
||||
## Configuration File
|
||||
|
||||
For more advanced setups, a configuration file can be used for a persistent configuration:
|
||||
|
||||
Please have a look at the [example configuration file](./config-reference.md) for a full reference of all available settings.
|
||||
Please have a look at the [example configuration file](./example-advanced.md) for a full reference of all available settings.
|
||||
|
||||
## Environment Variables
|
||||
|
||||
@@ -37,7 +37,7 @@ Setting lists such as `ice.urls` or `backends` can currently not be set via envi
|
||||
|
||||
cunīcu's configuration can also be updated at runtime, elevating the need to restart the daemon to avoid interruption of connectivity.
|
||||
|
||||
Please have a look at the [`cunicu config`](./usage/md/cunicu_config.md) commands.
|
||||
Please have a look at the [`cunicu config`](../usage/md/cunicu_config.md) commands.
|
||||
|
||||
## DNS Auto-configuration
|
||||
|
||||
|
@@ -6,18 +6,16 @@ sidebar_position: 3
|
||||
|
||||
# Advanced Example
|
||||
|
||||
:::info
|
||||
Please also have a look at the [JSON Schema](./schema.md) for a full reference of available options/
|
||||
:::
|
||||
|
||||
The following file contains a full-featured set of cunīcu's options.
|
||||
|
||||
You can find the file at:
|
||||
- In a local installation: `/etc/cunicu/cunicu.advanced.yaml`
|
||||
- In the Git repo: [`etc/cunicu.advanced.yaml`](https://github.com/stv0g/cunicu/blob/master/etc/cunicu.advanced.yaml)
|
||||
|
||||
import ExampleConfig from '../../src/components/ExampleConfig';
|
||||
|
||||
<ExampleConfig />
|
||||
|
||||
## JSON Schema
|
||||
|
||||
There exists also a [JSON Schema](https://json-schema.org/) of cunīcu's configuration file at:
|
||||
|
||||
- https://cunicu.li/schemas/config.yaml
|
||||
|
||||
Here is a rendered version of this schema:
|
||||
|
||||
import ApiSchema from '@theme/ApiSchema';
|
||||
|
||||
<ApiSchema pointer="#/components/schemas/Config" />
|
||||
<ExampleConfig advanced />
|
||||
|
@@ -6,18 +6,12 @@ sidebar_position: 2
|
||||
|
||||
# Simple Example
|
||||
|
||||
The following example contains just the basic settings.
|
||||
|
||||
You can find the file at:
|
||||
- In a local installation: `/etc/cunicu/cunicu.yaml`
|
||||
- In the Git repo: [`etc/cunicu.yaml`](https://github.com/stv0g/cunicu/blob/master/etc/cunicu.yaml)
|
||||
|
||||
import ExampleConfig from '../../src/components/ExampleConfig';
|
||||
|
||||
<ExampleConfig />
|
||||
|
||||
## JSON Schema
|
||||
|
||||
There exists also a [JSON Schema](https://json-schema.org/) of cunīcu's configuration file at:
|
||||
|
||||
- https://cunicu.li/schemas/config.yaml
|
||||
|
||||
Here is a rendered version of this schema:
|
||||
|
||||
import ApiSchema from '@theme/ApiSchema';
|
||||
|
||||
<ApiSchema pointer="#/components/schemas/Config" />
|
||||
<ExampleConfig />
|
@@ -35,3 +35,11 @@ The following settings are automatically assigned if they have not been set befo
|
||||
- **Private Key:** a new random private key will be generated.
|
||||
- **Listen port:** the next free port in the configured listen port range is used (see `wireguard.listen_port_range` setting).
|
||||
- **MTU:** is automatically determined from the endpoint addresses or the system default route.
|
||||
|
||||
## Configuration
|
||||
|
||||
The following settings can be used in the main section of the [configuration file](../config/) or with-in the `interfaces` section to customize settings of an individual interface.
|
||||
|
||||
import ApiSchema from '@theme/ApiSchema';
|
||||
|
||||
<ApiSchema pointer="#/components/schemas/BasicInterfaceSettings" />
|
||||
|
@@ -6,3 +6,11 @@
|
||||
# Config Synchronization
|
||||
|
||||
The config synchronization feature keeps interface configuration provided via configuration files in sync with the kernel.
|
||||
|
||||
## Configuration
|
||||
|
||||
The following settings can be used in the main section of the [configuration file](../config/) or with-in the `interfaces` section to customize settings of an individual interface.
|
||||
|
||||
import ApiSchema from '@theme/ApiSchema';
|
||||
|
||||
<ApiSchema pointer="#/components/schemas/ConfigSyncSettings" />
|
||||
|
@@ -6,3 +6,11 @@
|
||||
# Endpoint Discovery
|
||||
|
||||
The endpoint discovery finds usable WireGuard endpoint addresses for remote peers using [Interactive Connectivity Establishment (ICE)](https://en.wikipedia.org/wiki/Interactive_Connectivity_Establishment).
|
||||
|
||||
## Configuration
|
||||
|
||||
The following settings can be used in the main section of the [configuration file](../config/) or with-in the `interfaces` section to customize settings of an individual interface.
|
||||
|
||||
import ApiSchema from '@theme/ApiSchema';
|
||||
|
||||
<ApiSchema pointer="#/components/schemas/EndpointDiscoverySettings" />
|
||||
|
@@ -9,6 +9,8 @@ The hooks feature allows the user to configure a list of hook functions which ar
|
||||
|
||||
## Configuration
|
||||
|
||||
import ExampleConfig from '../../src/components/ExampleConfig';
|
||||
The following settings can be used in the main section of the [configuration file](../config/) or with-in the `interfaces` section to customize settings of an individual interface.
|
||||
|
||||
<ExampleConfig section="hooks" />
|
||||
import ApiSchema from '@theme/ApiSchema';
|
||||
|
||||
<ApiSchema pointer="#/components/schemas/HooksSettings"/>
|
||||
|
@@ -29,3 +29,11 @@ ff02::2 ip6-allrouters
|
||||
fe80::13a9:c799:cead:4f28 buxfBfaN.wg-local fra-1.wg-local # cunicu: ifname=wg0, ifindex=9, pk=buxfBfaNZI8UFT0cB1aj9YanhbLfxlTfd/hH3DrGaFA=
|
||||
fe80::1fed:fabb:a9f6:d78 ZEki/XKE.wg-local # cunicu: ifname=wg1, ifindex=10, pk=ZEki/XKEsqdjFyURo5Sm+g3vXSKJKpV5WmwWKAQqo2c=
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
The following settings can be used in the main section of the [configuration file](../config/) or with-in the `interfaces` section to customize settings of an individual interface.
|
||||
|
||||
import ApiSchema from '@theme/ApiSchema';
|
||||
|
||||
<ApiSchema pointer="#/components/schemas/HostsSyncSettings" />
|
||||
|
@@ -14,3 +14,11 @@ No other tasks are performed.
|
||||
Paired with other features like the [endpoint discovery](./epdisc.md), [auto configuration](./autocfg.md) or [route synchronization](./rtsync.md), the peer discovery is a cornerstone of a zero-configuration peer-to-peer VPN.
|
||||
|
||||
In addition to community passphrase, peers can be accepted by white- and blacklist filtering.
|
||||
|
||||
## Configuration
|
||||
|
||||
The following settings can be used in the main section of the [configuration file](../config/) or with-in the `interfaces` section to customize settings of an individual interface.
|
||||
|
||||
import ApiSchema from '@theme/ApiSchema';
|
||||
|
||||
<ApiSchema pointer="#/components/schemas/PeerDiscSettings" />
|
||||
|
@@ -12,3 +12,11 @@ This synchronization is bi-directional:
|
||||
- Kernel routes with the peers link-local IP address as next-hop will be added to the Peers _AllowedIPs_ list.
|
||||
|
||||
This rather simple feature allows user to pair cunicu with a software routing daemon like [Bird2](https://bird.network.cz/) while using a single WireGuard interface with multiple peer-to-peer links.
|
||||
|
||||
## Configuration
|
||||
|
||||
The following settings can be used in the main section of the [configuration file](../config/) or with-in the `interfaces` section to customize settings of an individual interface.
|
||||
|
||||
import ApiSchema from '@theme/ApiSchema';
|
||||
|
||||
<ApiSchema pointer="#/components/schemas/RouteSyncSettings" />
|
||||
|
@@ -207,8 +207,9 @@ $defs:
|
||||
- $ref: "#/$defs/RouteSyncSettings"
|
||||
- $ref: "#/$defs/ConfigSyncSettings"
|
||||
- $ref: "#/$defs/HostsSyncSettings"
|
||||
- $ref: "#/$defs/PeerDiscoverySettings"
|
||||
- $ref: "#/$defs/PeerDiscSettings"
|
||||
- $ref: "#/$defs/EndpointDiscoverySettings"
|
||||
- $ref: "#/$defs/HooksSettings"
|
||||
|
||||
BasicInterfaceSettings:
|
||||
title: Basic Interface Settings
|
||||
@@ -251,11 +252,6 @@ $defs:
|
||||
items:
|
||||
$ref: "#/$defs/Address"
|
||||
|
||||
hooks:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/$defs/HookSettings"
|
||||
|
||||
WireGuardInterfaceSettings:
|
||||
title: WireGuard Interface Settings
|
||||
type: object
|
||||
@@ -568,6 +564,14 @@ $defs:
|
||||
$ref: "#/$defs/Duration"
|
||||
default: 2s
|
||||
|
||||
HooksSettings:
|
||||
type: object
|
||||
properties:
|
||||
hooks:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/$defs/HookSettings"
|
||||
|
||||
HookSettings:
|
||||
title: Hook Settings
|
||||
description: |
|
||||
@@ -735,7 +739,7 @@ $defs:
|
||||
examples:
|
||||
- wg-local
|
||||
|
||||
PeerDiscoverySettings:
|
||||
PeerDiscSettings:
|
||||
title: Peer Discovery Settings
|
||||
description: Peer discovery finds new peers within the same community and adds them to the respective interface.
|
||||
type: object
|
||||
|
@@ -78,9 +78,17 @@ module.exports = {
|
||||
// Plugin Options for loading OpenAPI files
|
||||
specs: [
|
||||
{
|
||||
spec: 'openapi/openapi.yaml',
|
||||
spec: "openapi/openapi.yaml",
|
||||
},
|
||||
],
|
||||
theme: {
|
||||
primaryColor: '#d4aa01',
|
||||
options: {
|
||||
showObjectSchemaExamples: true,
|
||||
expandResponses: "all",
|
||||
schemaExpansionLevel: "all",
|
||||
}
|
||||
},
|
||||
},
|
||||
],
|
||||
[
|
||||
|
@@ -15,8 +15,8 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@cmfcmf/docusaurus-search-local": "^1.0.0",
|
||||
"@docusaurus/core": "^2.4.0",
|
||||
"@docusaurus/preset-classic": "^2.4.0",
|
||||
"@docusaurus/core": "^2.4.1",
|
||||
"@docusaurus/preset-classic": "^2.4.1",
|
||||
"@docusaurus/theme-mermaid": "^2.4.1",
|
||||
"@gabrielcsapo/docusaurus-plugin-matomo": "^0.1.2",
|
||||
"@mdx-js/react": "^1.6.22",
|
||||
@@ -48,5 +48,6 @@
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.14"
|
||||
}
|
||||
},
|
||||
"packageManager": "yarn@3.6.1"
|
||||
}
|
||||
|
@@ -4,63 +4,20 @@
|
||||
import React from 'react';
|
||||
import CodeBlock from '@theme/CodeBlock';
|
||||
import ExampleConfigSource from '!!raw-loader!../../../../etc/cunicu.yaml';
|
||||
import ExampleAdvancedConfigSource from '!!raw-loader!../../../../etc/cunicu.advanced.yaml';
|
||||
|
||||
export default function ExampleConfig(props) {
|
||||
let codeProps = {...props};
|
||||
if (!codeProps.language) {
|
||||
codeProps.language = 'yaml';
|
||||
}
|
||||
|
||||
codeProps.title = '/etc/cunicu.yaml';
|
||||
codeProps.language ??= 'yaml';
|
||||
|
||||
let content = ExampleConfigSource;
|
||||
|
||||
if (codeProps.section) {
|
||||
const contentLines = content.split('\n');
|
||||
let commentLines = [];
|
||||
let sectionLines = [];
|
||||
let inSection = false;
|
||||
|
||||
for (let line of contentLines) {
|
||||
let startsSection = false;
|
||||
let endsSection = false;
|
||||
let commentLine = line.startsWith('#');
|
||||
let emptyLine = line.trim() === '';
|
||||
|
||||
let matches = line.match(/^([a-zA-z]+):/);
|
||||
if (matches !== null) {
|
||||
startsSection = matches[1] == codeProps.section;
|
||||
endsSection = matches[1] != codeProps.section;
|
||||
}
|
||||
|
||||
if (commentLine) {
|
||||
inSection = false;
|
||||
commentLines.push(line);
|
||||
}
|
||||
|
||||
if (startsSection) {
|
||||
inSection = true;
|
||||
|
||||
sectionLines.push(...commentLines);
|
||||
commentLines = [];
|
||||
}
|
||||
|
||||
if (endsSection)
|
||||
inSection = false;
|
||||
|
||||
if (emptyLine)
|
||||
commentLines = [];
|
||||
|
||||
if (inSection)
|
||||
sectionLines.push(line);
|
||||
}
|
||||
|
||||
if (sectionLines[sectionLines.length - 1] == '')
|
||||
sectionLines = sectionLines.slice(0, -1);
|
||||
|
||||
content = sectionLines.join('\n');
|
||||
|
||||
codeProps.title = `Section "${codeProps.section}" of ${codeProps.title}`;
|
||||
let content;
|
||||
if (codeProps.advanced) {
|
||||
content = ExampleAdvancedConfigSource;
|
||||
codeProps.title = '/etc/cunicu.advanced.yaml';
|
||||
} else {
|
||||
content = ExampleConfigSource;
|
||||
codeProps.title = '/etc/cunicu.yaml';
|
||||
}
|
||||
|
||||
return <CodeBlock {...codeProps}>{content}</CodeBlock>;
|
||||
|
1
website/static/schemas
Symbolic link
1
website/static/schemas
Symbolic link
@@ -0,0 +1 @@
|
||||
../openapi/
|
21460
website/yarn.lock
21460
website/yarn.lock
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user