Commit Graph
35 Commits
Author SHA1 Message Date
windyboy 95ec2350af docs(dns): record mosdns foreign DoH multi-upstream redundancy (W1N-62) 2026-08-13 10:56:40 +08:00
windyboy 3de4beb028 docs: add low-volume mono laser MFP buying guide (2026-08)
Decision tree for occasional B&W laser MFP purchases: Brother L1638W/L1848W
as default, cloud-subscription models as opt-in only, and one-veto checks
for AirPrint, Ethernet, and duplex/ADF needs.
2026-08-13 10:54:29 +08:00
windyboy d54ec71aea docs(dns): record gfw foreign branch DoH change (W1N-62)
Document encrypted DoH upstream for mosdns foreign queries and note that
DoH traffic goes direct to hk2, not via OpenClash proxy.
2026-08-13 10:50:16 +08:00
windyboy 2ffd9f9f9c docs(se5420): align review claim verification with current guide (W1N-63)
Add historical snapshot header (baseline 35577d0), rewrite outdated
"current guide" assertions for post-ffb37a9 revisions, and add a
12-row status table mapping review claims to current §4.3/§11 sections.
2026-08-13 10:50:16 +08:00
windyboy f255785b72 docs(se5420): add review claim verification record (2026-08-10)
Documents which deployment-guide review claims are confirmed by specs,
field read-only checks on gfw, and remaining pre-change evidence needs.
2026-08-13 10:12:06 +08:00
windyboy 2fd354c2a9 docs(dns): record mosdns fallback hardening for AGH outage (W1N-56) 2026-08-12 22:24:54 +08:00
windyboy 82203038f0 docs(dns): record mosdns sequence misconfig found+fixed (W1N-56) 2026-08-12 22:19:20 +08:00
windyboy 096e1ce8b6 docs(dns): correct idle-mosdns premise in alternatives research (W1N-56) 2026-08-12 22:12:32 +08:00
windyboy 8550053287 docs(dns): record Phase 0 verification evidence + final decision alignment (W1N-56) 2026-08-12 22:11:53 +08:00
windyboy e501b93d65 docs(dns): correct gfw/.1 facts (W1N-56)
- hosts/gfw.windy.lan.md: 3 NICs (eth2/VLAN10 ubunt_upg live), mosdns is
  now OpenClash's nameserver (not idle), rewrite VLAN10 Wi-Fi section to
  live-verified state
- docs/lan-dns-architecture.md: mosdns on gfw no longer 闲置; note the
  recommended AGH+.36 companion architecture is still pending review
2026-08-12 22:11:53 +08:00
windyboy 62b8fbb8b7 docs(dns): add LAN DNS architecture research + recommendation (W1N-56) 2026-08-12 22:11:53 +08:00
windyboy efa6cf0899 docs(dns): record agh_ui_access LAN55 allow for Home Assistant (2026-08-12) 2026-08-12 22:11:53 +08:00
windyboy 086740b16e docs: record pdns PDA removal, us4 firewalld ops, LAN DNS alternatives
- runbooks/pdns-health.md: note the legacy powerdns-admin (PDA) orphan was
  removed 2026-08-12 (W1N-59).
- runbooks/ansible-operations.md: document the us4 firewalld reconciliation
  playbook scope (audited public zone only, fail-closed, no reload).
- docs/agents/domain.md: single-context repo layout for domain docs.
- docs/lan-dns-alternatives.md: notes on LAN DNS alternatives.
- .gitignore: exclude local agent-harness config (.agents/ .claude/ .omp/
  .mcp.json WATCHDOG.yml skills-lock.json) from the repo.
2026-08-12 21:16:31 +08:00
windyboy 1f6d028ab5 feat(us4): firewall audit + safe reconciliation playbook, host doc
Add playbooks/us4-firewalld.yml, a narrow reconciliation of the audited us4
public zone: fails closed on drift or unknown allowances, never reloads or
restarts firewalld, and does not manage Docker rules. Requires explicit
apply + provider-console confirmations, backs up the firewalld config and
ruleset, schedules an automatic 15-minute rollback via at, and verifies SSH,
HTTPS routes, containers, Fail2ban jails, and the WireGuard health check before
cancelling rollback. Pins ansible.posix 2.2.2 in requirements.yml.

Also expand hosts/us4.wsvc.info.md with deployment config and a live audit
snapshot (2026-08-12).
2026-08-12 21:16:31 +08:00
windyboy 035587e3bf feat(rustdesk): onboard self-hosted RustDesk server on hk2
Deploy hbbs + hbbr via a safe-by-default Ansible role (playbooks/rustdesk.yml):
with rustdesk_confirm=false it only reports whether compose.yml matches live
state and refuses to recreate the stack; with rustdesk_confirm=true it deploys
and recreates. The relay assert rejects the known-bad hk2.wsvc.info hostname.

