Commit graph

372 commits

Author SHA1 Message Date
3f487fd52b
feat(build-server): build crystal binaries statically on home.server
The 2022 binaries link libpcre.so.3, which Debian 13 no longer ships.
crystal now comes from the openSUSE repo of the node's Debian release
and links with --static, so the result runs on any release; the build
runs locally instead of cross-compiling through the build-agent.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RywMtsL8qXG7GDY3MHq9Uh
2026-10-23 11:50:22 +02:00
3b4ebda91d
feat(home.router): emergency uplink via carina VLAN instead of pppoe
VLAN 52 "carina" on sfp-sfpplus7 of the rack switch, routed and
masqueraded by home.router via 192.168.178.1; pppoe and the rolf test
VLAN are commented out for now.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RywMtsL8qXG7GDY3MHq9Uh
2026-10-23 11:34:21 +02:00
809b779c42
chore(ovh.secondary): drop left4dead2 bundle
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RywMtsL8qXG7GDY3MHq9Uh
2026-10-23 11:34:03 +02:00
aca907ca60
chore(ovh.left4me): mark node as dummy
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RywMtsL8qXG7GDY3MHq9Uh
2026-10-23 11:33:36 +02:00
43739b99fa
feat(htz.mails): redirect hcf.ckn.li to the wedding share
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RywMtsL8qXG7GDY3MHq9Uh
2026-10-23 11:31:07 +02:00
58f97d21ec
feat(nextcloud): upgrade home.server to 35.0.2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RywMtsL8qXG7GDY3MHq9Uh
2026-10-23 11:31:06 +02:00
48e818d905
remove unused nodes 2026-05-25 20:30:50 +02:00
1039e23671
left4me: prefix steam_web_api_key vault value with !decrypt:
Without !decrypt: the encrypt$… string is rendered as a literal into
web.env, which then surfaces as 403 Forbidden from the Steam Web API
(because the URL key parameter contains "encrypt$gAAA…" instead of the
actual API key). Matches the existing pattern used by every other
encrypted secret in this repo.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 22:57:21 +02:00
1445aaff0a
left4me: wire STEAM_WEB_API_KEY through to web.env
Adds the metadata key default (None — node must override) and pipes it
into web.env.mako so the live-state poller can resolve Steam IDs to
persona names + avatars via GetPlayerSummaries.

ovh.left4me gets the actual key as an encrypted vault secret.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 22:42:51 +02:00
c6caf2a1cf
left4me: per-node system_cpus set; pin HT siblings on ovh.left4me
Replaces bundle-default system_core_count int with a per-node set of
CPU ids; reactor takes set complement for game cores. ovh.left4me sets
{0, 4} to keep both HT siblings of physical core 0 in system.slice
so games don't share L1/L2 with system work. systemd_units reactor
return inlined.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 00:20:28 +02:00
d3068ba8f6
agents: nodes carry only node-specific metadata
When the left4me bundle was first integrated, ovh.left4me's node
file carried ~40 lines of left4me-related metadata (git_url,
secret_key, full nginx vhost, monitoring, backups, nftables
rules). The maintainer pushed back: per-node metadata should be
only what genuinely varies per host. Refactor brought it down to
{'domain': 'left4.me'} with everything else in bundle defaults
or in a reactor deriving from the domain.

Add the rule to bundles/AGENTS.md from the bundle-author angle
(use defaults / vault-keyed-on-node for secrets, cite left4me
and postgresql for the established pattern). Add the reviewer's
form to nodes/AGENTS.md Pitfalls.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 20:27:52 +02:00
7b291acca1
left4me: refresh README + opt ovh.left4me in via groups
README:
  Updated metadata example to show domain as the only required key.
  Documented the bundle's derived_from_domain reactor as the source of
  nginx/letsencrypt/monitoring/nftables-input wiring, and the
  bundle-defaults source of backup/paths.

nodes/ovh.left4me.py:
  - groups: + backup, + left4me, + webserver
  - bundles: dropped 'left4me' and 'nftables' (come via groups now;
    nftables ships with debian-13).
  - metadata: pinned vm/cores=4, vm/threads=8 (4-core HT box) so the
    nginx bundle's worker_processes resolves; left4me block reduced to
    {'domain': 'left4.me'} — git_url, git_branch, secret_key, and the
    nginx/letsencrypt/monitoring/nftables/backup blocks now come from
    bundle defaults / the derived_from_domain reactor.
