Commit graph

160 commits

Author SHA1 Message Date
a133efe3bf slides(tappaas): recast The Bad around amortisation, not personal cost
All checks were successful
Build docs site / build (push) Successful in 46s
Build slides / build (push) Successful in 1m11s
Drop the commit-graph slide and the two cost slides. Replace all three with
one argument: the platform is expensive to build, but that cost is fixed and
per-site cost is near zero — so it only makes sense shared across many home
labs and SMB sites.

"What I got wrong" becomes "Did I get it all right?" — no, two large rewrites
(ADR-007 numbering to dependsOn, ADR-014 zone tiers to checked state) plus a
predecessor system run for years before this one.

36 slides; the agenda line and the quiet-months slide no longer refer to the
graph that left.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 17:44:40 +02:00
485f53f48d slides(tappaas): real hardware/VM diagrams, and count the Community modules
All checks were successful
Build docs site / build (push) Successful in 49s
Build slides / build (push) Successful in 1m8s
Split the single architecture slide into two: the iron (three nodes, switch,
AP, modem) and the software (foundation band with the AI and productivity
stacks above it). Both read off the running cluster via tappaas-cicd, not
from docs — CPU, RAM, pool topology, link speeds and switch ports are live
values.

The VM layer-cake is inline SVG rather than mermaid: mermaid ignores
`direction LR` inside a subgraph that has a cross-boundary edge, so the bands
came out as a 629x1258 column.

Module slide now counts all three sources — 8 foundation + 12 apps +
21 Community = 41 — and slide 3 is recomputed for today.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 17:33:03 +02:00
Lars Rossen
aab16d8189 slides(tappaas): the session builds the merged podman module
All checks were successful
Build docs site / build (push) Successful in 48s
Build slides / build (push) Successful in 1m8s
Podman and Portainer are one module now — engine plus GUI — so the deck follows:
podman.json, vmid 812, both sockets on the update.sh slide, and the console at
https://lab1.makerfloss.eu because --proxyDomain makes the module the
environment's gateway rather than podman.lab1.makerfloss.eu.

All commands verified against a live install on lab1.
2026-08-25 09:35:35 +02:00
Lars Rossen
2722c89dcb slides(tappaas): correct the demo commands against a real run
All checks were successful
Build docs site / build (push) Successful in 52s
Build slides / build (push) Successful in 1m14s
Installed portainer into lab1 on the live system; several slide commands were
wrong. The verb is 'network-manager add', not 'network-manager zone add', and
there is no 'srv' zone here — the live service zone is 'makerfloss'. Status
verbs need the effective name 'portainer-lab1', while 'module add' takes the
base name. The published host is portainer-lab1.lab1.makerfloss.eu, not
portainer.lab1.makerfloss.eu. Adds the repository registration to Demo 2, which
the deck had never shown.
2026-08-24 21:03:01 +02:00
ef00334f94 slides(tappaas): write the Sommerhack 2026 'one year in' deck
All checks were successful
Build docs site / build (push) Successful in 49s
Build slides / build (push) Successful in 1m10s
Talk announced at pretalx.varum.dk/sommerhack-2026/talk/WD8EVP/ —
27 August, Taler Teltet, 60 minutes.

Figures come from the repo rather than the abstract: commit counts and the
per-month graph from git log, source counts from src/STATISTICS.md as
regenerated 2026-08-23. Twelve TODO markers remain for the personal
material (costs, the autumn 2025 dip, war stories).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 12:58:55 +02:00
Lars Rossen
87d6d83ff3 slides(tappaas): the session builds the portainer module
All checks were successful
Build slides / build (push) Successful in 1m22s
Build docs site / build (push) Successful in 1m26s
Retargets the deck from podman to portainer: the contract, the three script
slides, both demo slides and the repo-location slide. Demo 3 is now an actual
single sign-on — 'no login form, you are already you' — because Portainer is an
OIDC client and Cockpit never could be.

