96 lines
2.7 KiB
Bash
Executable File
96 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Droplet Setup Script for agents.jeffemmett.com
|
|
# Run this script on your DigitalOcean droplet as root
|
|
|
|
set -e
|
|
|
|
echo "🚀 Setting up agents.jeffemmett.com deployment environment..."
|
|
|
|
# Update system
|
|
echo "📦 Updating system packages..."
|
|
apt-get update
|
|
apt-get upgrade -y
|
|
|
|
# Install required packages
|
|
echo "📦 Installing required packages..."
|
|
apt-get install -y nginx python3 python3-pip nodejs npm git certbot python3-certbot-nginx curl
|
|
|
|
# Verify Node.js version (need v20+)
|
|
echo "📦 Installing Node.js 20..."
|
|
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
|
|
apt-get install -y nodejs
|
|
|
|
# Create deployment directory
|
|
echo "📁 Creating deployment directory..."
|
|
mkdir -p /var/www/agents.jeffemmett.com
|
|
cd /var/www/agents.jeffemmett.com
|
|
|
|
# Clone repository (or pull if already exists)
|
|
if [ -d ".git" ]; then
|
|
echo "📥 Pulling latest code..."
|
|
git fetch origin main
|
|
git reset --hard origin/main
|
|
else
|
|
echo "📥 Cloning repository..."
|
|
git clone https://github.com/Jeff-Emmett/infinite-agents.git .
|
|
git checkout main
|
|
fi
|
|
|
|
# Install dependencies
|
|
echo "📦 Installing Node.js dependencies..."
|
|
npm ci
|
|
|
|
# Generate dashboard
|
|
echo "🎨 Generating dashboard..."
|
|
python3 generate_index.py
|
|
|
|
# Set proper permissions
|
|
echo "🔒 Setting permissions..."
|
|
chown -R www-data:www-data /var/www/agents.jeffemmett.com
|
|
chmod -R 755 /var/www/agents.jeffemmett.com
|
|
|
|
# Configure nginx
|
|
echo "🌐 Configuring nginx..."
|
|
cp deployment/nginx-config.conf /etc/nginx/sites-available/agents.jeffemmett.com
|
|
ln -sf /etc/nginx/sites-available/agents.jeffemmett.com /etc/nginx/sites-enabled/
|
|
rm -f /etc/nginx/sites-enabled/default
|
|
|
|
# Test nginx configuration
|
|
nginx -t
|
|
|
|
# Obtain SSL certificate (only if not already present)
|
|
if [ ! -f /etc/letsencrypt/live/agents.jeffemmett.com/fullchain.pem ]; then
|
|
echo "🔐 Obtaining SSL certificate..."
|
|
echo "NOTE: Make sure DNS is pointing to this droplet before running certbot!"
|
|
read -p "Press Enter to continue with certbot, or Ctrl+C to cancel..."
|
|
certbot --nginx -d agents.jeffemmett.com --non-interactive --agree-tos --email admin@jeffemmett.com
|
|
else
|
|
echo "✅ SSL certificate already exists"
|
|
fi
|
|
|
|
# Reload nginx
|
|
echo "🔄 Reloading nginx..."
|
|
systemctl reload nginx
|
|
|
|
# Enable nginx on boot
|
|
systemctl enable nginx
|
|
|
|
# Setup auto-renewal for SSL
|
|
echo "🔐 Setting up SSL auto-renewal..."
|
|
systemctl enable certbot.timer
|
|
systemctl start certbot.timer
|
|
|
|
echo ""
|
|
echo "✅ Setup complete!"
|
|
echo ""
|
|
echo "📋 Next steps:"
|
|
echo "1. Verify site is accessible at https://agents.jeffemmett.com"
|
|
echo "2. Add GitHub secrets for automated deployments:"
|
|
echo " - DROPLET_HOST: 143.198.39.165"
|
|
echo " - DROPLET_USER: root"
|
|
echo " - DROPLET_SSH_KEY: (your private SSH key)"
|
|
echo ""
|
|
echo "3. Test deployment by pushing to main branch"
|
|
echo ""
|