close-out 2026-10-30: R-1344 and R-1346 closed, R-1228 switched (D35) and narrowed; R-1352, R-1353 filed; 01/03/05 [DESIGN], total-loss + publish-train runbooks, poster facts; instruction files: the site publishes to Cloudflare Pages
gates / gates (push) Successful in 1m47s

This commit is contained in:
admin committed 2026-10-30 11:13:17 +01:00
1 parent e0e55bf852
commit 3cda7e8d6c
30 files changed
+561 -17

No files matched your search

@@ -0,0 +1,5 @@
2026-10-30T10:22:21+01:00 felhom felhom-agent[2609044]: time=2026-10-30T10:22:21.806+01:00 level=INFO msg="controller-supervisor: alive" sweeps_since_boot=20 guests_evaluated=1 controllers_not_running=0
2026-10-30T10:29:21+01:00 felhom felhom-agent[2609044]: time=2026-10-30T10:29:21.932+01:00 level=ERROR msg="controller-supervisor: the controller RUNS but does not answer its health check — raising controller_unresponsive; restarting it if it stays so" vmid=9201 unhealthy_sweeps=6 interval=30s restart_after_sweeps=10
2026-10-30T10:31:22+01:00 felhom felhom-agent[2609044]: time=2026-10-30T10:31:22.888+01:00 level=WARN msg="controller-supervisor: the controller does not answer — restarting the bootstrap unit" vmid=9201 unhealthy_sweeps=10 since=2026-10-30T09:29:21Z unit=felhom-controller-bootstrap.service
2026-10-30T10:31:24+01:00 felhom felhom-agent[2609044]: time=2026-10-30T10:31:24.361+01:00 level=WARN msg="controller-supervisor: RESTARTED the controller" vmid=9201 reason="the controller ran but did not answer its health check for 10 sweeps (since 2026-10-30T09:29:21Z)" restarts_24h=1
2026-10-30T10:31:51+01:00 felhom felhom-agent[2609044]: time=2026-10-30T10:31:51.841+01:00 level=INFO msg="controller-supervisor: the controller answers its health check again" vmid=9201
@@ -0,0 +1,18 @@
09:25:02 running healthy streak=0 started=2026-10-29T19:07:00.843131965Z
09:25:33 running healthy streak=1 started=2026-10-29T19:07:00.843131965Z
09:26:05 running healthy streak=2 started=2026-10-29T19:07:00.843131965Z
09:26:36 running unhealthy streak=3 started=2026-10-29T19:07:00.843131965Z
09:27:08 running unhealthy streak=3 started=2026-10-29T19:07:00.843131965Z
09:27:39 running unhealthy streak=4 started=2026-10-29T19:07:00.843131965Z
09:28:11 running unhealthy streak=5 started=2026-10-29T19:07:00.843131965Z
09:28:42 running unhealthy streak=6 started=2026-10-29T19:07:00.843131965Z
09:29:13 running unhealthy streak=7 started=2026-10-29T19:07:00.843131965Z
09:29:45 running unhealthy streak=8 started=2026-10-29T19:07:00.843131965Z
09:30:16 running unhealthy streak=9 started=2026-10-29T19:07:00.843131965Z
09:30:48 running unhealthy streak=10 started=2026-10-29T19:07:00.843131965Z
09:31:19 running unhealthy streak=11 started=2026-10-29T19:07:00.843131965Z
09:31:50 running healthy streak=0 started=2026-10-30T09:31:24.212057217Z
DONE
2026-10-30T10:29:21+01:00 felhom felhom-agent[2609044]: time=2026-10-30T10:29:21.932+01:00 level=ERROR msg="controller-supervisor: the controller RUNS but does not answer its health check — raising controller_unresponsive; restarting it if it stays so" vmid=9201 unhealthy_sweeps=6 interval=30s restart_after_sweeps=10
2026-10-30T10:31:22+01:00 felhom felhom-agent[2609044]: time=2026-10-30T10:31:22.888+01:00 level=WARN msg="controller-supervisor: the controller does not answer — restarting the bootstrap unit" vmid=9201 unhealthy_sweeps=10 since=2026-10-30T09:29:21Z unit=felhom-controller-bootstrap.service
2026-10-30T10:31:24+01:00 felhom felhom-agent[2609044]: time=2026-10-30T10:31:24.361+01:00 level=WARN msg="controller-supervisor: RESTARTED the controller" vmid=9201 reason="the controller ran but did not answer its health check for 10 sweeps (since 2026-10-30T09:29:21Z)" restarts_24h=1
@@ -0,0 +1,83 @@
# D35 / R-1228 — the website and the installer on Cloudflare (plan, 2026-10-30)
Operator ruling D35 = YES (2026-10-23): the static website and the installer are served from Cloudflare like the ISO;
the hub and Gitea stay on DooPlex (R-1228's option B). This plan was written before anything on Cloudflare changed.
## 1. What is served today (read from the source, 2026-10-30)
| Address | Served by | What a box, the ISO or a person fetches |
|---|---|---|
| `felhom.eu`, `www.felhom.eu` (CNAME → the home line, not proxied) | DooPlex: nginx + git-sync of `website/` at `main` (`manifests/webpage.yaml`) | the 19 Hungarian and 11 English pages, `sitemap.xml`, `robots.txt`, `assets/` |
| `felhom.eu/scripts/…` | DooPlex: a second git-sync of `scripts/` at the tag `installer-v1.36.1` | **`/scripts/felhom-host-install.sh`** — the only `/scripts/` file anything fetches: the ISO's first boot (`scripts/iso/felhom-bootstrap.sh:168`, `FELHOM_INSTALL_URL` default) and the hub's day-0 command (`customer_unified.html`). sha256 `e18cdd17…aa1f1` = the tag's |
| `felhom.eu/api/contact` | DooPlex: `contact-mailer` (`manifests/contact-mailer.yaml`, Resend) | the contact form's POST (`kapcsolat.html`, `en/contact.html`) — **the one dynamic part** |
| `stats.felhom.eu` | DooPlex: Umami | the analytics script every page loads (a separate name — unchanged) |
| `iso.felhom.eu` | Cloudflare R2 (proxied CNAME) | the installer ISO — already off DooPlex |
| `hub.felhom.eu`, `gitea.dooplex.hu` | DooPlex | the box's claim and reports; the agent download — **stay on DooPlex (D35)** |
Inside the installer every other address is the hub, Gitea (the agent package) and `download.proxmox.com` — nothing
else from `felhom.eu`.
## 2. Where each goes — Cloudflare Pages, one project `felhom-site`
**Pick: Cloudflare Pages, not R2.** Fewest moving parts: Pages serves clean URLs (`/kapcsolat` → `kapcsolat.html`),
the site's `404.html` with status 404, directory indexes (`/en/`) and compression with no configuration — exactly what
nginx's `try_files $uri $uri.html $uri/` does today. R2 behind a custom domain serves objects by exact key only: no
clean URLs, no index, no 404 page, so it would need a Worker in front — one more piece to own.
- `/` ← `website/` from `origin/main`; `/scripts/` ← `scripts/` from the installer tag named in `manifests/webpage.yaml`
(the same two refs, the same files as DooPlex — 487 files, 25 MB).
- **The contact form cannot be static.** It stays on DooPlex (`contact-mailer`, which already answers CORS for
`https://felhom.eu`). After the switch `felhom.eu/api/contact` would reach Cloudflare, not DooPlex, so the form
needs its own name on DooPlex — e.g. `api.felhom.eu` → the same ingress, and the form's `formEndpoint` pointing there.
That is a DooPlex ingress change and a DNS name: **it waits for the operator's word** (the switch STOP). Without it the
form shows an error on Cloudflare; the page's `mailto:info@felhom.eu` link still works.
- `stats.felhom.eu`, `files.felhom.eu`, `hub.felhom.eu`, `ntfy.felhom.eu`: unchanged.
## 3. How a release reaches it
`scripts/publish-site-cloudflare.sh` (run under `sec run CF_PAGES_TOKEN --`): stages both trees from git, REFUSES when
the staged installer is not the tag's byte for byte, when a must-have page is missing, or when the manifest names more
than one tag; `--dry-run` stages and prints without uploading. The upload is wrangler in a pinned node container; the
token reaches it as an environment variable name only.
- **A website edit:** push to `main` (DooPlex picks it up as before) AND run the script (Cloudflare). After the switch
only the script matters.
- **An installer release:** cut `installer-v<X>`, bump BOTH `--ref`s in `manifests/webpage.yaml` (as today), then run
the script — it reads the tag from the manifest, so the two copies cannot differ.
## 4. What stays on DooPlex
The hub (`hub.felhom.eu`), Gitea and the registry (`gitea.dooplex.hu` — the agent package a new install downloads),
the contact mailer, Umami, FileBrowser, ntfy. **A new install still needs DooPlex for:** the hub's claim and its first
report (`hub.felhom.eu`), and the agent package from Gitea. It no longer needs DooPlex to fetch the installer.
## 5. The switch (only after the operator's yes) and the way back
Switch: in the Pages project add the custom domains `felhom.eu` and `www.felhom.eu`; Cloudflare replaces the two
CNAMEs to the home line with proxied records to `felhom-site.pages.dev`. Way back (7 days, DooPlex's webpage keeps
running): set the two records back to `CNAME dooplex.hopto.org`, not proxied (the values in `dns-before.json`), and
remove the two custom domains from the project. DooPlex's Let's Encrypt certificate for felhom.eu is valid until its
next renewal; a renewal after the switch fails (HTTP-01 reaches Cloudflare), which is the reason the way back is 7 days
and not open-ended.
## 6. Result (2026-10-30, after the plan)
- **Test address:** Pages project `felhom-site` + `preview.felhom.eu` (proxied CNAME). `sitecheck.sh`: 30 of 30 (every
page by its clean URL, the sitemap, robots, an asset, a missing page = 404, the installer's sha256 = the tag's).
Control: the same check against DooPlex's felhom.eu before the switch, 30 of 30.
- **Install proof:** throwaway VM 3461 on demo-hp (scratch NVMe, never the thin pool) from the public ISO 1.30.0
(sha256 = `iso.felhom.eu`'s). Booted with the cable unplugged, `FELHOM_INSTALL_URL` pointed at the test address, then
plugged in: the first boot reached the hub and registered as an unclaimed appliance (pairing mode — the installer is
fetched after a bind, which is a session-only operator act). The installer fetched from the test address (sha256 =
the tag's) passed `--preflight-only` (customer Tester4, read-only `GET /config`). After the switch the same preflight
with the installer fetched from `felhom.eu` passed again. The full install was not run: it needs the operator's bind
and would create Tester4's tunnel and off-site account. VM 3461 destroyed; the hub's unclaimed entry (uuid
`d3529d2d…`) is the operator's to discard.
- **The contact form:** `api.felhom.eu` (DNS to the home line, not proxied; ingress `contact-mailer-api`, only
`/api/contact`, 20 requests a minute per client; certificate issued). Preflight from `https://felhom.eu` 204; one test
message 200, and it arrived at info@felhom.eu (read through the mailbox).
- **Switch:** 10:02:35 UTC (operator yes): `felhom.eu` and `www` → `felhom-site.pages.dev`, proxied; the project's two
custom domains active at 10:03:47 (about 70 s of 522 in between). After: 30 of 30 on both names (one 522 on the first
pass, then 30 of 30 twice), `server: cloudflare`, the installer's sha256 = `installer-v1.36.1`.
- **Undo (until 2026-11-06):** `switch-undo.txt` holds the two record ids; set both back to `CNAME dooplex.hopto.org`,
`proxied: false`, and remove the two custom domains from `felhom-site`. DooPlex's webpage still serves both names.
@@ -0,0 +1,20 @@
project : felhom-site (account 9e432dea3b6befc7c87a41npm warn deprecated sourcemap-316049f162)
website : origin/main e0e55bf8
installer : installer-v1.36.1 — scripts/felhom-host-install.sh sha256 e18cdd17823911e7d87da12fcb8d48b6827f1706a84b3168114fe19fe30aa1f1
files : 487 (25M)
Uploading... (484/487)
Uploading... (485/487)
Uploadingcodec@1.4.8: Please use @jridgewell/sourcemap-codec instead
npm warn deprecated rollup-plugin-inject@3.0.2: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.
npm ... (486/487)
Uploading... (487/487)
✨ Success! Uploaded 3 files (484 already uploaded) (1.36 sec)
🌎 Deploying...
✨ Deployment complete! Takenotice
npm notice New major version of npm available! 10.8.2 -> 12.2.1
npm notice Changelog: https://github.com/npm/cli/releases/tag/v12.2.1
npm notice To update run: npm install -g npm@12.2.1
npm notice
a peek over at https://a833afb5.felhom-site.pages.dev
UPLOADED — check it from outside: the pages answer, and the installer's sha256 is e18cdd17823911e7d87da12fcb8d48b6827f1706a84b3168114fe19fe30aa1f1
@@ -0,0 +1,135 @@
[
{
"type": "A",
"name": "ep0.felhom.eu",
"proxied": false,
"ttl": 1,
"content": "<masked public address>"
},
{
"type": "AAAA",
"name": "ep0.felhom.eu",
"proxied": false,
"ttl": 1,
"content": "<masked public address>"
},
{
"type": "CNAME",
"name": "felhom.eu",
"proxied": false,
"ttl": 1,
"content": "dooplex.hopto.org"
},
{
"type": "CNAME",
"name": "files.felhom.eu",
"proxied": false,
"ttl": 1,
"content": "dooplex.hopto.org"
},
{
"type": "CNAME",
"name": "hub.felhom.eu",
"proxied": false,
"ttl": 1,
"content": "dooplex.hopto.org"
},
{
"type": "CNAME",
"name": "iso.felhom.eu",
"proxied": true,
"ttl": 1,
"content": "public.r2.dev"
},
{
"type": "CNAME",
"name": "ntfy.felhom.eu",
"proxied": false,
"ttl": 1,
"content": "dooplex.hopto.org"
},
{
"type": "CNAME",
"name": "stats.felhom.eu",
"proxied": false,
"ttl": 1,
"content": "dooplex.hopto.org"
},
{
"type": "CNAME",
"name": "www.felhom.eu",
"proxied": false,
"ttl": 1,
"content": "dooplex.hopto.org"
},
{
"type": "MX",
"name": "felhom.eu",
"proxied": false,
"ttl": 1,
"content": "route3.mx.cloudflare.net"
},
{
"type": "MX",
"name": "felhom.eu",
"proxied": false,
"ttl": 1,
"content": "route2.mx.cloudflare.net"
},
{
"type": "MX",
"name": "felhom.eu",
"proxied": false,
"ttl": 1,
"content": "route1.mx.cloudflare.net"
},
{
"type": "MX",
"name": "send.felhom.eu",
"proxied": false,
"ttl": 1,
"content": "feedback-smtp.eu-west-1.amazonses.com"
},
{
"type": "TXT",
"name": "cf2024-1._domainkey.felhom.eu",
"proxied": false,
"ttl": 1,
"content": "\"v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgk\u2026"
},
{
"type": "TXT",
"name": "_dmarc.felhom.eu",
"proxied": false,
"ttl": 1,
"content": "\"v=DMARC1; p=quarantine; rua=mailto:a18d\u2026"
},
{
"type": "TXT",
"name": "felhom.eu",
"proxied": false,
"ttl": 3600,
"content": "\"google-site-verification=Iiq-C0udb1fHvE\u2026"
},
{
"type": "TXT",
"name": "felhom.eu",
"proxied": false,
"ttl": 1,
"content": "\"v=spf1 include:_spf.mx.cloudflare.net ~\u2026"
},
{
"type": "TXT",
"name": "resend._domainkey.felhom.eu",
"proxied": false,
"ttl": 1,
"content": "\"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBg\u2026"
},
{
"type": "TXT",
"name": "send.felhom.eu",
"proxied": false,
"ttl": 1,
"content": "\"v=spf1 include:amazonses.com ~all\"\u2026"
}
]
@@ -0,0 +1,5 @@
[INFO] felhom-host-install v1.36.1 — mode=appliance customer=Tester4 vmid=9201
[INFO] hub reachable (https://hub.felhom.eu)
[OK] customer 'Tester4' exists + passphrase valid
[OK] PRE-FLIGHT PASS (mode=appliance) — no state written, no install step executed
ls: cannot access '/root/.pp': No such file or directory
@@ -0,0 +1,24 @@
[INFO] auto-sized guest RAM: 4096 MiB (host 7872 MiB; clamp(host-4096, min 4096, max host-2048), ceiling host-1024)
[INFO] auto-sized guest cores: 3 (host 4 cores; host-1, min 2)
[INFO] felhom-host-install v1.36.1 — mode=appliance customer=Tester4 vmid=9201
[STEP] 1/8 pre-flight
[INFO] pve-manager/9.2.2/b9984c6d90a4bd80 (running kernel: 7.0.2-6-pve)
[INFO] node: r-proof (auto)
[INFO] agent config: /etc/felhom-agent/agent.json
[INFO] agent: not installed yet — will be fetched + installed in step 5/8
[INFO] local-lvm free: ~19 GiB
[WARN] local-lvm free ~19 GiB is below the recommended 120 GiB — the install continues; proceed only if you sized the grows deliberately
[INFO] free RAM: ~6276 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: not present before Felhom — would be recorded at install; uninstall will remove it again if we install it
[INFO] hub reachable (https://hub.felhom.eu)
[OK] customer 'Tester4' exists + passphrase valid
[INFO] golden: none local — will fetch + verify from Gitea in step 7/8
[OK] pre-flight passed
[OK] PRE-FLIGHT PASS (mode=appliance) — no state written, no install step executed
ls: cannot access '/root/.pp': No such file or directory
@@ -0,0 +1,7 @@
BAD /gepigeny -> 522 (want 200)
installer sha256 e18cdd17823911e7d87da12fcb8d48b6827f1706a84b3168114fe19fe30aa1f1 = installer-v1.36.1
https://felhom.eu: 29 ok, 1 bad
installer sha256 e18cdd17823911e7d87da12fcb8d48b6827f1706a84b3168114fe19fe30aa1f1 = installer-v1.36.1
https://www.felhom.eu: 30 ok, 0 bad
https://felhom.eu: 30 ok, 0 bad
https://felhom.eu: 30 ok, 0 bad
@@ -0,0 +1,2 @@
installer sha256 e18cdd17823911e7d87da12fcb8d48b6827f1706a84b3168114fe19fe30aa1f1 = installer-v1.36.1
https://preview.felhom.eu: 30 ok, 0 bad
@@ -0,0 +1,14 @@
#!/bin/sh
# sitecheck.sh <base-url> — every page of website/ (clean URL), the sitemap, an asset, a missing page (must be 404),
# and the installer's sha256 against installer-v1.36.1. Prints one line per check and a summary.
B="$1"; R=/mnt/5_hdd/felhom.eu/git/felhom.eu; ok=0; bad=0
chk() { code=$(curl -s -o /dev/null -w '%{http_code}' "$B$1"); if [ "$code" = "$2" ]; then ok=$((ok+1)); else bad=$((bad+1)); echo "BAD $1 -> $code (want $2)"; fi; }
for f in $(cd $R/website && find . -name '*.html' | sed 's|^\./||' | sort); do
case "$f" in 404.html) continue;; index.html) p=/;; */index.html) p=/${f%index.html};; *) p=/${f%.html};; esac
chk "$p" 200
done
chk /sitemap.xml 200; chk /robots.txt 200; chk /assets/site.css 200; chk /no-such-page-r1228 404
want=$(git -C $R show installer-v1.36.1:scripts/felhom-host-install.sh | sha256sum | cut -d' ' -f1)
got=$(curl -fsS "$B/scripts/felhom-host-install.sh" | sha256sum | cut -d' ' -f1)
[ "$want" = "$got" ] && { ok=$((ok+1)); echo "installer sha256 $got = installer-v1.36.1"; } || { bad=$((bad+1)); echo "BAD installer sha256 $got (want $want)"; }
echo "$B: $ok ok, $bad bad"
@@ -0,0 +1,2 @@
felhom.eu eb47a1a1767c004c45d66d8578416080 dooplex.hopto.org False 1
www.felhom.eu a2915d01210d784bbef00ec5ab174f95 dooplex.hopto.org False 1
@@ -0,0 +1,38 @@
project : felhom-site (account 9e432dea3b6befc7c87a41Unable to find image 'node:20.17.0-alpine' locally
20.17.0-alpine: Pulling from library/node
737da86e5e86: Pulling fs layer
43c4264eed91: Pulling fs layer
842cd80f9366: Pulling fs layer
c36270121b0c: Pulling fs layer
737da86e5e86: Download complete
842cd80f9366: Download complete
43c4264eed91: Download complete
43c4264eed91: Pull complete
7f15c96a8a88: Download complete
c36270121b0c: Download complete
46839ec416f9: Download complete
c36270121b0c: Pull complete
737da86e5e86: Pull complete
842cd80f9366: Pull complete
Digest: sha256:2d07db07a2df6830718ae2a47db6fedce6745f5bcd174c398f2acdda90a11c03
Status: Downloaded newer image for node:20.17.0-alpine
npm warn deprecated rollup-plu316049f162)
website : origin/main cea8a907
installer : installer-v1.36.1 — scripts/felhom-host-install.sh sha256 e18cdd17823911e7d87da12fcb8d48b6827f1706a84b3168114fe19fe30aa1f1
files : 487 (25M)
Uploading... (0/487)
Uploading..gin-inject@3.0.2: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.
npm warn deprecated sourcemap-codec@1.4.8: Please use @jridgewell/sourcemap-codec instead
npm . (162/487)
Uploading... (324/487)
Uploading... (487/487)
✨ Success! Uploaded 487 files (6.09 sec)
🌎 Deploying...
✨ Deployment complete! Takenotice
npm notice New major version of npm available! 10.8.2 -> 12.2.1
npm notice Changelog: https://github.com/npm/cli/releases/tag/v12.2.1
npm notice To update run: npm install -g npm@12.2.1
npm notice
a peek over at https://06026223.felhom-site.pages.dev
UPLOADED — check it from outside: the pages answer, and the installer's sha256 is e18cdd17823911e7d87da12fcb8d48b6827f1706a84b3168114fe19fe30aa1f1
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

@@ -0,0 +1,36 @@
2026-10-30T00:41:21-09:00 r-proof systemd[1]: Starting felhom-bootstrap.service - Felhom host bootstrap (fetch + run felhom-host-install.sh unattended, retry until success)...
2026-10-30T00:41:21-09:00 r-proof felhom-bootstrap.sh[1356]: felhom-bootstrap: console: pvebanner.service masked (it would rewrite /etc/issue with the Proxmox admin URL on every boot)
2026-10-30T00:41:21-09:00 r-proof felhom-bootstrap.sh[1356]: felhom-bootstrap: console: /etc/issue is the Felhom text (no admin URL)
2026-10-30T00:41:31-09:00 r-proof felhom-bootstrap.sh[1356]: felhom-bootstrap: network gate: hub unreachable (https://hub.felhom.eu) — diagnosing (R-59)
2026-10-30T00:41:33-09:00 r-proof felhom-bootstrap.sh[1356]: felhom-bootstrap: network gate: NIC status:
2026-10-30T00:41:33-09:00 r-proof felhom-bootstrap.sh[1356]: nic0 bc:24:11:f5:ca:95 kábel: nincs ?
2026-10-30T00:41:33-09:00 r-proof felhom-bootstrap.sh[1356]: felhom-bootstrap: network sweep: trying vmbr0 -> nic0 (bounded DHCP 20s + hub probe)
2026-10-30T00:41:54-09:00 r-proof felhom-bootstrap.sh[1356]: felhom-bootstrap: network gate: sweep found no NIC that reaches the hub — console screen + retry every 60s
2026-10-30T00:41:54-09:00 r-proof felhom-bootstrap.sh[1356]: felhom-bootstrap: console font -> Lat2-Terminus16 (Latin-2, ő/ű capable)
2026-10-30T00:43:06-09:00 r-proof felhom-bootstrap.sh[1356]: felhom-bootstrap: network gate: NIC status:
2026-10-30T00:43:06-09:00 r-proof felhom-bootstrap.sh[1356]: nic0 bc:24:11:f5:ca:95 kábel: nincs ?
2026-10-30T00:43:06-09:00 r-proof felhom-bootstrap.sh[1356]: felhom-bootstrap: network sweep: trying vmbr0 -> nic0 (bounded DHCP 20s + hub probe)
2026-10-30T00:43:28-09:00 r-proof felhom-bootstrap.sh[1356]: felhom-bootstrap: network gate: sweep found no NIC that reaches the hub — console screen + retry every 60s
2026-10-30T00:44:40-09:00 r-proof felhom-bootstrap.sh[1356]: felhom-bootstrap: network gate: NIC status:
2026-10-30T00:44:40-09:00 r-proof felhom-bootstrap.sh[1356]: nic0 bc:24:11:f5:ca:95 kábel: nincs ?
2026-10-30T00:44:40-09:00 r-proof felhom-bootstrap.sh[1356]: felhom-bootstrap: network sweep: trying vmbr0 -> nic0 (bounded DHCP 20s + hub probe)
2026-10-30T00:44:51-09:00 r-proof systemd[1]: felhom-bootstrap.service: Main process exited, code=killed, status=15/TERM
2026-10-30T00:44:51-09:00 r-proof systemd[1]: felhom-bootstrap.service: Failed with result 'signal'.
2026-10-30T00:44:51-09:00 r-proof systemd[1]: Stopped felhom-bootstrap.service - Felhom host bootstrap (fetch + run felhom-host-install.sh unattended, retry until success).
2026-10-30T00:44:51-09:00 r-proof systemd[1]: felhom-bootstrap.service: Consumed 2.739s CPU time, 31.1M memory peak.
2026-10-30T00:44:51-09:00 r-proof systemd[1]: Starting felhom-bootstrap.service - Felhom host bootstrap (fetch + run felhom-host-install.sh unattended, retry until success)...
2026-10-30T00:44:52-09:00 r-proof felhom-bootstrap.sh[2309]: felhom-bootstrap: console: pvebanner.service masked (it would rewrite /etc/issue with the Proxmox admin URL on every boot)
2026-10-30T00:44:52-09:00 r-proof felhom-bootstrap.sh[2309]: felhom-bootstrap: console: /etc/issue is the Felhom text (no admin URL)
2026-10-30T00:44:52-09:00 r-proof felhom-bootstrap.sh[2309]: felhom-bootstrap: network gate: hub unreachable (https://hub.felhom.eu) — diagnosing (R-59)
2026-10-30T00:44:54-09:00 r-proof felhom-bootstrap.sh[2309]: felhom-bootstrap: network gate: NIC status:
2026-10-30T00:44:54-09:00 r-proof felhom-bootstrap.sh[2309]: nic0 bc:24:11:f5:ca:95 kábel: nincs ?
2026-10-30T00:44:54-09:00 r-proof felhom-bootstrap.sh[2309]: felhom-bootstrap: network sweep: trying vmbr0 -> nic0 (bounded DHCP 20s + hub probe)
2026-10-30T00:44:59-09:00 r-proof felhom-bootstrap.sh[2309]: felhom-bootstrap: network self-heal: vmbr0 -> nic0 (bc:24:11:f5:ca:95), hub reachable
2026-10-30T00:44:59-09:00 r-proof felhom-bootstrap.sh[2309]: felhom-bootstrap: PAIRING mode (generic ISO, no baked customer/passphrase) — hub=https://hub.felhom.eu
2026-10-30T00:44:59-09:00 r-proof felhom-bootstrap.sh[2309]: felhom-bootstrap: registering unclaimed appliance at the hub
2026-10-30T00:44:59-09:00 r-proof felhom-bootstrap.sh[2309]: felhom-bootstrap: registered — appliance token stored (0600); waiting for the operator or a customer self-bind
2026-10-30T00:44:59-09:00 r-proof felhom-bootstrap.sh[2309]: felhom-bootstrap: console font -> Lat2-Terminus16 (Latin-2, ő/ű capable)
2026-10-30T00:44:59-09:00 r-proof felhom-bootstrap.sh[2309]: felhom-bootstrap: not bound yet — polling every 30s until the operator or a customer self-bind lands (this is the normal waiting state, not an error)
2026-10-30T00:55:01-09:00 r-proof felhom-bootstrap.sh[2309]: felhom-bootstrap: still waiting to be bound (10m elapsed; polling continues)
2026-10-30T01:05:03-09:00 r-proof felhom-bootstrap.sh[2309]: felhom-bootstrap: still waiting to be bound (20m elapsed; polling continues)
FELHOM_INSTALL_URL=https://preview.felhom.eu/scripts/felhom-host-install.sh
Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB