mirror of
https://github.com/daeuniverse/dae.git
synced 2025-07-06 16:29:24 +07:00
docs: add guide to separate configuration files (#389)
Co-authored-by: Sumire (菫) <151038614+sumire88@users.noreply.github.com>
This commit is contained in:
123
docs/en/configuration/separate-config.md
Normal file
123
docs/en/configuration/separate-config.md
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
# Separate Configuration Files
|
||||||
|
|
||||||
|
Sometimes you want to break your configuration file into several files. It may be useful in the following cases:
|
||||||
|
|
||||||
|
1. You want to switch nodes via modify the config file using tools like `sed`.
|
||||||
|
2. You copy other's configuration file and you want to overwrite some parts of it.
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
Directory Structure:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# tree /etc/dae
|
||||||
|
/etc/dae
|
||||||
|
├── config.d
|
||||||
|
│ ├── dns.dae
|
||||||
|
│ ├── node.dae
|
||||||
|
│ └── route.dae
|
||||||
|
└── config.dae
|
||||||
|
```
|
||||||
|
|
||||||
|
Config files:
|
||||||
|
|
||||||
|
```jsonc
|
||||||
|
# config.dae
|
||||||
|
|
||||||
|
# load all dae files placed in ./config.d/
|
||||||
|
include {
|
||||||
|
config.d/*.dae
|
||||||
|
}
|
||||||
|
global {
|
||||||
|
tproxy_port: 12345
|
||||||
|
|
||||||
|
log_level: warn
|
||||||
|
|
||||||
|
tcp_check_url: 'http://cp.cloudflare.com'
|
||||||
|
udp_check_dns: 'dns.google.com:53'
|
||||||
|
check_interval: 600s
|
||||||
|
check_tolerance: 50ms
|
||||||
|
|
||||||
|
#lan_interface: eth0
|
||||||
|
wan_interface: eth0
|
||||||
|
allow_insecure: false
|
||||||
|
|
||||||
|
dial_mode: domain
|
||||||
|
disable_waiting_network: false
|
||||||
|
auto_config_kernel_parameter: true
|
||||||
|
sniffing_timeout: 100ms
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```jsonc
|
||||||
|
# dns.dae
|
||||||
|
dns {
|
||||||
|
upstream {
|
||||||
|
alidns: 'udp://dns.alidns.com:53'
|
||||||
|
googledns: 'tcp+udp://dns.google.com:53'
|
||||||
|
}
|
||||||
|
|
||||||
|
routing {
|
||||||
|
request {
|
||||||
|
qname(geosite:category-ads) -> reject
|
||||||
|
qname(geosite:category-ads-all) -> reject
|
||||||
|
fallback: alidns
|
||||||
|
}
|
||||||
|
response {
|
||||||
|
upstream(googledns) -> accept
|
||||||
|
!qname(geosite:cn) && ip(geoip:private) -> googledns
|
||||||
|
fallback: accept
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```jsonc
|
||||||
|
# node.dae
|
||||||
|
node {
|
||||||
|
node1: 'xxx'
|
||||||
|
node2: 'xxx'
|
||||||
|
}
|
||||||
|
|
||||||
|
subscription {
|
||||||
|
my_sub: 'https://www.example.com/subscription/link'
|
||||||
|
}
|
||||||
|
|
||||||
|
group {
|
||||||
|
my_group {
|
||||||
|
filter: subtag(my_sub) && !name(keyword: 'ExpireAt:')
|
||||||
|
policy: min_moving_avg
|
||||||
|
}
|
||||||
|
|
||||||
|
local_group {
|
||||||
|
filter: name(node1, node2)
|
||||||
|
policy: fixed(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```jsonc
|
||||||
|
# route.dae
|
||||||
|
routing {
|
||||||
|
pname(NetworkManager) -> direct
|
||||||
|
dip(224.0.0.0/3, 'ff00::/8') -> direct
|
||||||
|
dip(geoip:private) -> direct
|
||||||
|
|
||||||
|
dip(1.14.5.14) -> direct
|
||||||
|
|
||||||
|
domain(geosite:openai) -> local_group
|
||||||
|
dip(geoip:cn) -> direct
|
||||||
|
domain(geosite:cn) -> direct
|
||||||
|
domain(geosite:category-scholar-cn) -> direct
|
||||||
|
domain(geosite:geolocation-cn) -> direct
|
||||||
|
|
||||||
|
|
||||||
|
fallback: my_group
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Then run `dae` via:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
dae run -c /etc/dae/config.dae
|
||||||
|
```
|
Reference in New Issue
Block a user