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.
This commit is contained in:
@@ -1,8 +1,38 @@
|
||||
# Archipelago Node OS Configuration
|
||||
|
||||
[server]
|
||||
# Server listening configuration
|
||||
host = "0.0.0.0" # Listen on all interfaces
|
||||
port = 8100
|
||||
data_dir = "/var/lib/archipelago"
|
||||
bind_host = "0.0.0.0"
|
||||
bind_port = 5959
|
||||
log_level = "info"
|
||||
dev_mode = false
|
||||
container_runtime = "podman"
|
||||
port_offset = 0
|
||||
bitcoin_simulation = "none"
|
||||
|
||||
[network]
|
||||
# Automatic Ethernet configuration
|
||||
auto_configure = true
|
||||
dhcp = true
|
||||
dns_servers = ["8.8.8.8", "8.8.4.4", "1.1.1.1"]
|
||||
|
||||
[containers]
|
||||
# Container runtime (Podman)
|
||||
runtime = "podman"
|
||||
rootless = true
|
||||
auto_start = true
|
||||
|
||||
[apps]
|
||||
# App directory
|
||||
apps_dir = "/var/lib/archipelago/apps"
|
||||
auto_start_enabled = true
|
||||
|
||||
[security]
|
||||
# Security settings
|
||||
require_auth = false # Disable for first boot, enable after setup
|
||||
secrets_dir = "/var/lib/archipelago/secrets"
|
||||
|
||||
[logging]
|
||||
level = "info"
|
||||
dir = "/var/lib/archipelago/logs"
|
||||
|
||||
[ui]
|
||||
# Web UI settings
|
||||
enabled = true
|
||||
path = "/usr/share/archipelago/web"
|
||||
|
||||
@@ -2,13 +2,51 @@
|
||||
# Archipelago Bitcoin Node OS Backend
|
||||
|
||||
name="Archipelago"
|
||||
command="/usr/bin/archipelago"
|
||||
description="Archipelago Bitcoin Node OS Backend Server"
|
||||
command="/usr/bin/archipelago-backend"
|
||||
command_user="archipelago:archipelago"
|
||||
command_background=true
|
||||
pidfile="/var/run/archipelago.pid"
|
||||
start_stop_daemon_args="--make-pidfile"
|
||||
|
||||
# Working directory and environment
|
||||
directory="/var/lib/archipelago"
|
||||
export RUST_LOG="${RUST_LOG:-info}"
|
||||
export ARCHIPELAGO_DATA_DIR="/var/lib/archipelago"
|
||||
export ARCHIPELAGO_PORT="${ARCHIPELAGO_PORT:-8100}"
|
||||
|
||||
depend() {
|
||||
need net
|
||||
use podman
|
||||
need localmount
|
||||
after firewall
|
||||
use podman docker
|
||||
}
|
||||
|
||||
start_pre() {
|
||||
# Ensure directories exist
|
||||
checkpath --directory --mode 0755 --owner archipelago:archipelago \
|
||||
/var/lib/archipelago \
|
||||
/var/lib/archipelago/apps \
|
||||
/var/lib/archipelago/secrets \
|
||||
/var/lib/archipelago/logs \
|
||||
/var/lib/archipelago/backups
|
||||
|
||||
# Wait for network to be fully ready
|
||||
local retries=30
|
||||
while [ $retries -gt 0 ]; do
|
||||
if ping -c 1 -W 1 8.8.8.8 >/dev/null 2>&1; then
|
||||
einfo "Network is ready"
|
||||
return 0
|
||||
fi
|
||||
retries=$((retries - 1))
|
||||
sleep 1
|
||||
done
|
||||
|
||||
ewarn "Network may not be fully ready"
|
||||
return 0
|
||||
}
|
||||
|
||||
start_post() {
|
||||
einfo "Archipelago backend started"
|
||||
einfo "Access the UI at: http://$(hostname -I | awk '{print $1}'):8100"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
#!/bin/sh
|
||||
# Alpine Linux boot configuration for Archipelago
|
||||
# This runs early in the boot process
|
||||
|
||||
# Enable essential services
|
||||
rc-update add devfs sysinit 2>/dev/null || true
|
||||
rc-update add dmesg sysinit 2>/dev/null || true
|
||||
rc-update add mdev sysinit 2>/dev/null || true
|
||||
rc-update add hwdrivers sysinit 2>/dev/null || true
|
||||
|
||||
# Enable boot services
|
||||
rc-update add bootmisc boot 2>/dev/null || true
|
||||
rc-update add hostname boot 2>/dev/null || true
|
||||
rc-update add hwclock boot 2>/dev/null || true
|
||||
rc-update add modules boot 2>/dev/null || true
|
||||
rc-update add swap boot 2>/dev/null || true
|
||||
rc-update add sysctl boot 2>/dev/null || true
|
||||
rc-update add syslog boot 2>/dev/null || true
|
||||
rc-update add networking boot 2>/dev/null || true
|
||||
rc-update add urandom boot 2>/dev/null || true
|
||||
|
||||
# Enable default services
|
||||
rc-update add local default 2>/dev/null || true
|
||||
rc-update add sshd default 2>/dev/null || true
|
||||
rc-update add archipelago default 2>/dev/null || true
|
||||
|
||||
# Enable shutdown services
|
||||
rc-update add killprocs shutdown 2>/dev/null || true
|
||||
rc-update add mount-ro shutdown 2>/dev/null || true
|
||||
rc-update add savecache shutdown 2>/dev/null || true
|
||||
|
||||
echo "✓ Archipelago boot services configured"
|
||||
@@ -0,0 +1,88 @@
|
||||
#!/bin/sh
|
||||
# First boot network and service setup for Archipelago
|
||||
|
||||
# Configure hostname
|
||||
if [ ! -f /etc/hostname.configured ]; then
|
||||
echo "archipelago-node" > /etc/hostname
|
||||
hostname archipelago-node
|
||||
touch /etc/hostname.configured
|
||||
fi
|
||||
|
||||
# Configure networking - Ethernet with DHCP
|
||||
if [ ! -f /etc/network/interfaces.configured ]; then
|
||||
cat > /etc/network/interfaces <<'NETEOF'
|
||||
auto lo
|
||||
iface lo inet loopback
|
||||
|
||||
# Automatic Ethernet configuration (DHCP)
|
||||
auto eth0
|
||||
iface eth0 inet dhcp
|
||||
hostname archipelago-node
|
||||
|
||||
# Fallback for other ethernet names
|
||||
auto enp0s3
|
||||
iface enp0s3 inet dhcp
|
||||
hostname archipelago-node
|
||||
|
||||
auto enp0s25
|
||||
iface enp0s25 inet dhcp
|
||||
hostname archipelago-node
|
||||
|
||||
auto ens0
|
||||
iface ens0 inet dhcp
|
||||
hostname archipelago-node
|
||||
NETEOF
|
||||
touch /etc/network/interfaces.configured
|
||||
fi
|
||||
|
||||
# Enable and start networking
|
||||
rc-update add networking boot 2>/dev/null || true
|
||||
rc-service networking start 2>/dev/null || true
|
||||
|
||||
# Wait for network to be ready
|
||||
echo "Waiting for network..."
|
||||
retries=30
|
||||
while [ $retries -gt 0 ]; do
|
||||
if ip route | grep -q default; then
|
||||
echo "✓ Network is ready"
|
||||
ip addr show | grep "inet " | grep -v "127.0.0.1"
|
||||
break
|
||||
fi
|
||||
retries=$((retries - 1))
|
||||
sleep 1
|
||||
done
|
||||
|
||||
# Enable DNS
|
||||
if [ ! -f /etc/resolv.conf.configured ]; then
|
||||
cat > /etc/resolv.conf <<'DNSEOF'
|
||||
nameserver 8.8.8.8
|
||||
nameserver 8.8.4.4
|
||||
nameserver 1.1.1.1
|
||||
DNSEOF
|
||||
touch /etc/resolv.conf.configured
|
||||
fi
|
||||
|
||||
# Test internet connectivity
|
||||
echo "Testing internet connectivity..."
|
||||
if ping -c 2 8.8.8.8 >/dev/null 2>&1; then
|
||||
echo "✓ Internet connection established"
|
||||
else
|
||||
echo "⚠ Warning: No internet connection detected"
|
||||
fi
|
||||
|
||||
# Enable Archipelago service
|
||||
rc-update add archipelago default 2>/dev/null || true
|
||||
|
||||
# Display access information
|
||||
echo ""
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo "🏝️ Archipelago Bitcoin Node OS"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo ""
|
||||
echo "Network Configuration:"
|
||||
ip -4 addr show | grep inet | grep -v 127.0.0.1 | awk '{print " IP Address: " $2}'
|
||||
echo ""
|
||||
echo "Access the Archipelago UI at:"
|
||||
ip -4 addr show | grep inet | grep -v 127.0.0.1 | awk '{print " http://" $2}' | sed 's|/.*|:8100|'
|
||||
echo ""
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
Reference in New Issue
Block a user