Refactor configuration and scripts for Archipelago backend and ISO build
- Updated Cargo.toml to remove unnecessary package backtrace optimizations. - Changed default bind host and port in config.rs for broader accessibility. - Renamed state_manager to _state_manager in server.rs for clarity. - Updated user field to _user in PodmanClient and DockerRuntime for consistency. - Modified build-debian-iso.sh to enhance welcome message and backend startup instructions. - Improved archipelago-menu.sh to display backend status and updated Web UI URL. - Enhanced install-to-disk.sh for better package management and user creation during installation.
This commit is contained in:
99
scripts/deploy-to-target.sh
Executable file
99
scripts/deploy-to-target.sh
Executable file
@@ -0,0 +1,99 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Deploy Archipelago code to the HP ProDesk target
|
||||
#
|
||||
# Usage:
|
||||
# ./scripts/deploy-to-target.sh # Sync and rebuild
|
||||
# ./scripts/deploy-to-target.sh --quick # Sync only, no rebuild
|
||||
# ./scripts/deploy-to-target.sh --live # Deploy to live system
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
||||
|
||||
# Configuration
|
||||
TARGET_HOST="${ARCHIPELAGO_TARGET:-archipelago@192.168.1.228}"
|
||||
TARGET_DIR="/home/archipelago/archy"
|
||||
|
||||
echo "╔════════════════════════════════════════════════════════════════╗"
|
||||
echo "║ Deploying to Archipelago Target ║"
|
||||
echo "╚════════════════════════════════════════════════════════════════╝"
|
||||
echo ""
|
||||
echo "Target: $TARGET_HOST"
|
||||
echo ""
|
||||
|
||||
# Parse arguments
|
||||
QUICK=false
|
||||
LIVE=false
|
||||
for arg in "$@"; do
|
||||
case $arg in
|
||||
--quick) QUICK=true ;;
|
||||
--live) LIVE=true ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Sync code
|
||||
echo "📦 Syncing code..."
|
||||
rsync -avz --delete \
|
||||
--exclude 'node_modules' \
|
||||
--exclude 'target' \
|
||||
--exclude 'dist' \
|
||||
--exclude '.git' \
|
||||
--exclude 'image-recipe/build' \
|
||||
--exclude 'image-recipe/results' \
|
||||
"$PROJECT_DIR/" "$TARGET_HOST:$TARGET_DIR/"
|
||||
|
||||
if [ "$QUICK" = true ]; then
|
||||
echo ""
|
||||
echo "✅ Quick sync complete!"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Build on target
|
||||
echo ""
|
||||
echo "🔨 Building on target..."
|
||||
|
||||
# Frontend
|
||||
echo " Building frontend..."
|
||||
ssh "$TARGET_HOST" "cd $TARGET_DIR/neode-ui && npm install --silent && npm run build" 2>&1 | sed 's/^/ /'
|
||||
|
||||
# Backend (if Rust is installed)
|
||||
if ssh "$TARGET_HOST" "command -v cargo" >/dev/null 2>&1; then
|
||||
echo " Building backend..."
|
||||
ssh "$TARGET_HOST" "cd $TARGET_DIR/core && cargo build --release 2>&1" | tail -5 | sed 's/^/ /'
|
||||
else
|
||||
echo " ⚠️ Rust not installed on target, skipping backend build"
|
||||
fi
|
||||
|
||||
if [ "$LIVE" = true ]; then
|
||||
echo ""
|
||||
echo "🚀 Deploying to live system..."
|
||||
|
||||
# Deploy backend
|
||||
ssh "$TARGET_HOST" "sudo cp $TARGET_DIR/core/target/release/archipelago /usr/local/bin/ 2>/dev/null || true"
|
||||
|
||||
# Deploy frontend
|
||||
ssh "$TARGET_HOST" "sudo rm -rf /opt/archipelago/web-ui/*"
|
||||
ssh "$TARGET_HOST" "sudo cp -r $TARGET_DIR/neode-ui/dist/* /opt/archipelago/web-ui/"
|
||||
ssh "$TARGET_HOST" "sudo chown -R 1000:1000 /opt/archipelago/web-ui"
|
||||
|
||||
# Restart services
|
||||
ssh "$TARGET_HOST" "sudo systemctl restart archipelago nginx"
|
||||
|
||||
echo ""
|
||||
echo "✅ Deployed to live system!"
|
||||
echo " Web UI: http://$(echo $TARGET_HOST | cut -d@ -f2)"
|
||||
else
|
||||
echo ""
|
||||
echo "✅ Build complete!"
|
||||
echo ""
|
||||
echo "To test frontend dev server:"
|
||||
echo " ssh $TARGET_HOST"
|
||||
echo " cd ~/archy/neode-ui && npm run dev -- --host 0.0.0.0"
|
||||
echo " Then open: http://$(echo $TARGET_HOST | cut -d@ -f2):5173"
|
||||
echo ""
|
||||
echo "To deploy to live system:"
|
||||
echo " ./scripts/deploy-to-target.sh --live"
|
||||
fi
|
||||
93
scripts/setup-target-dev.sh
Executable file
93
scripts/setup-target-dev.sh
Executable file
@@ -0,0 +1,93 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Setup development environment on Archipelago target machine
|
||||
#
|
||||
# Run this ON the HP ProDesk via SSH:
|
||||
# curl -sSL https://raw.githubusercontent.com/.../setup-target-dev.sh | bash
|
||||
# Or copy and run locally:
|
||||
# scp scripts/setup-target-dev.sh archipelago@192.168.1.228:~/
|
||||
# ssh archipelago@192.168.1.228 'bash ~/setup-target-dev.sh'
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
echo "╔════════════════════════════════════════════════════════════════╗"
|
||||
echo "║ Setting up Archipelago Development Environment ║"
|
||||
echo "╚════════════════════════════════════════════════════════════════╝"
|
||||
echo ""
|
||||
|
||||
# Update packages
|
||||
echo "📦 Updating packages..."
|
||||
sudo apt update
|
||||
|
||||
# Install Node.js (for Vue.js frontend)
|
||||
echo ""
|
||||
echo "📦 Installing Node.js..."
|
||||
if ! command -v node &> /dev/null; then
|
||||
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
|
||||
sudo apt install -y nodejs
|
||||
else
|
||||
echo " Node.js already installed: $(node --version)"
|
||||
fi
|
||||
|
||||
# Install Rust (for backend)
|
||||
echo ""
|
||||
echo "📦 Installing Rust..."
|
||||
if ! command -v cargo &> /dev/null; then
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||
source ~/.cargo/env
|
||||
else
|
||||
echo " Rust already installed: $(rustc --version)"
|
||||
fi
|
||||
|
||||
# Install build tools
|
||||
echo ""
|
||||
echo "📦 Installing build tools..."
|
||||
sudo apt install -y \
|
||||
build-essential \
|
||||
pkg-config \
|
||||
libssl-dev \
|
||||
git
|
||||
|
||||
# Create development directory
|
||||
echo ""
|
||||
echo "📁 Creating development directory..."
|
||||
mkdir -p ~/archy
|
||||
|
||||
# Fix XDG_RUNTIME_DIR for rootless Podman (add to bashrc)
|
||||
if ! grep -q "XDG_RUNTIME_DIR" ~/.bashrc; then
|
||||
echo ""
|
||||
echo "🔧 Fixing Podman rootless setup..."
|
||||
cat >> ~/.bashrc << 'EOF'
|
||||
|
||||
# Fix for rootless Podman
|
||||
if [ -z "$XDG_RUNTIME_DIR" ]; then
|
||||
export XDG_RUNTIME_DIR=/run/user/$(id -u)
|
||||
if [ ! -d "$XDG_RUNTIME_DIR" ]; then
|
||||
sudo mkdir -p "$XDG_RUNTIME_DIR"
|
||||
sudo chown $(whoami):$(whoami) "$XDG_RUNTIME_DIR"
|
||||
sudo chmod 700 "$XDG_RUNTIME_DIR"
|
||||
fi
|
||||
fi
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Enable user lingering for Podman
|
||||
sudo loginctl enable-linger archipelago 2>/dev/null || true
|
||||
|
||||
echo ""
|
||||
echo "╔════════════════════════════════════════════════════════════════╗"
|
||||
echo "║ ✅ Development environment ready! ║"
|
||||
echo "╚════════════════════════════════════════════════════════════════╝"
|
||||
echo ""
|
||||
echo "Installed:"
|
||||
echo " • Node.js: $(node --version 2>/dev/null || echo 'not found')"
|
||||
echo " • npm: $(npm --version 2>/dev/null || echo 'not found')"
|
||||
echo " • Rust: $(rustc --version 2>/dev/null || echo 'not found')"
|
||||
echo " • Cargo: $(cargo --version 2>/dev/null || echo 'not found')"
|
||||
echo ""
|
||||
echo "Next steps:"
|
||||
echo " 1. Log out and back in (or run: source ~/.bashrc)"
|
||||
echo " 2. From your Mac, run: ./scripts/deploy-to-target.sh"
|
||||
echo " 3. To start Vue.js dev server: cd ~/archy/neode-ui && npm run dev -- --host 0.0.0.0"
|
||||
echo ""
|
||||
Reference in New Issue
Block a user