- snapshot: implement weekly ZFS snapshots (Sunday midnight, retain_weekly config) - snapshot: incremental cold replication via zfs send -i; tracks last replicated snapshot in /var/lib/claw-store/last-replicated-snapshot - daemon: write start-time file for uptime reporting; add SIGTERM graceful shutdown - serve: daemon_uptime_secs now reads the start-time file (was hardcoded 0) - serve: validate project names in POST handlers (org/repo slug, no traversal) - serve: Bearer token auth middleware on all POST endpoints via cfg.api_token - config: add optional api_token field (backward compatible, defaults to None) - sync: add SSH timeouts (ConnectTimeout=10, ServerAliveInterval=5) to peer notify - hot/sync/main: replace unwrap() on path-to-str with proper anyhow errors - config/tank.toml: document 10G fabric IP and nightly_at field intent - .gitignore: exclude compiled dashboard assets (claw-store/static/) - Makefile: add build, install, install-systemd, install-dashboard, deploy targets - tests: 29 passing (up from 25); 4 new weekly snapshot tests Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
27 lines
721 B
TOML
27 lines
721 B
TOML
[node]
|
|
name = "tank"
|
|
role = "secondary"
|
|
|
|
[hot]
|
|
path = "/hot/targets"
|
|
max_gb = 300
|
|
stale_hours = 48
|
|
|
|
[warm]
|
|
projects_path = "/slab/projects"
|
|
zfs_dataset = "slab/projects"
|
|
snapshot_retain_hours = 24
|
|
snapshot_retain_days = 7
|
|
snapshot_retain_weeks = 4
|
|
|
|
[replication]
|
|
# 10.10.0.9 is architect-fab-tank — the dedicated 10G fabric link between
|
|
# the two nodes. Intentionally used for replication to maximise bandwidth;
|
|
# architect's primary LAN address is 10.0.0.13.
|
|
send_to_host = "10.10.0.9"
|
|
send_to_user = "osobh"
|
|
cold_dataset_on_peer = "data/archive/tank-projects"
|
|
# nightly_at is reserved for future use; replication schedule is currently
|
|
# controlled by the claw-store-replicate.timer systemd unit.
|
|
nightly_at = "03:30"
|