- Added UseForwardedHeaders to properly handle X-Forwarded-For and X-Forwarded-Proto - Fixes anti-forgery token validation when behind nginx proxy - Resolves HTTP 500 errors on POST requests to login endpoint
124 lines
4.4 KiB
Bash
124 lines
4.4 KiB
Bash
#!/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." |