
[INFO] felhom-host-install v1.27.0 — mode=appliance customer=drill-r50 vmid=120

[STEP] 1/8 pre-flight
[INFO]   pve-manager/9.2.2/b9984c6d90a4bd80 (running kernel: 7.0.2-6-pve)
[INFO]   node: drill-pve (auto)
[INFO]   agent config: /etc/felhom-agent/agent.json
[INFO]   agent (existing): felhom-agent 0.128.0
[INFO]   local-lvm free: ~75 GiB
[WARN] local-lvm free ~75 GiB < hard min 120 GiB
[INFO]   free RAM: ~6231 MiB
[INFO]   existing guests on this host: 0 (pct+qm)
[INFO]   archive storage 'local' present
[INFO]   acl storage 'felhom-pbs' not present yet — expected: the PBS-DR tier creates it; the grant is pre-positioned deliberately
[INFO]   dnsmasq: already installed BEFORE Felhom — recorded; uninstall will not touch it
[INFO]   hub reachable (https://hub.felhom.eu)
[OK]   customer 'drill-r50' exists + passphrase valid
[INFO]   golden (local): local:backup/vzdump-lxc-9100-2026_08_12-23_59_59.tar.zst
[OK] pre-flight passed
[STEP] 2/8 Proxmox API token
[SKIP]   pool felhom already exists
[INFO]   user felhom-agent@pve exists
[INFO]   existing agent config has a token — testing it (read-only --selftest)
[OK]   existing token authenticates — REUSING (no rotation)
[INFO]   role FelhomAgentBase exists — ensuring exact privileges
[INFO]   role FelhomAgentGuest exists — ensuring exact privileges
[INFO]   role FelhomAgentStore exists — ensuring exact privileges
[OK]   scoped ACL applied (Base@/, Guest@/pool/felhom + /vms/990000..990009, Store@[local local-lvm felhom-pbs])
[SKIP]   old broad role FelhomAgent already absent
[STEP] 3/8 compute volume grows
[INFO]   auto-computed from ~75 GiB free (ONE volume since R-165)
[INFO]   grows: rootfs +0G (->32G), data +46G (->70G, ONE volume)
[STEP] 4/8 host enrollment (POST /host-enroll)
[OK]   host REUSED (idempotent — existing credential)
[INFO]   host_id: drill-r50-0a4f9a (api_key captured, not logged)
[STEP] 4b/8 break-glass credential (root@pam console password → hub vault)
[SKIP]   recovery credential already vaulted (use --rotate-recovery to regenerate)
[STEP] 5/8 agent install (fetch + verify + install)
[OK]   apt repos aligned to no-subscription (already aligned; apt-get update OK)
[WARN]   no git credential in controller.yaml — fetching artifacts ANONYMOUSLY (they are world-readable; sha256 verification unchanged)
[INFO]   manifest: agent v0.128.0 (sha c6eba73bf9b9ad69…), golden v0.213.0
[SKIP]   agent v0.128.0 already installed + service active — skipping binary install
[INFO]   service user felhom-agent exists
[INFO]   felhom-agent already in systemd-journal
[OK]   installed /usr/local/sbin/felhom-mkfs-guarded (0755, the guarded mkfs path)
[OK]   installed /usr/local/sbin/felhom-selfupdate-guarded (0755, the guarded A/B binary-swap path)
[OK]   installed /usr/local/sbin/felhom-pbs-apply (0755, the guarded PBS-DR apply path)
[OK]   installed /usr/local/sbin/felhom-backup-target-apply (0755, the guarded backup-target path)
[OK]   installed /etc/sudoers.d/felhom-agent (0440, visudo-validated)
[OK]   installed /etc/systemd/system/felhom-agent.service + enabled (started in step 6 after config)
[OK]   installed self-update rollback unit + start-limit drop-in (auto-rollback armed)
[OK]   installed break-glass layers 1+2 (tmpfiles /run/sshd + agent-independent watchdog timer)
[OK]   installed OOB felhom-sshd instance + static belt (agent renders config + fills sets once oob.enabled)
[STEP] 6/8 agent config + service
[WARN]   backup target: DEGRADED — no eligible second drive, so the whole-system backup stays on the SYSTEM drive.
[WARN]   It protects against file corruption but NOT against a disk failure. Attach a second drive and assign it in the dashboard.
[INFO]   island bridge vmbr9 already present — leaving it
[INFO]   R-50 island ON: local_api=169.254.253.1:8443 (vmbr9); guest net1=169.254.253.2/30; lan_resolver.host_ip=10.0.2.15
[INFO]   node=drill-pve  local_api=169.254.253.1:8443  tls_fp=F7:CC:33:E6:CA:F5…
[OK]   wrote /etc/felhom-agent/agent.json (0600 felhom-agent)
[OK]   agent --selftest (read-only) passed
[OK]   felhom-agent service active (non-root felhom-agent reads the config OK)
[STEP] 7/8 golden archive
[WARN]   ignoring the local golden local:backup/vzdump-lxc-9100-2026_08_12-23_59_59.tar.zst — it is controller 0.98.3, but the vouched golden is 0.213.0
[WARN]   fetching the vouched golden instead (this is what the manifest is for)
[WARN]   no git credential in controller.yaml — fetching artifacts ANONYMOUSLY (they are world-readable; sha256 verification unchanged)
[INFO]   fetching golden v0.213.0 from Gitea → /var/lib/vz/dump/vzdump-lxc-9100-2026_08_12-17_31_32.tar.zst
[OK]   verified sha256 77429bfc7e39ffc8… matches the hub manifest
[OK]   golden imported + verified: local:backup/vzdump-lxc-9100-2026_08_12-17_31_32.tar.zst
[STEP] 8/8 provision guest 120
[SKIP]   pool felhom already exists
=== felhom-agent 0.128.0 selftest=provision (vmid=120 customer=drill-r50 hostname=drill-r50) ===
  --- front half: bring-up (provision) local:backup/vzdump-lxc-9100-2026_08_12-17_31_32.tar.zst → vmid 120 ---
time=2026-08-12T17:32:57.812+02:00 level=INFO msg="bring-up: pool membership re-asserted" vmid=120 pool=felhom
  [OK] front half: vmid 120 up (boot+running) in 1m10s; MAC=BC:24:11:D3:D7:8C
  --- back half: mint per-guest token + populate bootstrap config mount ---
time=2026-08-12T17:33:03.626+02:00 level=INFO msg="provision: back-half complete" vmid=120 mount=mp9 guest_path=/etc/felhom-bootstrap endpoint=169.254.253.1:8443
  [OK] back half: bootstrap mount mp9 → /etc/felhom-bootstrap on vmid 120 (host dir /var/lib/felhom-agent/guests/120/bootstrap)
  local-api endpoint 169.254.253.1:8443 · leaf fp 0c7b12eec0ab8c4f8e879dba1af0f7203ef82aea92b023d543b7632b865ead58 · token: minted (not printed)
=== selftest=provision OK — guest 120 provisioned + bootstrap-mounted (KEPT) ===
    next: reboot the guest → the golden's baked controller-bootstrap unit deploys the controller,
    which PULLS its controller.yaml from the hub (retrieval passphrase) and merges in this local_api.
[OK]   provision completed
[INFO]   rebooting guest 120 so the baked controller-bootstrap unit picks up the mount
[STEP] verify
[OK]   pct status: running
[OK]   onboot: 1
    mp0: local-lvm:vm-120-disk-1,mp=/var/lib/felhom,backup=1,size=70G
    mp8: /mnt/felhom-drives,mp=/mnt/felhom-drives
    rootfs: local-lvm:vm-120-disk-0,size=32G
[OK]   pool: guest 120 is a member of felhom
[OK]   acl: FelhomAgentBase@/ present (user+token)
[OK]   acl: FelhomAgentGuest@/pool/felhom present (user+token)
[OK]   acl: FelhomAgentStore@/storage/local present (user+token)
[OK]   acl: FelhomAgentStore@/storage/local-lvm present (user+token)
[OK]   acl: FelhomAgentStore@/storage/felhom-pbs present (user+token)
[OK]   acl: FelhomAgentGuest@/vms/990000 present (user+token)
[OK]   acl: FelhomAgentGuest@/vms/990001 present (user+token)
[OK]   acl: FelhomAgentGuest@/vms/990002 present (user+token)
[OK]   acl: FelhomAgentGuest@/vms/990003 present (user+token)
[OK]   acl: FelhomAgentGuest@/vms/990004 present (user+token)
[OK]   acl: FelhomAgentGuest@/vms/990005 present (user+token)
[OK]   acl: FelhomAgentGuest@/vms/990006 present (user+token)
[OK]   acl: FelhomAgentGuest@/vms/990007 present (user+token)
[OK]   acl: FelhomAgentGuest@/vms/990008 present (user+token)
[OK]   acl: FelhomAgentGuest@/vms/990009 present (user+token)
[OK]   authz signers: 2 (operator-signed self-update armed)
[OK]   controller: Up 24 seconds (healthy) (after ~0s)
[INFO]   controller image: gitea.dooplex.hu/admin/felhom-controller:0.213.0
[WARN]   cloudflared not visible yet
[INFO]   (confirm in the hub UI that host drill-r50-0a4f9a reports guest 120)

[OK] Day-0 provision SUCCESS — vmid=120 host_id=drill-r50-0a4f9a customer=drill-r50 golden=local:backup/vzdump-lxc-9100-2026_08_12-17_31_32.tar.zst
[INFO] root@pam was rotated + vaulted at step 4b — retrieve at hub → host page (the old GUI password no longer works).
