dtoro d41d73f323 device-code onboarding: bootstrap auto-installs deps + netbird; Authentik device flow wired
Two changes that together collapse new-workstation onboarding from ~7 steps
to ~2 commands:

* bootstrap.sh:
  - Dep-check now AUTO-INSTALLS missing tools (apt/dnf/brew) instead of
    printing instructions and exiting. Re-verifies after install.
  - New pre-mesh-check block: if netbird isn't installed, installs it
    from the netbird apt/dnf repo (or `brew install --cask netbird` on
    Darwin), then if mgmt isn't connected, runs `netbird up
    --management-url=https://netbird.hubris.network --ssh-jwt-cache-ttl 86400`.
    Operator clicks the device-code URL inline. Waits up to ~30s for
    Management: Connected before continuing. Skipped on --no-secrets +
    --dry-run.

* containers/124-authentik.md: replaces the "KNOWN MISSING — Device Code
  Stage" subsection with a working recipe — Authentik 2026.2 routes
  /device via a BRAND-level "Device code flow" field, not a provider
  field. Documented stage bindings for a `default-device-code-flow`
  flow (identification → password → user-login → consent) and the
  brand-level binding step.

* operations/agent-enrollment.md: Path B (interactive `netbird up`) is
  now the default; Path A (setup-key) demoted to "headless/scripted"
  alternative. "Install dependencies" section collapsed into a note
  that bootstrap handles it, with the manual recipes kept in a
  collapsible <details> block for air-gapped use.

The flow uniquely available to lab owners (single Authentik user today)
still relies on the first-time-owner sqlite promotion documented in
124-authentik.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 15:05:27 +02:00
2026-05-20 19:29:47 +02:00
2026-05-20 19:29:47 +02:00
2026-04-28 22:53:09 +02:00

Homelab Wiki — hubris

Living documentation for the hubris Proxmox homelab. Every node, every cross-cutting system, and every meaningful incident is its own page; pages are linked so you can start anywhere and walk the graph.

Last refreshed against live state: 2026-04-28.

Map

Hosts

  • hubris — single Proxmox VE node, GMKtec NucBox M6 Ultra, 192.168.8.77

VMs

LXC containers

See the full table in containers/index.md. Quick links:

ID Name IP Role
101 jellyfin 192.168.8.206 Media server
102 nfs-export 192.168.8.200 NFSv4 re-export of /mnt/library for ZimaOS
103 paperless 192.168.8.130 Document mgmt
104 gitea 192.168.8.121 Git server
105 apps 192.168.8.205 Docker host (Artifacto / Booklore / PlantUML / Portainer / WriteFreely)
114 nextcloud 192.168.8.224 Personal cloud
118 elementsynapse 192.168.8.239 Matrix Synapse
119 sophia 192.168.8.157 Sophia
120 mule-images 192.168.8.136 Mule-image / mulita photos
121 caddy 192.168.8.175 Reverse proxy
122 arriman 192.168.8.132 Docker host (*arr stack)
123 claudio-bot 192.168.8.230 Matrix control plane
124 authentik 192.168.8.180 SSO + split-horizon DNS
126 plato 192.168.8.190 Plato (notes/discovery workspace)

Cross-cutting infrastructure

Investigations

Time-stamped incident notes / experiments in investigations/.

Operations

Conventions

  • Each node page ends with a ## Changelog section. Reverse-chronological. Entry format:
    ### YYYY-MM-DD — short title
    one or two lines on what changed and why.
    
  • Cross-linking is mandatory. If a page references another node or system, link to it. Treat orphans as a bug.
  • Live state wins. When something here disagrees with pct config / docker inspect / running config, fix the wiki and note the change in the relevant changelog.
  • Tracked configs. A node whose config lives in a Gitea repo (Caddy, Gitea customizations, Artifacto, mule-image, claudio-bot) is auto-deployed via webhook — see auto-deploy. Edits there must be pushed, not left local.
  • No secrets. This is a private repo on git.hubris.network, but still: paths to secret files are fine, secret values are not.

Maintaining this wiki

When you change a node:

  1. Update the relevant page (config snapshot, ports, mounts).
  2. Add a changelog entry at the bottom of that page.
  3. If the change touches a cross-cutting system (DNS, Caddy, Authentik, mesh), update that page too and link it from the changelog entry.
  4. If it's an incident, add an entry to investigations/.

See also

Description
Agentic OS for running a Homelab
Readme 37 MiB
Languages
Go 53.1%
Svelte 25.7%
TypeScript 14%
Shell 3.8%
Python 1.7%
Other 1.5%