The test.sh slide keeps the check worth stealing: /api/settings/public reporting
method 3, which catches identity silently falling back to local accounts.
2026-08-23 09:46:59 +02:00
Lars Rossen
33e783efb5 slides(tappaas): a slide per lifecycle script; correct the identity claim
All checks were successful
Build docs site / build (push) Successful in 48s
Build slides / build (push) Successful in 1m6s
install.sh, update.sh and test.sh get one slide each, with the real content of
each — including why a 401 from Cockpit is a passing test and why test.sh uses
curl -s rather than --fail.

Corrects the identity story: Cockpit is not an OIDC client and cannot be
configured into one, so the contract shows identity:accessControl and the demo
slide is honest that Authentik gates the URL while Cockpit still asks for a
local account. Full analysis in the module's DESIGN.md.
2026-08-22 20:42:04 +02:00
Lars Rossen
f02c4f878f slides(tappaas): participants land in the devops group
All checks were successful
Build docs site / build (push) Successful in 46s
Build slides / build (push) Successful in 1m5s
2026-08-22 18:38:19 +02:00
Lars Rossen
834bd406f2 slides(tappaas): session details, dev-topology slide, identity login
All checks were successful
Build docs site / build (push) Successful in 48s
Build slides / build (push) Successful in 1m6s
Date 24 August; the demo environment is lab1 (zone lab1, lab1.makerfloss.eu
outside / lab1.internal inside). Adds the upstream 'developing TAPPaaS modules'
topology from tappaas.org ahead of our own repo picture, which now carries
forgejo.makerfloss.eu and highlights that this site tracks main, not stable.
Drops the manager-verbs slide; the demo slides carry the verbs where they are
actually used, with network/environment/module status commands.

Cockpit now logs in via identity:identity rather than a local PAM password, and
identity hand-out uses 'authentik-manager user-recovery-link' so no password is
ever read aloud. NOTE: podman.json in Community does not yet declare
identity:identity — the module needs that change before the session.
2026-08-22 18:03:06 +02:00
Lars Rossen
f1c1c79b63 slides(tappaas): write the OrangeMaker podman session deck
All checks were successful
Build docs site / build (push) Successful in 44s
Build slides / build (push) Successful in 1m2s
Sixteen slides built around the live demo: two orientation diagrams (site
shape with environments/zones/satellite, and the pull-based GitOps repo
topology), a condensed module anatomy anchored on the real podman.json from
Community/src/larsrossen/containers/podman, the three demo beats (test
environment, module add, prove it), and the identity hand-out.

Mermaid subgraph titles collide with the node row under flowchart TB, so both
diagrams use LR; _class directives repeat 'invert' because a local _class
replaces the deck-level one rather than adding to it.
2026-08-22 16:47:53 +02:00
Lars Rossen
91f53f1f62 slides: frame a 'How to implement a TAPPaaS module' deck
All checks were successful
Build docs site / build (push) Successful in 49s
Build slides / build (push) Successful in 1m16s
Adds a second Marp source root. Decks under slides/ build to an output path
mirroring their repo path, so slides/TAPPaaS/HOW-TO/NewModule/index.md is
served at slides.makerfloss.eu/TAPPaaS/HOW-TO/NewModule/. Decks in
docs/presentations/ keep their flat URLs.

The deck itself is a frame: structure and headings from the real
src/apps/00-Template anatomy, content still to be written. Unfinished spots
are written as inline `TODO: ...` and rendered in red so a half-finished
deck cannot be presented by accident.

