You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

173 lines
4.9 KiB

#!/bin/bash
# PoWHD Analysis Website Deployment Script
# Deploys nginx container to remote server on port 14888
set -e
# Configuration
WEB_SERVER="192.168.1.140"
WEB_USER="crappy"
REMOTE_PATH="/home/crappy/ponzi"
CONTAINER_NAME="powhd-analysis-site"
PORT="14888"
echo "=========================================="
echo "PoWHD Analysis Website Deployment"
echo "=========================================="
echo "Target: $WEB_USER@$WEB_SERVER:$REMOTE_PATH"
echo "Port: $PORT"
echo ""
# Check if we can reach the server
echo "Testing connection to web server..."
if ! ping -c 1 -W 3 $WEB_SERVER > /dev/null 2>&1; then
echo "❌ Cannot reach web server at $WEB_SERVER"
echo "Please check network connectivity and try again."
exit 1
fi
echo "✅ Web server is reachable"
# Create deployment directory locally
DEPLOY_DIR="deployment-$(date +%Y%m%d-%H%M%S)"
echo "Creating local deployment package: $DEPLOY_DIR"
mkdir -p $DEPLOY_DIR
# Copy all website files
echo "📦 Packaging website files..."
cp Dockerfile $DEPLOY_DIR/
cp docker-compose.yml $DEPLOY_DIR/
cp nginx.conf $DEPLOY_DIR/
cp index.html $DEPLOY_DIR/
cp styles.css $DEPLOY_DIR/
cp script.js $DEPLOY_DIR/
# Include Solana dApp files
if [ -f solana.html ]; then cp solana.html $DEPLOY_DIR/; fi
if [ -f solana.js ]; then cp solana.js $DEPLOY_DIR/; fi
cp -r assets $DEPLOY_DIR/
# Create deployment info
cat > $DEPLOY_DIR/deployment-info.txt << EOF
PoWHD Analysis Website Deployment
=================================
Deployment Date: $(date)
Source: $(hostname):$(pwd)
Target: $WEB_USER@$WEB_SERVER:$REMOTE_PATH
Port: $PORT
Container: $CONTAINER_NAME
Files included:
$(find $DEPLOY_DIR -type f | sort)
To start the container:
cd $REMOTE_PATH
docker-compose up -d
To view logs:
docker-compose logs -f
To stop:
docker-compose down
Access URL: http://$WEB_SERVER:$PORT/
Health check: http://$WEB_SERVER:$PORT/health
EOF
# Copy files to web server
echo "📤 Copying files to web server..."
echo "Creating remote directory..."
ssh $WEB_USER@$WEB_SERVER "mkdir -p $REMOTE_PATH" || {
echo "❌ Failed to create remote directory. Check SSH access."
exit 1
}
echo "Transferring files..."
scp -r $DEPLOY_DIR/* $WEB_USER@$WEB_SERVER:$REMOTE_PATH/ || {
echo "❌ Failed to copy files. Check SSH access and permissions."
exit 1
}
echo "✅ Files copied successfully"
# Deploy on remote server
echo "🚀 Building and starting container on web server..."
ssh $WEB_USER@$WEB_SERVER << EOF
cd $REMOTE_PATH
echo "Stopping existing container (if running)..."
docker-compose down 2>/dev/null || true
docker rm -f $CONTAINER_NAME 2>/dev/null || true
echo "Building new container..."
docker-compose build --no-cache
echo "Starting container on port $PORT..."
docker-compose up -d
echo "Waiting for container to be ready..."
sleep 5
# Check if container is running
if docker ps | grep -q $CONTAINER_NAME; then
echo "✅ Container is running successfully!"
docker-compose ps
else
echo "❌ Container failed to start. Checking logs..."
docker-compose logs
exit 1
fi
# Test health endpoint
echo "Testing health endpoint..."
if curl -s http://localhost:$PORT/health > /dev/null; then
echo "✅ Health check passed!"
else
echo "⚠ Health check failed, but container is running"
fi
echo ""
echo "=== DEPLOYMENT SUMMARY ==="
echo "Container: $CONTAINER_NAME"
echo "Status: \$(docker ps --format 'table {{.Names}}\\t{{.Status}}\\t{{.Ports}}' | grep $CONTAINER_NAME)"
echo "Access URL: http://$WEB_SERVER:$PORT/"
echo "=========================="
EOF
# Clean up local deployment directory
echo "🧹 Cleaning up local files..."
rm -rf $DEPLOY_DIR
# Final status check
echo ""
echo "🎯 Testing final deployment..."
if curl -s --connect-timeout 10 http://$WEB_SERVER:$PORT/health | grep -q "healthy"; then
echo "✅ Website is live and healthy!"
echo ""
echo "=========================================="
echo "🚀 DEPLOYMENT SUCCESSFUL!"
echo "=========================================="
echo "Website URL: http://$WEB_SERVER:$PORT/"
echo "Health Check: http://$WEB_SERVER:$PORT/health"
echo ""
echo "Container Management:"
echo " View logs: ssh $WEB_USER@$WEB_SERVER 'cd $REMOTE_PATH && docker-compose logs -f'"
echo " Restart: ssh $WEB_USER@$WEB_SERVER 'cd $REMOTE_PATH && docker-compose restart'"
echo " Stop: ssh $WEB_USER@$WEB_SERVER 'cd $REMOTE_PATH && docker-compose down'"
echo " Update: Re-run this script"
echo ""
echo "NPM Reverse Proxy Config:"
echo " Scheme: http"
echo " Forward Hostname/IP: $WEB_SERVER"
echo " Forward Port: $PORT"
echo " Block Common Exploits: ✓"
echo " Websockets Support: ✓"
echo "=========================================="
else
echo "❌ Health check failed. Website may not be accessible."
echo "Check the container status manually:"
echo " ssh $WEB_USER@$WEB_SERVER 'docker ps'"
echo " ssh $WEB_USER@$WEB_SERVER 'cd $REMOTE_PATH && docker-compose logs'"
exit 1
fi