- Automated deployment script upload to public S3 bucket - Uses GitHub OIDC for secure AWS authentication - Updates README with current S3 URLs automatically - Enables deployment from private repository - Uploads systemd service and Caddyfile configurations
82 lines
2.8 KiB
Bash
82 lines
2.8 KiB
Bash
#!/bin/bash
|
|
|
|
# ICE Watch Deployment Script for Debian 12 ARM64
|
|
# Run this script on your server: drone@91.99.139.235
|
|
|
|
set -e
|
|
|
|
echo "🚀 Starting ICE Watch deployment..."
|
|
|
|
# Update system
|
|
echo "📦 Updating system packages..."
|
|
sudo apt update && sudo apt upgrade -y
|
|
|
|
# Install Node.js (ARM64 compatible)
|
|
echo "📦 Installing Node.js..."
|
|
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
|
|
sudo apt install -y nodejs build-essential
|
|
|
|
# Install Caddy for reverse proxy
|
|
echo "📦 Installing Caddy..."
|
|
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
|
|
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
|
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
|
|
sudo apt update
|
|
sudo apt install caddy
|
|
|
|
# Create app directory
|
|
echo "📁 Setting up app directory..."
|
|
sudo mkdir -p /opt/icewatch
|
|
sudo chown $USER:$USER /opt/icewatch
|
|
|
|
# Navigate to app directory
|
|
cd /opt/icewatch
|
|
|
|
# Create icewatch user for security
|
|
echo "👤 Creating icewatch user..."
|
|
sudo useradd --system --shell /bin/false --home /opt/icewatch --create-home icewatch
|
|
|
|
# Download additional configuration files from S3
|
|
echo "📥 Downloading configuration files..."
|
|
S3_BASE_URL="https://your-bucket-name.s3.amazonaws.com/icewatch"
|
|
|
|
# Download systemd service file
|
|
echo "📥 Downloading systemd service..."
|
|
curl -sSL "$S3_BASE_URL/icewatch.service" | sudo tee /etc/systemd/system/icewatch.service > /dev/null
|
|
|
|
# Download Caddyfile template
|
|
echo "📥 Downloading Caddy configuration..."
|
|
curl -sSL "$S3_BASE_URL/Caddyfile" | sudo tee /etc/caddy/Caddyfile.template > /dev/null
|
|
|
|
echo "✅ Server setup complete!"
|
|
echo ""
|
|
echo "🚀 Next steps to deploy ICE Watch:"
|
|
echo ""
|
|
echo "1. Clone your repository:"
|
|
echo " git clone https://github.com/yourusername/icewatch.git /opt/icewatch"
|
|
echo ""
|
|
echo "2. Set up the application:"
|
|
echo " cd /opt/icewatch"
|
|
echo " npm install"
|
|
echo " cp .env.example .env"
|
|
echo " nano .env # Add your MapBox token and admin password"
|
|
echo ""
|
|
echo "3. Configure domain in Caddyfile:"
|
|
echo " sudo nano /etc/caddy/Caddyfile.template"
|
|
echo " # Replace 'yourdomain.com' with your actual domain"
|
|
echo " sudo mv /etc/caddy/Caddyfile.template /etc/caddy/Caddyfile"
|
|
echo ""
|
|
echo "4. Set permissions:"
|
|
echo " sudo chown -R icewatch:icewatch /opt/icewatch"
|
|
echo " sudo chmod 660 /opt/icewatch/.env"
|
|
echo ""
|
|
echo "5. Start services:"
|
|
echo " sudo systemctl daemon-reload"
|
|
echo " sudo systemctl enable icewatch caddy"
|
|
echo " sudo systemctl start icewatch caddy"
|
|
echo ""
|
|
echo "6. Check status:"
|
|
echo " sudo systemctl status icewatch"
|
|
echo " sudo systemctl status caddy"
|
|
echo ""
|
|
echo "🌐 Your ICE Watch app will be available at: https://yourdomain.com"
|