#!/bin/bash # Create Alpine APK package for Archipelago backend set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" BUILD_DIR="$SCRIPT_DIR/../build" APK_DIR="$SCRIPT_DIR/../apks" ARCHIPELAGO_VERSION="${ARCHIPELAGO_VERSION:-0.1.0}" echo "📦 Creating Archipelago backend APK..." echo "" # Create APK directory mkdir -p "$APK_DIR" # Create temporary APK build directory APK_BUILD_DIR=$(mktemp -d) trap "rm -rf $APK_BUILD_DIR" EXIT cd "$APK_BUILD_DIR" # APK package structure mkdir -p usr/bin mkdir -p usr/lib/systemd/system mkdir -p etc/archipelago mkdir -p etc/init.d # Copy binary if [ -f "$BUILD_DIR/backend/archipelago" ]; then cp "$BUILD_DIR/backend/archipelago" usr/bin/archipelago chmod +x usr/bin/archipelago else echo "❌ Backend binary not found. Run build-backend.sh first." exit 1 fi # Create systemd service file cat > usr/lib/systemd/system/archipelago.service <<'EOF' [Unit] Description=Archipelago Bitcoin Node OS Backend After=network.target podman.service Wants=network.target [Service] Type=simple User=archipelago Group=archipelago WorkingDirectory=/var/lib/archipelago ExecStart=/usr/bin/archipelago Restart=always RestartSec=10 StandardOutput=journal StandardError=journal # Security NoNewPrivileges=true PrivateTmp=true ProtectSystem=strict ProtectHome=true ReadWritePaths=/var/lib/archipelago /tmp # Environment Environment="RUST_LOG=info" Environment="ARCHIPELAGO_DATA_DIR=/var/lib/archipelago" [Install] WantedBy=multi-user.target EOF # Create init.d script (for openrc) cat > etc/init.d/archipelago <<'EOF' #!/sbin/openrc-run # Archipelago Bitcoin Node OS Backend name="Archipelago" command="/usr/bin/archipelago" command_user="archipelago:archipelago" command_background=true pidfile="/var/run/archipelago.pid" start_stop_daemon_args="--make-pidfile" depend() { need net use podman } EOF chmod +x etc/init.d/archipelago # Create default config mkdir -p etc/archipelago cat > etc/archipelago/config.toml < "$APK_BUILD_DIR/.PKGINFO" </dev/null || { # Fallback: create without signing tar -czf "$APK_DIR/archipelago-backend-${ARCHIPELAGO_VERSION}-r0.apk" \ .PKGINFO usr etc } echo "✅ APK created: $APK_DIR/archipelago-backend-${ARCHIPELAGO_VERSION}-r0.apk" ls -lh "$APK_DIR/archipelago-backend-${ARCHIPELAGO_VERSION}-r0.apk"