archy/.claude/memory/iso-build-session-2026-03-10.md
2026-03-10 23:29:05 +00:00

4.3 KiB

ISO Build Session — 2026-03-10

Status: Changes ready, NOT yet deployed or built

All changes are local. Servers were unreachable at end of session (network issue, not crash). Need to: deploy to .228 → build new ISO → copy to File Browser Builds folder.

Changes Made (Local, Uncommitted)

1. ISO Login Fix (image-recipe/build-auto-installer-iso.sh)

  • Problem: chpasswd fails silently in chroot (PAM not available), leaving password locked
  • Fix: Direct /etc/shadow manipulation with sed using SHA-512 hash from openssl passwd -6
  • Pre-computed hash as fallback if openssl unavailable
  • Verification check + chpasswd fallback
  • Also added root:archipelago password in Dockerfile
  • Credentials: archipelago / archipelago (TTY/SSH), password123 (Web UI)

2. Onboarding "Server Starting Up" UX (4 Vue files)

  • Problem: On fresh install, backend takes 2-5 min to start. Onboarding shows scary error messages.
  • OnboardingDid.vue: Replaced 3-attempt retry with persistent auto-retry every 4s. Shows "Server starting up" with elapsed timer (e.g. 1:23) to the right. Keeps trying until backend responds.
  • OnboardingIdentity.vue: Detects 502/503, shows orange "Server is still starting up" instead of red error.
  • OnboardingBackup.vue: Same friendly server-starting message.
  • OnboardingVerify.vue: Same friendly server-starting message.

3. First-Boot Container Fixes (scripts/first-boot-containers.sh)

  • Problem: Race conditions — services start before dependencies are ready
  • Added wait_for_container() function with configurable timeout and logging
  • Bitcoin Knots: Added RPC health check wait (up to 60s) before LND/NBXplorer/mempool start
  • BTCPay PostgreSQL: Replaced sleep 3 with pg_isready health check (up to 30s)
  • Mempool MariaDB: Replaced sleep 3 with connection check (up to 30s)
  • File Browser: Removed --read-only and --cap-drop ALL (was preventing database creation). Added separate /database volume mount.

4. Build Skill Updated (.claude/skills/build-iso/SKILL.md)

  • Added "Post-build: Publish to File Browser" step
  • ISO gets copied to /var/lib/archipelago/filebrowser/Builds/ after every build

Fresh Install Issues Found on .198

  • Login was broken (fixed in #1)
  • Onboarding showed 502 errors at every step (fixed in #2)
  • Containers not launching: Bitcoin Knots, BTCPay, File Browser, Grafana, LND (fixed in #3)
  • File Browser specifically: --read-only prevented database creation (fixed in #3)
  • Could not fully diagnose .198 — went offline before SSH diagnostic completed

Deploy Steps When Servers Are Back

# 1. Deploy to live server
./scripts/deploy-to-target.sh --live

# 2. Sync build script
rsync -avz -e "ssh -i ~/.ssh/archipelago-deploy" \
  image-recipe/build-auto-installer-iso.sh \
  archipelago@192.168.1.228:~/archy/image-recipe/

# 3. Sync first-boot script
rsync -avz -e "ssh -i ~/.ssh/archipelago-deploy" \
  scripts/first-boot-containers.sh \
  archipelago@192.168.1.228:~/archy/scripts/

# 4. Build ISO on server
ssh -i ~/.ssh/archipelago-deploy archipelago@192.168.1.228 \
  'cd ~/archy/image-recipe && sudo ./build-auto-installer-iso.sh'

# 5. Copy to File Browser
ssh -i ~/.ssh/archipelago-deploy archipelago@192.168.1.228 \
  'sudo mkdir -p /var/lib/archipelago/filebrowser/Builds && \
   sudo cp ~/archy/image-recipe/results/archipelago-installer-x86_64.iso \
   /var/lib/archipelago/filebrowser/Builds/'

# 6. Download to Mac
scp -i ~/.ssh/archipelago-deploy \
  archipelago@192.168.1.228:~/archy/image-recipe/results/archipelago-installer-x86_64.iso \
  ~/Downloads/

Files Modified (git diff summary)

  • image-recipe/build-auto-installer-iso.sh — password fix + Dockerfile root password
  • scripts/first-boot-containers.sh — health checks + filebrowser fix
  • scripts/deploy-to-target.sh — Tor permission fixes (from earlier)
  • neode-ui/src/views/OnboardingDid.vue — auto-retry with timer
  • neode-ui/src/views/OnboardingIdentity.vue — server-starting detection
  • neode-ui/src/views/OnboardingBackup.vue — server-starting detection
  • neode-ui/src/views/OnboardingVerify.vue — server-starting detection
  • .claude/skills/build-iso/SKILL.md — added File Browser publish step
  • Frontend already built: web/dist/neode-ui/ is up to date