Also fixes the Docker fallback, which could not write to a mktemp directory
on macOS (not shared with Docker Desktop) and must not be passed --user.
2026-08-22 16:01:50 +02:00
4abc634443 docs: add laser course service page
All checks were successful
Build slides / build (push) Successful in 1m35s
Build docs site / build (push) Successful in 1m38s
Course site moving from the home estate (laser.baobab.band) to
laser.makerfloss.eu. Marked staging until the VPS deploy is verified.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 10:15:29 +02:00
bc29da2720 docs(ideas): add #12 newsletter service, owner Tais
All checks were successful
Build docs site / build (push) Successful in 47s
Build slides / build (push) Successful in 1m5s
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-19 06:57:47 +02:00
267f79ff66 docs(ideas): record build decision for #10 event management
All checks were successful
Build docs site / build (push) Successful in 48s
Build slides / build (push) Successful in 1m6s
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-18 16:14:50 +02:00
15cb03a7c3 docs(ideas): mark #2 and #10 in progress with owners
All checks were successful
Build docs site / build (push) Successful in 50s
Build slides / build (push) Successful in 1m7s
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-18 16:12:49 +02:00
42a7d2dc9d docs(ideas): add Project ideas page with status and owner columns
All checks were successful
Build docs site / build (push) Successful in 52s
Build slides / build (push) Successful in 1m10s
Front-door menu of things we could build at a jam session, grouped into
lab foundations, TaPPaaS production, OM tools, and housekeeping. Each
idea carries a "done when" criterion, a status, and a claimable owner.

Linked from the home page and added as a top-level nav entry.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-18 16:02:23 +02:00
cfaf06510b docs(hardware): record srv07 rear patch pp02:8 -> sw06:4
All checks were successful
Build docs site / build (push) Successful in 49s
Build slides / build (push) Successful in 1m8s
Confirmed on-site 2026-07-17: srv07's single NIC runs eth0 -> pp02:8,
rear-patched to sw06:4 — the patch that restored its LAN path.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 17:28:49 +02:00
f047332e94 docs(hardware): record srv07 real specs and identity, correct mf04 mapping
All checks were successful
Build docs site / build (push) Successful in 53s
Build slides / build (push) Successful in 1m11s
srv07 verified on-site 2026-07-17: it is the Ansible/OS host mf04
(i3-4360T 2c/4t, 16 GB, 500 GB HDD, Debian 13), renamed to srv07 to match
the sticker. The naming-scheme migration row said mf04 -> srv05 — corrected
with a dated note. pp02: srv07's LAN path was restored 2026-07-17; the new
rear patch of port 8 is ad hoc and still needs recording.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 17:20:41 +02:00
24007391f4 feat(rack): add shf05, move shf03 to U22 with sw06/sw07, rewire uplinks
All checks were successful
Build docs site / build (push) Successful in 50s
Build slides / build (push) Successful in 1m8s
Rack01 layout and cabling changes as physically mounted:

- shf03 moved U21 -> U22; shf04 stays at U21 (pair split).
- New shf05 at front U19 (empty).
- New shelf-mounted switches on shf03: sw07 (4-port 1G unmanaged,
  slot 1/left) and sw06 (9-port unmanaged, 8x2.5G + 1x10G, slot 2/right).
- Rewire: sw01:7 -> sw06:1 (repurposed from srv07 uplink),
  sw07:1 -> sw06:2, pp01:4 -> sw06:3, sw01:8 mgmt -> pp01:3.
- Drop pp02:8 -> sw01:7 rear patch; srv07 (staging) left without a LAN path.

Regenerated hardware index and rack01 elevation/page.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 22:00:30 +02:00
sjat
4153c8d1d9 feat(rack): draw shelf-mounted tower heights in the elevation
All checks were successful
Build docs site / build (push) Successful in 50s
Build slides / build (push) Successful in 1m11s
Add an optional `chassis_u` field for shelf-mounted devices (their height
in U where they stand on the shelf) and render it:
- gen_rack draws each tower chassis_u U's tall, rising above the 1U shelf
  line; rail-mounted devices now paint on top so a PDU within a tower's
  span (e.g. pdu03 over srv05/06) stays visible
- occupancy table shows each tower's real U-span (e.g. srv01 U37-U46)
- validate_item checks chassis_u is a positive integer; absent chassis_u
  renders byte-identically to before
