1. FIPS auto-activate at server startup only fires if fips_key already exists on disk, which on a fresh install is never true until AFTER onboarding. By the time the user completes seed-generate/restore, archipelago has been running for minutes and the startup task has long since exited. User still had to hit Activate. Fix: call spawn_post_onboarding_fips_activate() from the tail of handle_seed_generate and handle_seed_restore — the moment the fips_key materialises, a detached task runs `fips::config::install` + `archipelago-fips.service activate`. Logged only, never blocks the onboarding RPC. 2. Kiosk health-poll window was 30 × 2s (configs/ copy was 60 × 2s but unused — the heredoc in build-auto-installer-iso.sh is what actually lands on disk). On .198's slower hardware archipelago /health wasn't ready within 60s, so Chromium launched against a not-yet-running backend → blank window until manual reboot. Bumped to 150 × 2s (5 min) + TimeoutStartSec=360. .253 was already well within the window; this protects the slower box too. Standalone configs/archipelago-kiosk.service updated in lockstep so the two copies don't drift. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Archipelago OS Image Recipes
Build scripts for creating bootable Debian Linux OS images for Archipelago Bitcoin Node OS.
Quick Start
Build the ISO
# 1. Sync latest configs from live dev server
./sync-from-live.sh
# 2. Build components
./scripts/build-backend.sh
./scripts/build-frontend.sh
# 3. Build the ISO
./build-debian-iso.sh
This creates a bootable Debian Live ISO with Archipelago pre-installed.
Write to USB
# Using dd (recommended)
./write-usb-dd.sh /dev/diskN
# Or use Balena Etcher to flash the ISO
See the ISO-BUILD-CHECKLIST.md for a comprehensive build workflow.
See the Architecture documentation for detailed system information.
What's Included
- Debian Linux Base: Stable Debian 13 (Trixie) distribution
- Podman: Container runtime for apps (rootless by default)
- Archipelago Backend: Rust-based API server
- Archipelago Frontend: Vue.js web interface
- Systemd Services: Automatic service management
- Network Configuration: NetworkManager for easy setup
Build Output
results/archipelago-debian-13-x86_64.iso- Bootable hybrid ISO image
Supported Platforms
- x86_64: Dell OptiPlex, HP ProDesk 400 G4 DM, Start9 Server Pure, and other x86_64 machines
- Build Systems: macOS (requires Docker) and Linux (native or Docker)
Installation Methods
1. Live USB Boot
Boot from USB, run in live mode to test, or install to disk.
2. Full Disk Installation
From the live environment, run:
sudo /archipelago/install-to-disk.sh
This installs Archipelago to a target disk using debootstrap.
Directory Structure
image-recipe/
├── build-debian-iso.sh # Main ISO builder
├── write-usb-dd.sh # Write ISO to USB with dd
├── create-fat32-usb.sh # Alternative USB creation
├── archipelago-scripts/ # Scripts included in ISO
│ ├── install-to-disk.sh # Disk installer
│ └── setup-bitcoin.sh # Bitcoin Core setup
├── scripts/ # Build helper scripts
│ ├── build-backend.sh # Compile Rust backend
│ ├── build-frontend.sh # Build Vue.js frontend
│ └── check-dependencies.sh # Verify build requirements
└── results/ # Built ISO output
Requirements
- Docker (for macOS builds)
- xorriso (for ISO creation):
brew install xorriso - 7zip (for ISO extraction):
brew install p7zip