#!/bin/bash echo "==========================================" echo "HTTP 500 Error Deep Debugging" echo "==========================================" echo "" # 1. Get the actual error from logs echo "1. ACTUAL ERROR MESSAGE:" echo "------------------------" docker logs littleshop-admin --tail 200 2>&1 | grep -A 10 "Exception" | head -50 echo "" # 2. Check if database file exists and is accessible echo "2. DATABASE FILE CHECK:" echo "------------------------" echo "Host system check:" ls -la /opt/littleshop/data/littleshop-production.db 2>/dev/null || echo "Database file not found on host" echo "" echo "From inside container:" docker exec littleshop-admin ls -la /app/data/ 2>/dev/null || echo "Cannot access container filesystem" echo "" # 3. Test database directly echo "3. DATABASE CONNECTION TEST:" echo "------------------------" docker exec littleshop-admin bash -c "cd /app && dotnet exec LittleShop.dll --test-db" 2>&1 | head -20 || echo "Could not test database" echo "" # 4. Check all environment variables echo "4. ENVIRONMENT VARIABLES:" echo "------------------------" docker exec littleshop-admin printenv | grep -E "ASPNETCORE|ConnectionStrings|JWT|SilverPay" | sort echo "" # 5. Check if it's a specific login issue echo "5. LOGIN SPECIFIC TEST:" echo "------------------------" echo "Testing other endpoints:" echo -n " / endpoint: " docker exec littleshop-admin curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/ 2>/dev/null || echo "Failed" echo -n " /health endpoint: " docker exec littleshop-admin curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/health 2>/dev/null || echo "Failed" echo -n " /Admin endpoint: " docker exec littleshop-admin curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/Admin 2>/dev/null || echo "Failed" echo -n " /Admin/Account/Login endpoint: " docker exec littleshop-admin curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/Admin/Account/Login 2>/dev/null || echo "Failed" echo "" # 6. Check for port conflicts echo "6. PORT BINDING CHECK:" echo "------------------------" netstat -tulpn | grep -E "5000|8080" || echo "No port conflicts found" echo "" # 7. Disk space check echo "7. DISK SPACE:" echo "------------------------" df -h /opt/littleshop/ echo "" # 8. Try to get the actual error page echo "8. ERROR PAGE CONTENT:" echo "------------------------" docker exec littleshop-admin curl -s http://localhost:8080/Admin/Account/Login 2>/dev/null | grep -A 5 -B 5 "Exception\|Error\|500" | head -20 || echo "Could not get error page" echo "" echo "==========================================" echo "ATTEMPTING EMERGENCY FIX" echo "==========================================" echo "" # Emergency Fix 1: Remove database and let it recreate echo "Fix 1: Database Reset" echo "----------------------" read -p "Reset database? This will delete all data! (y/n) " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then docker stop littleshop-admin sudo rm -f /opt/littleshop/data/littleshop-production.db sudo rm -f /opt/littleshop/data/littleshop-production.db-shm sudo rm -f /opt/littleshop/data/littleshop-production.db-wal echo "Database files removed. Restarting container..." docker start littleshop-admin sleep 10 echo "Checking new logs..." docker logs --tail 20 littleshop-admin else echo "Skipped database reset" fi echo "" # Emergency Fix 2: Run in Development mode to see detailed errors echo "Fix 2: Run with Detailed Errors" echo "--------------------------------" read -p "Run container in Development mode for detailed errors? (y/n) " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then docker stop littleshop-admin docker rm littleshop-admin docker run -d \ --name littleshop-admin \ --network littleshop-network \ -p 5000:8080 \ -v /opt/littleshop/data:/app/data \ -v /opt/littleshop/logs:/app/logs \ -e ASPNETCORE_ENVIRONMENT=Development \ -e ASPNETCORE_URLS="http://+:8080" \ -e ConnectionStrings__DefaultConnection="Data Source=/app/data/littleshop-production.db" \ littleshop:latest sleep 10 echo "Getting detailed error output..." docker exec littleshop-admin curl -s http://localhost:8080/Admin/Account/Login | head -100 else echo "Skipped Development mode" fi echo "" echo "==========================================" echo "DIAGNOSIS COMPLETE" echo "==========================================" echo "Please share the error messages shown above." echo "The actual Exception message will tell us exactly what's wrong."