archy/docs/BITCOIN-KNOTS-BETA.md
Dorian 337ebee510 Revise BUILD-GUIDE and enhance ISO build process
- 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.
2026-02-03 21:43:33 +00:00

7.3 KiB

Beta Release - Bitcoin Knots Installation Guide

For Beta Testers & End Users

Prerequisites

  • Fresh Archipelago installation
  • 500GB+ disk space (for full blockchain)
  • Internet connection

Automated Installation (One-Click from App Store)

When ready for beta, Bitcoin Knots will be installable from the App Store UI:

  1. Navigate to App Store in Archipelago UI
  2. Find Bitcoin Knots
  3. Click Install
  4. Wait for installation to complete
  5. Click Launch to access the web UI

Manual Installation (Current Method)

If installing via SSH/terminal:

# 1. Install Bitcoin Knots node
sudo podman run -d \
  --name bitcoin-knots \
  --restart unless-stopped \
  -p 8332:8332 \
  -p 8333:8333 \
  -v /var/lib/archipelago/bitcoin:/home/bitcoin/.bitcoin \
  --label "com.archipelago.app=bitcoin-knots" \
  --label "com.archipelago.title=Bitcoin Knots" \
  --label "com.archipelago.version=28.1" \
  --label "com.archipelago.category=bitcoin" \
  --label "com.archipelago.description.short=Full Bitcoin node implementation" \
  --label "com.archipelago.description.long=Bitcoin Knots is a derivative of Bitcoin Core with additional features and bug fixes. Maintain the full blockchain and validate all transactions." \
  --label "com.archipelago.license=MIT" \
  --label "com.archipelago.icon=/assets/img/app-icons/bitcoin-knots.webp" \
  --label "com.archipelago.port=8332" \
  --label "com.archipelago.repo=https://github.com/bitcoinknots/bitcoin" \
  docker.io/bitcoinknots/bitcoin:latest \
  -server=1 \
  -txindex=1 \
  -rpcallowip=0.0.0.0/0 \
  -rpcbind=0.0.0.0:8332 \
  -rpcuser=archipelago \
  -rpcpassword=archipelago123 \
  -dbcache=4096

# 2. Build Bitcoin UI (web interface)
cd /tmp
mkdir bitcoin-ui-build
cd bitcoin-ui-build

# Create Dockerfile
cat > Dockerfile << 'EOF'
FROM docker.io/library/nginx:alpine
COPY index.html /usr/share/nginx/html/
RUN mkdir -p /usr/share/nginx/html/assets/img/app-icons && \
    mkdir -p /usr/share/nginx/html/assets/img
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
EOF

# Copy UI file (must be included in beta ISO or downloadable)
cp /home/archipelago/archy/docker/bitcoin-ui/index.html .

# Build and deploy
sudo podman build -t localhost/bitcoin-ui:latest .
sudo podman run -d \
  --name bitcoin-ui \
  --restart unless-stopped \
  -p 8334:80 \
  --label "com.archipelago.app=bitcoin-ui" \
  --label "com.archipelago.parent=bitcoin-knots" \
  localhost/bitcoin-ui:latest

# Cleanup
cd /tmp && rm -rf bitcoin-ui-build

echo "✅ Bitcoin Knots installed!"

What Gets Deployed

1. Bitcoin Knots Node

  • Container: docker.io/bitcoinknots/bitcoin:latest
  • Data: /var/lib/archipelago/bitcoin/ (blockchain storage)
  • RPC Port: 8332 (for other apps to connect)
  • P2P Port: 8333 (network connections)
  • Default RPC Credentials:
    • User: archipelago
    • Password: archipelago123

2. Bitcoin Web UI

  • Container: Custom nginx container
  • Web Port: 8334
  • Features:
    • Node status dashboard
    • RPC connection info
    • Block height display
    • Log viewer
    • Settings panel

Verification Checklist

After installation, verify:

  • bitcoin-knots container is running: sudo podman ps | grep bitcoin-knots
  • bitcoin-ui container is running: sudo podman ps | grep bitcoin-ui
  • Bitcoin Knots appears in "My Apps" with status "Running"
  • Bitcoin Knots shows "Already Installed" in App Store
  • "Launch" button is visible and clickable
  • Clicking "Launch" opens http://YOUR-IP:8334
  • Web UI displays node information
  • Blockchain is syncing (check logs: sudo podman logs -f bitcoin-knots)

