|
|
|
|
|
#!/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
|