- 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.
226 lines
20 KiB
Plaintext
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! 🚀
|
|
```
|