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