Gmer4Lfe
1badb93331
Make the onboard-in-progress state survive a page reload
...
It was a browser flag set on click, and refreshing is the first thing anyone does when a page looks stuck — which put them back on the phase-1 panel the state exists to replace.
2026-08-17 13:06:45 -04:00
Gmer4Lfe
e23358ea0c
Tell the mirror that Phase 2 is running instead of leaving it on a greyed button
...
The mirror's own job ends in seconds while Phase 2 runs for minutes on the owner, so the screen sat unchanged on the phase-1 panel — which reads as a hang, and the reasonable response to a hang is to start clicking.
2026-08-17 12:25:16 -04:00
Gmer4Lfe
74e3b8b067
Resolve docker_network_connect.sh on the mirror, and give the wizard poll time to outlast Phase 2
...
Step 1b ran the owner's SCRIPTS_ROOT path over SSH on the mirror, so it failed on every appdata install; the wizard poll expired at 5 minutes against a Phase 2 that takes over 4.
2026-08-17 12:12:10 -04:00
Gmer4Lfe
9a1254048e
Match the WebUI template by its XML Name element, and count the final sync on rsync's actual exit
...
The lookup grepped for a quoted container name that appears in no Unraid template, so every offboard reported four WebUIs it could not reconfigure. The final sync counted a share synced whenever Tier 1 was on, ignoring rsync.sh's status entirely.
2026-08-17 11:57:46 -04:00
Gmer4Lfe
7ae510ed28
Point the WebGUI symlink at the actual install, and report this host's identity rather than HOST1's
...
The .plg hardcoded the flash path and runs every boot, so an appdata node served a stale copy that never receives pulls — fixes appeared to do nothing, indefinitely.
2026-08-17 11:52:33 -04:00
Gmer4Lfe
cd21fca749
Give the wizard an ending: big checkmark plus a way out, and refresh it when the onboard lands
...
With nothing blocking but optional keys unfilled the banner rendered an empty string, so a finished onboard showed a blank panel beside a Join button still greyed at Running.
2026-08-17 11:47:01 -04:00
Gmer4Lfe
ead5d38d7c
Hide the seed strip on the mirror — it describes a push the mirror cannot make
2026-08-17 11:42:32 -04:00
Gmer4Lfe
c4bfa6bdfe
Show the mirror it is onboarded, and stop offering it owner-side actions
...
The phase-2 branch of the mirror panel returned the same Join partnership / Onboard block as the not-started state, so a finished onboard read as one that never ran.
2026-08-17 11:42:10 -04:00
Gmer4Lfe
d8a77c700b
Stop counting a gated-off critical rsync as an unreachable partner, and report the counter in the unit it is stored in
...
The guard tested Tier 1 only, so onboard Step 1d's posture — Tier 1 open, every Tier 2 closed — made a healthy partner climb toward auto-offboard every 30 minutes. The counter holds intervals, not days, and was rendered raw.
2026-08-17 11:39:19 -04:00
Gmer4Lfe
5fc53948c6
Treat an ACTIVE partnership as phase 2 regardless of the flags
...
HOST<n>_PHASE*_DONE only ever describe the mirror, so on the mirror the owner's card computed phase 0 and offered to onboard the host that had just onboarded it.
2026-08-17 11:36:00 -04:00
Gmer4Lfe
ff94ccb343
Make the setup-state push report whether it worked
...
It was documented 'Always returns 0', so the offboard's new 'Phase flags pushed' check was testing a constant and ticking regardless.
2026-08-17 10:57:56 -04:00
Gmer4Lfe
42711ff9ac
Bring the seed docs in line with Phase 3
2026-08-17 10:24:41 -04:00
Gmer4Lfe
7c957d96be
Make seeding Phase 3 — its own operator-triggered phase, not the tail of an onboard
...
Onboard now ends at Phase 2: connected, running, and saying so. Phase 3 sets the seeding gate posture and dispatches the seed. With MEDIA_SEED_ENABLED false there is no Phase 3 and the model is two phases.
2026-08-17 10:23:03 -04:00
Gmer4Lfe
1a47f864f9
Put the media seed behind MEDIA_SEED_ENABLED so a partner filled by other means never starts a multi-week transfer
...
Tier 2 beside the per-orchestrator gates. Unset reads as on — the toggle postdates the seed.
2026-08-17 07:46:51 -04:00
Gmer4Lfe
ad623353bc
Stop the media seed from holding the onboard, and therefore the partnership, open for weeks
...
A first seed is ~28 TB behind a 12.5 MB/s bwlimit, and it ran inline as Step 9d, so the
phase-2 flag every status reader depends on was written only after it finished.
2026-08-17 07:40:00 -04:00
Gmer4Lfe
9d2610a911
Stop the host card claiming it is waiting for a partner after the onboard was cancelled
2026-08-17 07:23:48 -04:00
Gmer4Lfe
d8e3c09b57
Skip the key step when SSH already works, and read the install path live on both sides
2026-08-17 07:04:46 -04:00
Gmer4Lfe
7e7d845f61
Read the scripts dir live for the paste command, because choosing appdata moves it mid-wizard
2026-08-17 06:51:51 -04:00
Gmer4Lfe
b83c118c7f
Keep the SSH step visible until the partnership exists, not until the owner says its own phase 1 finished
2026-08-17 06:42:21 -04:00
Gmer4Lfe
069815790b
Put the join inside the wizard, send a partner to Partnership when it finishes, and say what is left
2026-08-17 06:16:36 -04:00
Gmer4Lfe
fe58fb7826
File the owner's containers on the mirror during onboard, with the icon resolved where the Emby key is
2026-08-17 05:33:52 -04:00
Gmer4Lfe
6dbb076a1e
Name the partner fallback folder from master.conf and give it the closest Emby user's avatar
2026-08-17 05:27:25 -04:00
Gmer4Lfe
3676526daf
Remove the Docker tab and stop overwriting folder.view3's file, which destroyed folders made in its own UI
2026-08-17 05:11:00 -04:00
Gmer4Lfe
a46317de18
Make tailscale removal opt-in, since it depends on a key that expires and no-ops silently once it has
2026-08-17 04:49:32 -04:00
Gmer4Lfe
2cbc06a683
Show a launched job's progress, stop a refused rerun from overwriting the live record, and label deployed containers so Unraid owns them
2026-08-17 04:26:32 -04:00
Gmer4Lfe
cce1e25c2b
Let a non-blocking checklist item be dismissed with a recorded decision, and run discovery on the mirror once there is something to discover
2026-08-16 21:56:00 -04:00
Gmer4Lfe
5bdf3bff60
Report each teardown and setup step from what it did, not from whether it was attempted
2026-08-16 21:46:26 -04:00
Gmer4Lfe
3ae6298656
Let a partner adopt the owner's custom networks from the conf phase 1 already cached, instead of asking for a value it cannot know
2026-08-16 21:20:59 -04:00
Gmer4Lfe
23825a824d
Create the networks our own pushed templates name, instead of trusting a fresh mirror to have uncommented them
2026-08-16 20:50:10 -04:00
Gmer4Lfe
cf67393db6
Read varaverk.cfg the way bash and the PHP side both read it, so a comment on the SCRIPTS_DIR line cannot disable cron suppression
2026-08-16 20:40:23 -04:00
Gmer4Lfe
93cdbaac57
Give the mirror the terminal step its half of phase 1 actually needs, instead of a button that cannot answer a password prompt
2026-08-16 20:16:17 -04:00
Gmer4Lfe
47ad3b3075
Push the API key to the conf path the partner actually uses, and say so when there is no conf there
2026-08-16 19:59:15 -04:00
Gmer4Lfe
35e59d2510
Let the plugin read partner vars from the same RAM cache bash reads, so PHP and bash cannot disagree about a partner
2026-08-16 19:40:49 -04:00
Gmer4Lfe
4f95cc6d13
Deliver master.conf to a node that has no Varaverk on it yet, which is the node that needs it
...
Phase 1 exists to hand the partner its identity before the install, but the push refused any
host without varaverk.cfg — so the conf could only ever reach a node that no longer needed it
to be told who it was. It now resolves the remote's conf directory across both install layouts
and creates the internal one when neither exists.
2026-08-16 16:14:23 -04:00
Gmer4Lfe
f627658567
Read the partner's identity out of master.conf instead of asking for it again
2026-08-16 13:56:09 -04:00
Gmer4Lfe
3c24550b19
Derive the pull target from the install location, so master.conf is safe to share between hosts
2026-08-16 13:54:05 -04:00
Gmer4Lfe
98fab394a1
Resolve the partner through the shared Tailscale resolver, so a shared-tailnet peer is findable
2026-08-16 13:43:02 -04:00
Gmer4Lfe
6fbc2b4125
Stop a missing SSH key making every Tailscale peer look like the Gitea host, and say so when the scripts are absent
2026-08-16 13:31:24 -04:00
Gmer4Lfe
64de77c065
Let the setup checklist create the SSH key it is asking for, instead of linking to a guide
2026-08-16 13:24:26 -04:00
Gmer4Lfe
0fe3435033
Let the conf push seed a node that has no master.conf yet, which is the node it exists to seed
2026-08-16 13:05:04 -04:00
Gmer4Lfe
28273ffc2a
Retire domains nothing has probed in 90 days, and notice NPM changes within five minutes
2026-08-16 12:12:08 -04:00
Gmer4Lfe
7b65b64864
Let the uptime history card be folded away, and remember that per browser
2026-08-16 12:06:52 -04:00
Gmer4Lfe
b90fd59544
Separate the four uptime periods so they read as four graphs, not one
2026-08-16 12:02:08 -04:00
Gmer4Lfe
d5ee2d7ef1
Tell a decommissioned domain apart from a broken one in the uptime history
2026-08-16 11:59:41 -04:00
Gmer4Lfe
73358e6bae
Stop Unraid's span.warn stretching the watchdog and queue badges across their row
2026-08-16 11:55:25 -04:00
Gmer4Lfe
f2ad41e8e2
Show how each domain has behaved over a day, a week, a month and a year, not just now
2026-08-16 11:55:25 -04:00
Gmer4Lfe
187dc188c2
Namespace the proxy table's fixed-layout class so Unraid Connect's Tailwind layer cannot claim it
2026-08-16 11:27:59 -04:00
Gmer4Lfe
ea2d3cf597
Size the proxy columns by proportion, so nothing can outgrow the page
2026-08-16 02:14:38 -04:00
Gmer4Lfe
bd30c4e05a
Stop the proxy table widening its own column instead of scrolling inside it
2026-08-16 02:10:22 -04:00
Gmer4Lfe
51283a626c
Match the Tools mode convention — wrappers execute, php files do not
2026-08-16 01:59:58 -04:00