Known Issues & Fixes

Issue 1: "Already Installed" Not Showing

Cause: App ID mismatch between marketplace and container name.

Fix Applied:

  • Marketplace app ID changed from bitcoin to bitcoin-knots
  • Backend checks for bitcoin-ui container and maps to bitcoin-knots

Issue 2: No Launch Button

Cause: Backend couldn't detect the UI container port.

Fix Applied:

  • Special case in backend to map bitcoin-uibitcoin-knots
  • Backend now uses port 8334 (UI) instead of 8332 (RPC)

Issue 3: Container Not Detected

Cause: Backend runs as non-root, containers started with sudo podman.

Fix Applied:

  • Backend uses sudo podman commands
  • Sudoers configured: archipelago ALL=(ALL) NOPASSWD: /usr/bin/podman

For Beta Release ISO

The auto-installer must include:

  1. Backend binary with:

    • sudo podman support in podman_client.rs
    • Bitcoin Knots metadata in docker_packages.rs
    • Special UI container mapping logic
  2. Frontend with:

    • Correct marketplace app ID: bitcoin-knots
    • Docker image: docker.io/bitcoinknots/bitcoin:latest
  3. Bitcoin UI files in /home/archipelago/archy/docker/bitcoin-ui/:

    • index.html
    • Dockerfile
  4. System configuration:

    • /etc/sudoers.d/archipelago-podman file
    • Nginx configuration
    • Archipelago systemd service

Testing Script

Run this to verify everything works:

#!/bin/bash
echo "Testing Bitcoin Knots installation..."

# 1. Check containers
BITCOIN_RUNNING=$(sudo podman ps --format "{{.Names}}" | grep -c "bitcoin-knots" || echo "0")
UI_RUNNING=$(sudo podman ps --format "{{.Names}}" | grep -c "bitcoin-ui" || echo "0")

if [ "$BITCOIN_RUNNING" -eq "0" ]; then
    echo "❌ bitcoin-knots container not running"
    exit 1
else
    echo "✅ bitcoin-knots container running"
fi

if [ "$UI_RUNNING" -eq "0" ]; then
    echo "❌ bitcoin-ui container not running"
    exit 1
else
    echo "✅ bitcoin-ui container running"
fi

# 2. Test web UI
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8334)
if [ "$HTTP_CODE" -eq "200" ]; then
    echo "✅ Bitcoin UI accessible on port 8334"
else
    echo "❌ Bitcoin UI not responding (HTTP $HTTP_CODE)"
    exit 1
fi

# 3. Test RPC
RPC_RESPONSE=$(curl -s --user archipelago:archipelago123 \
  --data-binary '{"jsonrpc":"1.0","id":"test","method":"getblockchaininfo","params":[]}' \
  -H 'content-type: text/plain;' http://localhost:8332/)

if echo "$RPC_RESPONSE" | grep -q '"result"'; then
    echo "✅ Bitcoin RPC responding"
    BLOCKS=$(echo "$RPC_RESPONSE" | grep -o '"blocks":[0-9]*' | cut -d: -f2)
    echo "   Synced blocks: $BLOCKS"
else
    echo "❌ Bitcoin RPC not responding"
    exit 1
fi

echo ""
echo "✅ All tests passed! Bitcoin Knots is working correctly."

User Experience Flow

  1. Install from App Store → Click "Install" on Bitcoin Knots
  2. Backend deploys → Both bitcoin-knots + bitcoin-ui containers
  3. App appears in My Apps → Shows "Running" status
  4. App Store shows → "Already Installed" badge
  5. Launch button works → Opens web UI on port 8334
  6. User connects to node → Via RPC or web UI

Blockchain Sync Time

Initial sync: 1-7 days depending on:

  • Internet speed
  • Disk I/O performance
  • CPU power

Monitor progress:

sudo podman logs -f bitcoin-knots | grep "height="

Important for Production

All components working: Node, UI, detection, marketplace
No manual intervention needed: Fully automated from App Store
Proper labeling: Backend discovers everything via container labels
User-friendly: Launch button, status display, proper UI

This is production-ready for beta release!