Add health profiles rustdesk (hbbs/hbbr health, relay DNS) and hk2aux (co-located
traefik/adguard/remark42 on hk2), plus the rustdesk-health runbook and AGENTS.md
entry. Server image pinned rustdesk/rustdesk-server:1.1.14.
2026-08-12 21:16:30 +08:00
windyboy e7296e664a feat(ansible): move hosts to healthcheck_profiles list; decouple audit/restic
Inventory now declares the plural healthcheck_profiles list per host (hk2 runs
pdns, rustdesk, hk2aux) instead of a single healthcheck_profile, and carries
the rustdesk server vars (rustdesk_compose_dir/relay/image) plus the rustdesk
host group.

The restic role relied on the removed singular healthcheck_profile var; it now
uses its own restic_backup_profile (set per host to vaultwarden on us2 and pdns
on hk2), so the health-check rename no longer breaks it. audit.yml's summary
labels the host's profile list instead of the singular var.
2026-08-12 21:16:30 +08:00
windyboy d0d5e5a704 refactor(healthcheck): support multiple profiles per host with aggregate result
Replace the single healthcheck_profile with a healthcheck_profiles list so a
host can run several checks (e.g. hk2: pdns, rustdesk, hk2aux). Profiles emit
per-check JSON to latest-<check>.json; the dispatcher clears stale per-check
files, runs every profile, and merges them into latest.json.

Contract: a single complete check keeps the historical verbatim latest.json
shape; several checks produce a worst-status aggregate retaining every check's
detail. A profile that crashes before reporting is aggregated as unknown so
latest.json can never go stale while the dispatcher fails. The dispatcher exits
with the worst (max) profile exit code.
2026-08-12 21:16:30 +08:00
windyboy baca89be83 docs(hk2): document Traefik dashboard auth and password rotation 2026-08-12 21:16:30 +08:00
windyboy 562de68127 docs: record VLAN10 live verification (DHCP lease, NAT counters, isolation) 2026-08-11 19:36:20 +08:00
windyboy 86bfb5a953 docs: record SE5420 VLAN10 deployment pitfalls (trunk PVID, fw4 dest=lan, minimal gfw migration) 2026-08-11 19:22:22 +08:00
windyboy 3ec51299cc docs: note VLAN1 undeletable on SE5420; disable unused ports first 2026-08-11 13:13:33 +08:00
windyboy 7a54e8d9ec docs: align SE5420 guide with actual Chinese GUI menus and port layout 2026-08-11 12:59:46 +08:00
windyboy 7b4c48eb93 docs: refine SE5420 upgrade guide into granular step-by-step ops 2026-08-11 11:07:25 +08:00
windyboy ffb37a916e docs: finalize SE5420 deployment guide per review
- Reorder §3.3: create VLAN66/55 before SVI; keep VLAN1 until management path verified
- Fix §3.4 verification port wording (enabled VLAN66 access port, e.g. port 6)
- Harden VLAN10 phase: PVE boundary, gfw NAT/IPv6 policy, rollback order, verification chain
2026-08-10 11:00:28 +08:00
windyboy 35577d0c5c docs: add SE5420 core-switch deployment plans; note PVE VM topology 2026-08-09 21:22:02 +08:00
windyboy e90eef9647 docs: record UniFi SSO login change and Ansible management (W1N-51) 2026-08-08 09:17:55 +08:00
windyboy 14a758a28a feat: manage UniFi SSO login setting via Ansible (W1N-51) 2026-08-08 09:15:49 +08:00
windyboy c386fe8136 docs: record gfw OpenClash core v1.19.29 upgrade (W1N-50) 2026-08-06 16:45:11 +08:00
windyboy e2884069a8 docs: add live-verified LAN overview; refresh gfw facts 2026-08-06 16:22:20 +08:00
windyboy b03d7019c4 docs: onboard AdGuard Home to Ansible; retire check-mx2; migrate plan to Linear
- Add dns.windy.lan to Ansible inventory (adguardhome group/profile) with a
  read-only healthcheck template, systemd timer, and on-demand report parity
  with the other active hosts; verified green on the host.
- Add synapse.chans.xyz to the AGENTS.md active-host quick map.
- Remove plans/; migrate decisions/verification to a Linear vps project doc and
  file the remaining gaps as W1N-46..49 with blocking edges.
- Retire scripts/check-mx2.sh; point mailcow health/update runbooks and the
  mx2 host file at the Ansible health report.
- Trim us2 stub software to verified running services; note dormant dirs.
- Normalize repo docs to English; drop the non-existent CONTEXT.md/ADR claim
  and remove docs/agents/domain.md.
2026-08-06 15:48:48 +08:00
windyboy 29bdf06383 Document network operations and WireGuard maintenance 2026-08-06 10:20:43 +08:00
windyboy 64484cd484 Document UniFi OpenClash proxy bypass 2026-08-03 21:10:57 +08:00
windyboy efe1d30ff1 docs: record Hermes Matrix reconfiguration 2026-08-03 16:23:27 +08:00
windyboy 7a9acb4f7c Manage routine operations through Ansible 2026-08-03 16:01:35 +08:00
windyboy b73125e5bc Initial VPS operations handbook 2026-08-03 12:26:42 +08:00