- Updated BUILD-GUIDE.md to streamline instructions for building the Archipelago Auto-Installer ISO, including prerequisites and post-installation steps. - Added detailed sections on capturing the live server state and building from source. - Enhanced Docker and Podman integration in build scripts for improved backend and web UI capture. - Introduced new app metadata for "IndeedHub" in the Docker package scanner and updated UI components for better installation progress tracking. - Improved styling and functionality in the Bitcoin UI for a more cohesive user experience.
5.2 KiB
5.2 KiB
CRITICAL CHANGES FOR BETA ISO BUILD
⚠️ MUST-HAVE CHANGES - Without these, the beta will NOT work!
1. Backend: Podman Detection Fix
File: core/container/src/podman_client.rs
fn podman_async(&self) -> TokioCommand {
// Always use sudo podman to access system-wide containers
let mut cmd = TokioCommand::new("sudo");
cmd.arg("podman");
cmd
}
System Config: /etc/sudoers.d/archipelago-podman
archipelago ALL=(ALL) NOPASSWD: /usr/bin/podman
2. Backend: Bitcoin UI Container Mapping
File: core/archipelago/src/container/docker_packages.rs
Add special case for bitcoin-knots (line ~95):
} else if app_id == "bitcoin-knots" {
// Check if bitcoin-ui exists (maps to "bitcoin" but serves bitcoin-knots)
if let Some(ui_address) = ui_containers.get("bitcoin") {
debug!("Using bitcoin-ui for bitcoin-knots: {}", ui_address);
Some(ui_address.clone())
} else {
extract_lan_address(&container.ports)
}
3. Backend: IndeedHub Metadata
File: core/archipelago/src/container/docker_packages.rs
Add to get_app_metadata() function (line ~327):
"indeedhub" => AppMetadata {
title: "IndeedHub".to_string(),
description: "Decentralized media streaming platform".to_string(),
icon: "/assets/img/app-icons/indeedhub.png".to_string(),
repo: "https://github.com/indeedhub/indeedhub".to_string(),
},
4. Frontend: Marketplace Bitcoin Knots
File: neode-ui/src/views/Marketplace.vue
{
id: 'bitcoin-knots', // CHANGED from 'bitcoin'
title: 'Bitcoin Knots',
version: '28.1.0', // UPDATED version
dockerImage: 'docker.io/bitcoinknots/bitcoin:latest', // CHANGED image
// ... rest of config
}
5. Auto-Installer: Profile Script Fix
File: image-recipe/build-auto-installer-iso.sh (line ~850)
Remove || [ ! -t 0 ] check:
# CORRECT:
if [ -n "$INSTALLER_STARTED" ]; then
return 0
fi
# WRONG (will break auto-login):
# if [ -n "$INSTALLER_STARTED" ] || [ ! -t 0 ]; then
6. Nginx Configuration
File: Captured from /etc/nginx/sites-available/default
MUST include:
- HTTPS on port 443
- HTTP redirect to HTTPS
- Backend proxy:
/rpc/,/ws/,/health - Root:
/opt/archipelago/web-ui - SSL certificates in
/etc/nginx/ssl/
7. Bitcoin UI Files
Files: docker/bitcoin-ui/index.html and Dockerfile
MUST be included in ISO or downloadable, so users can deploy the web UI container.
Build Verification Before Beta Release
Run these checks:
# 1. Verify all source changes are committed
cd /Users/dorian/Projects/archy
git status # Should show all critical files committed
# 2. Build ISO from live server
cd image-recipe
DEV_SERVER=archipelago@192.168.1.228 ./build-auto-installer-iso.sh
# 3. Test ISO on clean VM
# - Boot ISO
# - Verify auto-installer runs
# - System should boot to login
# - Access http://SERVER-IP
# - Complete onboarding
# - Install Bitcoin Knots from App Store
# - Verify "Already Installed" shows after install
# - Verify "Launch" button works
# - Verify web UI loads on port 8334
# 4. Test all critical features
# - Bitcoin node syncing
# - RPC accessible
# - Web UI functional
# - Backend detects container
# - App Store shows proper status
Critical Files Checklist
Before building beta ISO, ensure these files have the latest changes:
core/container/src/podman_client.rs- sudo podmancore/archipelago/src/container/docker_packages.rs- app metadata + UI mappingneode-ui/src/views/Marketplace.vue- bitcoin-knots IDneode-ui/src/utils/dummyApps.ts- IndeedHub dataimage-recipe/build-auto-installer-iso.sh- auto-start fixdocker/bitcoin-ui/- UI files presentscripts/deploy-bitcoin-knots.sh- deployment script- All assets:
neode-ui/public/assets/img/app-icons/*.png
Testing Matrix
| Feature | Expected | Status |
|---|---|---|
| Bitcoin Knots container runs | Running | ✅ |
| Bitcoin UI container runs | Running | ✅ |
| Backend detects bitcoin-knots | Detected | ✅ |
| Backend maps bitcoin-ui → bitcoin-knots | Port 8334 | ✅ |
| App shows in My Apps | Listed | ✅ |
| App Store shows "Already Installed" | Badge shown | ✅ (after ID fix) |
| Launch button visible | Clickable | ✅ |
| Launch opens web UI | Port 8334 | ✅ |
| RPC accessible | Port 8332 | ✅ |
| Blockchain syncing | Active | ✅ |
Roll-Back Plan
If beta ISO fails:
- Check
/var/log/archipelago.logon installed system - Verify containers with
sudo podman ps -a - Check nginx status:
sudo systemctl status nginx - Test backend:
curl http://localhost:5678/health - Rebuild ISO with
BUILD_FROM_SOURCE=1if server state is corrupt
Support Commands for Users
# Check Bitcoin status
sudo podman logs -f bitcoin-knots
# Check blockchain sync progress
curl --user archipelago:archipelago123 \
--data-binary '{"jsonrpc":"1.0","id":"test","method":"getblockchaininfo","params":[]}' \
-H 'content-type: text/plain;' http://localhost:8332/ | grep blocks
# Restart if needed
sudo podman restart bitcoin-knots bitcoin-ui
# View Archipelago backend logs
sudo journalctl -u archipelago -f