-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathconfig.yaml.example
More file actions
154 lines (139 loc) · 5.35 KB
/
Copy pathconfig.yaml.example
File metadata and controls
154 lines (139 loc) · 5.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# Beacon configuration file
# Copy to config.yaml and adjust as needed.
iatas:
YVR:
name: Vancouver International
lat: 49.1967
lng: -123.1815
# borderFile: borders/yvr.geojson # optional GeoJSON Feature (Polygon/MultiPolygon)
# # for the region border map; path is relative to
# # this file's directory; validated at boot.
YYJ:
name: Victoria International
lat: 48.6469
lng: -123.4260
YYC:
name: Calgary International
lat: 51.1139
lng: -114.0200
YEG:
name: Edmonton International
lat: 53.3097
lng: -113.5797
YOW:
name: Ottawa International
lat: 45.3225
lng: -75.6692
YYZ:
name: Toronto Pearson
lat: 43.6777
lng: -79.6248
regions:
- slug: western-canada
name: Western Canada
display_order: 1
center_lat: 51.0
center_lng: -114.0
zoom_level: 5
iatas: [YVR, YYJ, YYC, YEG]
- slug: eastern-canada
name: Eastern Canada
display_order: 2
center_lat: 45.0
center_lng: -75.0
zoom_level: 5
iatas: [YOW, YYZ]
channel_keys:
# Hashtag channels: Beacon derives the PSK automatically from the tag name.
# secret = SHA256("#tag")[:16], channel_hash = SHA256(secret)[0]
# Hashtag names should be provided without the # prefix.
# Beacon prepends # automatically before deriving the key.
hashtags:
- meshcore
# Explicit keys: provide the channel hash (hex) and key (hex) directly.
# An optional name can be set for display purposes.
keys:
"11":
key: "8b3387e9c5cdea6ac9e5edbaa115cd72"
name: "Public"
# Regional transport scopes for matching TRANSPORT_FLOOD packets.
# Plain names have # prepended automatically (e.g. "bc" → "#bc").
scopes:
- name: bc
- name: "#west"
telemetry:
retention: 672h # 4 weeks
resolution: 1h # store one snapshot per observer per hour
packets:
retention: 720h # 30 days
# Known-route retention. Routes are distilled packet history (the path a packet
# took, hop by hop), so they may outlive packets.retention; there is no required
# relationship between the two.
routes:
# How long a route is kept after it was last observed. Every new observation
# of the same path resets this clock, so routes the mesh still uses never
# expire -- only paths nothing has traveled for this long age out.
retention: 336h # 14 days
# Shorter window for rarely-seen routes: one observed fewer than
# min_observations times in total is dropped once it goes unobserved for
# this long. Must be shorter than retention, or it never applies.
grace: 168h # 7 days
# Lifetime observation count a route must reach to earn the full retention
# window. Below it a route is treated as flood noise -- a path recorded once
# or twice and never confirmed -- and only kept for the grace window. The
# count never resets, so once a route crosses this bar it stays in the
# retention tier for good.
min_observations: 3
websocket:
max_connections_per_ip: 5 # default: 5
# Node staleness, deletion, and clock-drift thresholds.
#nodes:
# stale_threshold: 24h # default: 24h
# delete_after: 720h # default: 30 days, same default as packets.retention
# clock_drift_threshold: 5m # default: 5m
# CORS configuration.
# Controls which origins, methods and headers are allowed for cross-origin requests.
# Defaults to allowing all origins with GET/HEAD/OPTIONS if omitted — appropriate
# for a public read-only API. Restrict allowed_origins if you expose write endpoints.
#cors:
# allowed_origins:
# - "https://app.example.com"
# allowed_methods: [GET, HEAD, OPTIONS, POST]
# allowed_headers: [Accept, Authorization, Content-Type]
# allow_credentials: false
# max_age: 300
# Redis caching layer.
# If REDIS_ADDR is not set, caching is disabled and all reads go directly to PostgreSQL.
# TTLs are specified as duration strings e.g. "30m", "1h", "2h".
# Per-category TTLs override the global ttl. Any category left unset inherits ttl.
cache:
# Global default TTL for all cached responses. Defaults to 1h if not set.
ttl: "1h"
ttls:
# Aggregated stats endpoints (overview, observations, breakdowns, top nodes/observers,
# radio presets, scope stats). Backed by materialized views refreshed hourly.
stats: "1h"
# Mostly-static reference data (IATAs, regions, scopes).
# Only changes when new observers arrive or config is reseeded.
reference: "1h"
# Individual node detail. Also explicitly invalidated on upsert.
nodes: "1h"
# Individual observer detail. Also explicitly invalidated on upsert.
observers: "1h"
# Geographic ingest filter (optional).
# Drop packets from observers outside the specified area at ingest time.
# Country codes are ISO 3166-1 alpha-2 (e.g. CA, US, GB).
# Continent codes: AF (Africa), AN (Antarctica), AS (Asia),
# EU (Europe), NA (North America), OC (Oceania), SA (South America).
# If both are set an IATA passes if it matches either (OR semantics).
# Omit this section entirely to accept packets from all IATAs (default).
#ingest:
# allow_countries: [CA, US]
# allow_continents: [NA]
# Background task intervals.
# Shorter intervals are useful during initial deployment to confirm data is
# flowing. Back off to 1h or more once stable.
#background:
# view_refresh: 1h # default: 1h
# reconfirm: 1h # default: 1h
# cleanup: 1h # default: 1h