2026-05-10 18:24:03 +02:00
af78e40fda
left4me wireguard 2026-05-10 16:57:52 +02:00
04558a9189
docs: scaffold agent-friendly entry points (Phase 1)
introduces a balanced set of agent + human docs:

- root AGENTS.md (with CLAUDE.md symlink) — 5-rule quickstart,
  layout map, mental model, use-case keyed example pointers.
- docs/agents/conventions.md — vault/demagify, eval-loader
  constraints, group inheritance, naming, do-not-touch list,
  suspension idioms, working-style notes.
- docs/agents/commands.md — repo-specific deltas to the fork's
  bw runbook (apt-key offline-verify, *.py_ suspended-node
  visibility, vault-echo rule).
- per-area AGENTS.md for bundles/, nodes/, groups/, libs/,
  hooks/, data/, items/, bin/ — mechanism-focused, no enumeration.
- bundles/AGENTS.template.md — per-bundle doc template with
  optional `## Writes into` section for cross-namespace reactors.

bundlewrap-language reference (item types, dep keywords, reactors,
runbook, three-tier safety envelope) is not duplicated here; we
link out to the fork's AGENTS.md instead.

bw test still green. all internal links resolve. Phase 0 invariants
preserved (libs/hooks docstrings, bin/* # purpose: headers).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 15:44:45 +02:00
c03b033ad9
macbook dummy 2026-05-10 11:57:26 +02:00
e99fd4b1a4
add ovh.left4me and update nextcloud 2026-05-10 11:23:49 +02:00
838da64907
home server fan/motherboard sensors 2026-03-09 12:29:16 +01:00
fcd92db125
more swap 2026-03-09 11:48:24 +01:00
afc30a195d
+ 2026-03-07 14:46:56 +01:00
56842dc101
fix debian groups 2026-03-07 14:46:51 +01:00
58007f5121
dowsnt exist 2026-03-07 14:46:39 +01:00
cb19c38376
update home.server to trixie 2026-03-07 14:41:59 +01:00
98e205a0e0
nc upgrades 2026-03-07 12:28:24 +01:00
4b5e4e1d42
change l4d server setup 2026-02-10 19:38:43 +01:00
985a15e5c7
wol waker only allow wakeonlan command 2026-01-11 14:52:46 +01:00
4652a42346
disable zfs mirror for now 2026-01-10 11:10:35 +01:00
ec2e747b39
add switches to home group 2025-12-16 16:43:31 +01:00
c1d9f231b1
l4d2 tickrate 2025-12-13 15:29:36 +01:00
8539f59302
mikrotik snmp monitoring 2025-12-13 15:02:37 +01:00
463cf8783c
mikrotik: more port config 2025-12-03 22:30:42 +01:00
5a8dc7e313
nodes/home.backups.py: use own vlan for wakeonlan to not have 2 ips in same network 2025-12-03 22:06:22 +01:00
b1a1038dec
routeros add username 2025-12-01 22:18:48 +01:00
383b1925ef
more l4d servers 2025-12-01 20:57:34 +01:00
08d99bf714
l4d fixes 2025-11-04 19:35:23 +01:00
830b3ea114
l4d servers 2025-10-30 09:18:46 +01:00
926e249272
l4d add maps 2025-10-29 17:16:51 +01:00
03654ef5af
l4d move workshop downlaoder to scripts 2025-10-29 16:45:50 +01:00
2d59c68004
l4d some more options here and there 2025-10-29 16:28:47 +01:00
7a51040ac0
l4d someoptions here and there 2025-10-29 16:26:03 +01:00
c2b177db49
l4d rename zonemod server 2025-10-29 16:14:52 +01:00
8391afdac5
l4d make all underlying server.cfg accessible 2025-10-29 15:57:36 +01:00
9572ac822f
l4d2 dynamic overlays 2025-10-29 14:13:31 +01:00
a9e4013d86
l4d move some config around 2025-10-29 12:57:15 +01:00
19c1945110
l4d config defaults 2025-10-29 12:39:14 +01:00
e6312a2318
l4d start script refactor 2025-10-29 12:25:05 +01:00
dc614483b5
zonemod autostart 2025-10-29 10:19:53 +01:00
2667553cf2
l4d2 COMPETITIVE REWORK 2025-10-28 22:54:05 +01:00
084cf958a0
l4d2: tickrate enabler 2025-10-28 15:34:19 +01:00
b4cba98564
bootshorn "backup" 2025-10-28 12:38:44 +01:00
0c74cfd5e9
other tank 2025-08-24 15:27:28 +02:00