- set chassis_u for srv01-07 (10/8/6/6/7/7/6U); document the field in the
  editing guide; regenerate rack01 artifacts

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 22:11:19 +02:00
sjat
4dc975062a docs(hardware): reconcile rack01 to as-mounted layout and document cabling
All checks were successful
Build docs site / build (push) Successful in 49s
Build slides / build (push) Successful in 1m11s
Rebuild rack01 from the physically remounted hardware:
- Correct stale positions/ports/outlets for pp01, pp02, sw01, pdu01-04
- Model shelves as 1U trays (towers stand above without consuming rack U's);
  add shf02 and empty half-depth shf03/shf04
- Add ups01/ups02; reseat nas01/02 and sw02-05; move srv04-07 onto shf02
- Add `wan` hardware kind; add WAN demarcation hosts wan01 (active) and
  wan02 (staging)
- Document full live network wiring: srv01-07 -> pp02 -> sw01 (LAN) and
  srv01 eth0 -> pp02 -> pp01 -> wan01 (WAN); keep non-active lines
  (wan2, working-table patches, sw01 mgmt) in notes only
- Regenerate hardware index + rack01 elevation/network/power artifacts

Also includes the in-progress generator updates (gen_rack.py, gen_overview.py,
Makefile, tests) that the regenerated artifacts depend on.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 21:31:48 +02:00
sjat
8f4047cdd7 fix(hardware): add missing source files for 9 racked devices
All checks were successful
Build docs site / build (push) Successful in 48s
Build slides / build (push) Successful in 1m10s
Camilla's "added all devices to rack" commit committed the regenerated
index/rack artifacts but not the new per-device source files, so CI's
drift check failed (regeneration dropped 9 devices that had no source).

Recreate the source files for sw02-sw05, pp02, srv06-srv07 and nas01-nas02
from the committed artifacts (placement, power feeds, network links, and
cluster:tappaas on the servers; specs left as '?' placeholders, optional
port counts omitted). Regeneration is now drift-clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 22:41:30 +02:00
Camila Baruĥ
4a6f8f07a8 added all devices to rack
Some checks failed
Build slides / build (push) Successful in 1m15s
Build docs site / build (push) Failing after 42s
2026-06-29 22:27:52 +02:00
Camila Baruĥ
dac2ad51ae added Rear/Front rack_u for pdu*
All checks were successful
Build docs site / build (push) Successful in 48s
Build slides / build (push) Successful in 1m10s
2026-06-29 21:54:07 +02:00
Camila Baruĥ
271e24c389 test
All checks were successful
Build docs site / build (push) Successful in 49s
Build slides / build (push) Successful in 1m11s
2026-06-29 21:48:44 +02:00
Camila Baruĥ
fbd99be414 test 2026-06-29 21:48:09 +02:00
sjat
9d7b4684c4 docs: publish hardware naming scheme and link it from the editing guide
All checks were successful
Build docs site / build (push) Successful in 48s
Build slides / build (push) Successful in 1m11s
Move the naming-scheme spec from notes/dev/specs/ into docs/guides/ so it
publishes to docs.makerfloss.eu, add it under the Hardware nav, and link it
from the editing guide. Repoint the stale references in CLAUDE.md and the
migration plan to the new path.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 21:40:09 +02:00
sjat
95399640d1 docs: add hardware-docs editing guide and link it in nav
All checks were successful
Build docs site / build (push) Successful in 48s
Build slides / build (push) Successful in 1m9s
Add docs/guides/editing-hardware-docs.md covering the frontmatter schema,
rack/shelf/PDU/power/network fields, the `make docs-index` workflow and
CI drift gate, plus dos and don'ts. Kept under docs/guides/ so the
hardware generators don't parse it as a host file. Linked under the
Hardware nav section so it publishes to docs.makerfloss.eu.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 21:32:32 +02:00
sjat
ebe193d9d8 docs(hardware): update srv01-03 notes
All checks were successful
Build docs site / build (push) Successful in 48s
Build slides / build (push) Successful in 1m12s
Mark srv02/srv03 as TaPPaaS nodes 2/3 and clear the completed
BIOS/UEFI todo items on srv01.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 21:19:24 +02:00
sjat
5b3251f848 fix(hardware): set pdu03/pdu04 to rack01 and regenerate indices
Camilla's "Changed PDU values" commit added pdu03/pdu04 frontmatter but
left the auto-generated docs/hardware/index.md stale, failing the CI
drift check. Correct both PDUs from the placeholder racks rack33/rack11
to rack01 (where all current hardware lives) and regenerate the hardware
index and rack01 elevation via `make docs-index`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 21:19:20 +02:00
Camila Baruĥ
7cad66b466 Changed PDU values
Some checks failed
Build docs site / build (push) Failing after 53s
Build slides / build (push) Successful in 1m14s
2026-06-29 21:09:20 +02:00
sjat
3a0f062f37 slides: fix TaPPaaS deck overflow + stray tag
All checks were successful
Build docs site / build (push) Successful in 53s
Build slides / build (push) Successful in 1m12s
Shrink global font and tighten spacing so dense slides fit; split the
phasing slide into VPS-edge (1-3) and internal/later (4-5). Remove a
stray </content> line that leaked into the source. Verified all 13
slides fit via per-slide PNG render.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 10:59:46 +02:00
sjat
125d1d67e9 slides: TaPPaaS VPS publishing (technical review)
All checks were successful
Build docs site / build (push) Successful in 54s
Build slides / build (push) Successful in 1m12s
Marp deck for the split-horizon DNS + public exposure design: reuses the
mf01 pattern (TLS at VPS, plain HTTP over wg1 to TaPPaaS Caddy). Two
Mermaid request-flow diagrams, decisions, phasing, isolation, risks.
Publishes to slides.makerfloss.eu on CI.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 10:11:53 +02:00
sjat
a6033e2038 fix(rack): centre 0U rail labels across the bar (dominant-baseline)
All checks were successful
Build docs site / build (push) Successful in 52s
Build slides / build (push) Successful in 1m11s
2026-06-24 19:07:10 +02:00
sjat
e1c05a6c88 test(rack): cover off-rack peer (styled, not clickable) in network graph
All checks were successful
Build docs site / build (push) Successful in 49s
Build slides / build (push) Successful in 1m8s
2026-06-24 18:48:13 +02:00
sjat
d3d5e9c69e feat(rack): colour and link mermaid power/network nodes by kind 2026-06-24 18:43:52 +02:00
sjat
08862fde51 feat(rack): add elevation legend, both-gutter U-numbers, column frames
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 18:39:56 +02:00
sjat
8d39fbcdf5 feat(rack): inline interactive elevation with links, tooltips, status borders 2026-06-24 18:34:06 +02:00
sjat
d5cfe9665c docs(rack): graphical presentation improvements implementation plan 2026-06-24 18:29:36 +02:00
sjat
aad5672a6b docs(rack): graphical presentation improvements design spec 2026-06-24 18:22:41 +02:00
sjat
c24978436d feat(rack): place TaPPaaS nodes on shelf shf01 (provisional)
All checks were successful
Build docs site / build (push) Successful in 50s
Build slides / build (push) Successful in 1m9s
2026-06-24 17:51:52 +02:00
sjat
e08862b81d fix(rack): draw shelves after rails (match spec placement) 2026-06-24 17:49:49 +02:00
sjat
aab58e3692 feat(rack): render shelf strip, occupant boxes, and mounted occupancy rows 2026-06-24 17:45:39 +02:00
sjat
b85479b9a0 feat(rack): validate shelf-mounted devices (mounted_on/shelf_face/shelf_slot) 2026-06-24 17:42:07 +02:00
sjat
4961a748d4 docs(rack): shelf-mounted devices implementation plan 2026-06-24 17:39:34 +02:00
sjat
d8b1fd3272 docs(rack): shelf-mounted devices design spec 2026-06-24 17:27:02 +02:00
sjat
613a5c3cab docs(hardware): clarify provisional cluster note in naming spec
All checks were successful
Build docs site / build (push) Successful in 50s
Build slides / build (push) Successful in 1m10s
2026-06-24 16:29:28 +02:00
sjat
34243bbf6f docs: record hardware naming scheme, refresh stale mf0x hints 2026-06-24 16:26:11 +02:00
sjat
fd21d4807d refactor(hardware): rename mf00-mf04 to srv01-srv05, add cluster field
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 16:23:23 +02:00
sjat
9869da5c6b docs(hardware): naming migration implementation plan 2026-06-24 16:16:25 +02:00