littleshop/deploy-with-password.sh
SilverLabs DevTeam 54618348ab Update LittleShop configuration and deployment files
- Modified CLAUDE.md documentation
- Updated Dockerfile configuration
- Updated Program.cs and production settings
- Added deployment scripts for Hostinger
- Added Hostinger environment configuration

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-18 19:27:58 +01:00

141 lines
4.4 KiB
Bash
Executable File

#!/bin/bash
# LittleShop Deployment Script for Hostinger VPS with Password Support
# Usage: ./deploy-with-password.sh
set -e # Exit on any error
# Configuration
HOSTINGER_HOST="31.97.57.205"
HOSTINGER_PORT="2255"
HOSTINGER_USER="sysadmin"
SSH_KEY="./Hostinger/vps_hardening_key"
REMOTE_DIR="/opt/littleshop"
SERVICE_NAME="littleshop"
PASSWORD="Phenom12#."
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Logging function
log() {
echo -e "${GREEN}[$(date +'%Y-%m-%d %H:%M:%S')] $1${NC}"
}
warn() {
echo -e "${YELLOW}[$(date +'%Y-%m-%d %H:%M:%S')] WARNING: $1${NC}"
}
error() {
echo -e "${RED}[$(date +'%Y-%m-%d %H:%M:%S')] ERROR: $1${NC}"
exit 1
}
# Check if SSH key exists
if [ ! -f "$SSH_KEY" ]; then
error "SSH key not found at $SSH_KEY"
fi
# Check if required files exist
if [ ! -f "hostinger-docker-compose.yml" ]; then
error "hostinger-docker-compose.yml not found"
fi
if [ ! -f "env.hostinger" ]; then
warn "env.hostinger not found - you'll need to configure environment variables manually"
fi
log "Starting deployment to Hostinger VPS..."
# Test SSH connection
log "Testing SSH connection..."
ssh -i "$SSH_KEY" -p "$HOSTINGER_PORT" -o ConnectTimeout=10 "$HOSTINGER_USER@$HOSTINGER_HOST" "echo 'SSH connection successful'" || error "SSH connection failed"
# Create remote directory with sshpass for sudo
log "Creating remote directory structure..."
sshpass -p "$PASSWORD" ssh -i "$SSH_KEY" -p "$HOSTINGER_PORT" "$HOSTINGER_USER@$HOSTINGER_HOST" "echo '$PASSWORD' | sudo -S mkdir -p $REMOTE_DIR && echo '$PASSWORD' | sudo -S chown $HOSTINGER_USER:$HOSTINGER_USER $REMOTE_DIR"
# Copy files to server
log "Copying application files..."
scp -i "$SSH_KEY" -P "$HOSTINGER_PORT" -r LittleShop/ "$HOSTINGER_USER@$HOSTINGER_HOST:$REMOTE_DIR/"
scp -i "$SSH_KEY" -P "$HOSTINGER_PORT" hostinger-docker-compose.yml "$HOSTINGER_USER@$HOSTINGER_HOST:$REMOTE_DIR/docker-compose.yml"
scp -i "$SSH_KEY" -P "$HOSTINGER_PORT" nginx.conf "$HOSTINGER_USER@$HOSTINGER_HOST:$REMOTE_DIR/"
scp -i "$SSH_KEY" -P "$HOSTINGER_PORT" Dockerfile "$HOSTINGER_USER@$HOSTINGER_HOST:$REMOTE_DIR/"
# Copy environment file if it exists
if [ -f "env.hostinger" ]; then
log "Copying environment configuration..."
scp -i "$SSH_KEY" -P "$HOSTINGER_PORT" env.hostinger "$HOSTINGER_USER@$HOSTINGER_HOST:$REMOTE_DIR/.env"
fi
# Deploy on remote server
log "Building and starting containers on remote server..."
ssh -i "$SSH_KEY" -p "$HOSTINGER_PORT" "$HOSTINGER_USER@$HOSTINGER_HOST" << 'EOF'
cd /opt/littleshop
# Stop existing containers if running
if docker-compose ps 2>/dev/null | grep -q "littleshop"; then
echo "Stopping existing containers..."
docker-compose down
fi
# Build and start new containers
echo "Building Docker image..."
docker-compose build --no-cache
echo "Starting containers..."
docker-compose up -d
# Wait for container to be ready
echo "Waiting for application to start..."
sleep 10
# Check if container is running
if docker-compose ps | grep -q "Up"; then
echo "✅ Deployment successful!"
echo "Container status:"
docker-compose ps
echo ""
echo "Checking application health..."
# Try to curl the health endpoint
if curl -f http://localhost:8081/api/test > /dev/null 2>&1; then
echo "✅ Application is responding on port 8081"
else
echo "⚠️ Application may still be starting up"
fi
echo ""
echo "📝 Checking recent logs:"
docker-compose logs --tail=20 littleshop
echo ""
echo "📝 Next steps:"
echo "1. Configure your domain to point to this server"
echo "2. Set up SSL certificates if needed"
echo "3. Configure BTCPay Server integration"
echo "4. Test the application at https://admin.thebankofdebbie.giize.com"
else
echo "❌ Deployment failed - containers not running"
docker-compose logs
exit 1
fi
EOF
if [ $? -eq 0 ]; then
log "🎉 Deployment completed successfully!"
log "Application should be available at:"
log " - http://$HOSTINGER_HOST:8081 (direct access)"
log " - https://admin.thebankofdebbie.giize.com (via nginx proxy)"
log ""
log "📋 Post-deployment checklist:"
log "1. Verify the application is accessible"
log "2. Check that CORS is working properly"
log "3. Test admin login (admin/admin)"
log "4. Monitor logs: ssh -i $SSH_KEY -p $HOSTINGER_PORT $HOSTINGER_USER@$HOSTINGER_HOST 'cd /opt/littleshop && docker-compose logs -f'"
else
error "Deployment failed!"
fi