archy/BOOT_SEQUENCE_DIAGRAM.txt
Dorian ba1a7bd3f6 Enhance README and build scripts for hardware-specific optimizations
- Updated README.md to clarify development setup for macOS/Docker and added production build instructions for specific hardware.
- Introduced new build scripts for optimized OS images targeting Start9 Server Pure, HP ProDesk 400 G4 DM, and Dell OptiPlex.
- Enhanced Dockerfile to specify platform compatibility and improved Alpine profile for Archipelago builds.
- Updated configuration files and init scripts to support new hardware profiles and ensure proper service management.
2026-01-31 19:47:52 +00:00

226 lines
20 KiB
Plaintext

```
┌─────────────────────────────────────────────────────────────────────────┐
│ ARCHIPELAGO BOOT SEQUENCE │
│ Automatic Network Connection & Server Startup │
└─────────────────────────────────────────────────────────────────────────┘
POWER ON
┌─────────────────────────────────────────────────────────────────────────┐
│ STAGE 1: SYSTEM INIT (sysinit) │
├─────────────────────────────────────────────────────────────────────────┤
│ ✓ Load kernel modules │
│ ✓ Initialize device filesystem (/dev) │
│ ✓ Detect hardware (CPU, RAM, Storage, Network) │
│ ✓ Mount filesystems │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ STAGE 2: BOOT SERVICES (boot) │
├─────────────────────────────────────────────────────────────────────────┤
│ 00-boot-services.start │
│ ├─ Enable networking service │
│ ├─ Enable hostname service │
│ ├─ Enable syslog service │
│ └─ Enable archipelago service │
│ │
│ ✓ Set hostname: "archipelago-node" │
│ ✓ Start system logging │
│ ✓ Sync hardware clock │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ STAGE 3: NETWORK CONFIGURATION (boot) │
├─────────────────────────────────────────────────────────────────────────┤
│ 01-network-setup.start │
│ │
│ Step 1: Configure Network Interfaces │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ auto eth0 │ │
│ │ iface eth0 inet dhcp │ │
│ │ hostname archipelago-node │ │
│ │ │ │
│ │ # Also configures: enp0s3, enp0s25, ens0 │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
│ Step 2: Start Networking Service │
│ ✓ Bring up Ethernet interface │
│ ✓ Send DHCP request │
│ ✓ Wait for IP address (max 30 seconds) │
│ ✓ Configure default route │
│ │
│ Step 3: Configure DNS │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ nameserver 8.8.8.8 # Google DNS │ │
│ │ nameserver 8.8.4.4 # Google DNS backup │ │
│ │ nameserver 1.1.1.1 # Cloudflare DNS │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
│ Step 4: Test Internet Connectivity │
│ → ping -c 2 8.8.8.8 │
│ ✓ Internet connection established │
│ │
│ Step 5: Display Network Information │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ Network Configuration: │ │
│ │ IP Address: 192.168.1.100/24 │ │
│ │ │ │
│ │ Access the Archipelago UI at: │ │
│ │ http://192.168.1.100:8100 │ │
│ └────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ STAGE 4: HARDWARE OPTIMIZATION (default) │
├─────────────────────────────────────────────────────────────────────────┤
│ 00-hardware-detect.start │
│ │
│ ┌──────────────────────┐ ┌──────────────────────┐ │
│ │ CPU Detection │ │ Storage Detection │ │
│ ├──────────────────────┤ ├──────────────────────┤ │
│ │ • Intel i7-10710U │ │ • NVMe SSD detected │ │
│ │ • 6 cores, 12 threads│ │ • Set I/O scheduler │ │
│ │ • Load microcode │ │ • Enable TRIM │ │
│ └──────────────────────┘ └──────────────────────┘ │
│ │
│ ┌──────────────────────┐ ┌──────────────────────┐ │
│ │ Graphics Detection │ │ Memory Detection │ │
│ ├──────────────────────┤ ├──────────────────────┤ │
│ │ • Intel UHD Graphics │ │ • 32GB RAM detected │ │
│ │ • Load i915 driver │ │ • Configure caching │ │
│ │ • Enable accel │ │ • Set limits │ │
│ └──────────────────────┘ └──────────────────────┘ │
│ │
│ ✓ Hardware profile: hp-prodesk (or start9-pure, dell-optiplex) │
│ ✓ Log saved to: /var/log/archipelago-hardware.log │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ STAGE 5: ARCHIPELAGO SERVER START (default) │
├─────────────────────────────────────────────────────────────────────────┤
│ /etc/init.d/archipelago start │
│ │
│ Pre-Start Checks: │
│ ✓ Network is ready (verified) │
│ ✓ Create data directories │
│ - /var/lib/archipelago/ │
│ - /var/lib/archipelago/apps/ │
│ - /var/lib/archipelago/secrets/ │
│ - /var/lib/archipelago/logs/ │
│ - /var/lib/archipelago/backups/ │
│ ✓ Set permissions (archipelago:archipelago) │
│ │
│ Start Backend Server: │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ $ /usr/bin/archipelago-backend │ │
│ │ │ │
│ │ Environment: │ │
│ │ RUST_LOG=info │ │
│ │ ARCHIPELAGO_DATA_DIR=/var/lib/archipelago │ │
│ │ ARCHIPELAGO_PORT=8100 │ │
│ │ │ │
│ │ User: archipelago (unprivileged) │ │
│ │ PID: [written to /var/run/archipelago.pid] │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
│ Backend Components: │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ Rust API │◄────►│ Vue.js UI │ │ │
│ │ │ Server │ │ (Static) │ │ │
│ │ │ :8100 │ │ │ │ │
│ │ └──────┬───────┘ └──────────────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌──────────────────────────────────┐ │ │
│ │ │ Container Orchestration │ │ │
│ │ │ (Podman Client) │ │ │
│ │ └──────┬───────────────────────────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌──────────────────────────────────┐ │ │
│ │ │ App Management │ │ │
│ │ │ - Bitcoin Core │ │ │
│ │ │ - Lightning Network │ │ │
│ │ │ - Self-hosted apps │ │ │
│ │ └──────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ Post-Start: │
│ ✓ Service running │
│ ✓ Web UI accessible │
│ ✓ Display access URL │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ READY! 🏝️ │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ✅ Ethernet connected via DHCP │
│ ✅ Internet connectivity verified │
│ ✅ Hardware optimized │
│ ✅ Archipelago backend running │
│ ✅ Web UI available │
│ │
│ Access: http://192.168.1.100:8100 │
│ │
└─────────────────────────────────────────────────────────────────────────┘
═══════════════════════════════════════════════════════════════════════════
TIMING (Approximate)
═══════════════════════════════════════════════════════════════════════════
Stage 1: System Init → 5-10 seconds
Stage 2: Boot Services → 2-5 seconds
Stage 3: Network Configuration → 5-30 seconds (DHCP timeout)
Stage 4: Hardware Optimization → 2-5 seconds
Stage 5: Archipelago Server → 5-10 seconds
Total Boot Time: 20-60 seconds (depends on DHCP)
═══════════════════════════════════════════════════════════════════════════
WHAT RUNS AUTOMATICALLY
═══════════════════════════════════════════════════════════════════════════
ON EVERY BOOT:
✅ Ethernet connection via DHCP
✅ DNS configuration (Google, Cloudflare)
✅ Internet connectivity test
✅ Hardware detection and optimization
✅ Archipelago backend server (port 8100)
✅ Web UI serving
✅ Container runtime (Podman) ready
NO MANUAL INTERVENTION REQUIRED!
═══════════════════════════════════════════════════════════════════════════
ACCESSING THE UI
═══════════════════════════════════════════════════════════════════════════
From Local Network:
1. Boot the device
2. Wait 30-60 seconds
3. Find IP address:
• Check router DHCP leases
• Look for "archipelago-node"
• Or check console output
4. Open browser: http://[IP-ADDRESS]:8100
Example:
http://192.168.1.100:8100
http://192.168.0.50:8100
http://10.0.0.100:8100
═══════════════════════════════════════════════════════════════════════════
RESULT: Plug in, power on, and access your node! 🚀
```