- 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
77 lines
2.8 KiB
Bash
77 lines
2.8 KiB
Bash
#!/bin/bash
|
|
|
|
echo "=========================================="
|
|
echo "Fix HTTP 500 on Login - Common Causes"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
# Most Common Cause #1: Database permissions
|
|
echo "1. Fixing Database Permissions (Most Common Issue):"
|
|
sudo chown -R 1654:1654 /opt/littleshop/data/
|
|
ls -la /opt/littleshop/data/
|
|
echo ""
|
|
|
|
# Most Common Cause #2: Missing JWT Secret Key
|
|
echo "2. Setting Required Environment Variables:"
|
|
docker stop littleshop-admin
|
|
docker rm littleshop-admin
|
|
|
|
docker run -d \
|
|
--name littleshop-admin \
|
|
--restart unless-stopped \
|
|
--network littleshop-network \
|
|
-p 5000:8080 \
|
|
-v /opt/littleshop/data:/app/data \
|
|
-v /opt/littleshop/logs:/app/logs \
|
|
-v /opt/littleshop/uploads:/app/wwwroot/uploads \
|
|
-e ASPNETCORE_ENVIRONMENT=Production \
|
|
-e ASPNETCORE_URLS="http://+:8080" \
|
|
-e ASPNETCORE_DETAILEDERRORS=true \
|
|
-e ConnectionStrings__DefaultConnection="Data Source=/app/data/littleshop-production.db;Cache=Shared" \
|
|
-e JWT_SECRET_KEY="ThisIsAVeryLongSecretKeyForJWTTokenGeneration123456789!" \
|
|
-e SilverPay__BaseUrl="http://silverpay-api:8000" \
|
|
-e SilverPay__ApiKey="7703aa7a62fa4b40a87e9cfd867f5407147515c0986116ea54fc00c0a0bc30d8" \
|
|
-e SilverPay__WebhookSecret="Thefa1r1esd1d1twebhooks2024" \
|
|
littleshop:latest
|
|
|
|
echo "3. Waiting for container to initialize (20 seconds)..."
|
|
sleep 20
|
|
|
|
echo ""
|
|
echo "4. Checking initialization logs:"
|
|
docker logs --tail 30 littleshop-admin 2>&1 | grep -E "Now listening|Entity Framework|Application started|ERROR|Exception" || docker logs --tail 30 littleshop-admin
|
|
echo ""
|
|
|
|
echo "5. Testing endpoints:"
|
|
echo -n " Health check: "
|
|
curl -s -o /dev/null -w "%{http_code}\n" http://localhost:5000/health
|
|
echo -n " Home page: "
|
|
curl -s -o /dev/null -w "%{http_code}\n" http://localhost:5000/
|
|
echo -n " Login page: "
|
|
curl -s -o /dev/null -w "%{http_code}\n" http://localhost:5000/Admin/Account/Login
|
|
echo ""
|
|
|
|
echo "6. If still getting 500, checking for actual error:"
|
|
docker logs littleshop-admin 2>&1 | grep -A 5 "Exception:" | head -20
|
|
echo ""
|
|
|
|
echo "7. Testing with curl to see error details:"
|
|
curl -s http://localhost:5000/Admin/Account/Login 2>/dev/null | grep -o "Exception.*" | head -5
|
|
echo ""
|
|
|
|
echo "=========================================="
|
|
echo "If login still shows HTTP 500:"
|
|
echo ""
|
|
echo "Option A: Check detailed logs"
|
|
echo " docker logs littleshop-admin | grep Exception"
|
|
echo ""
|
|
echo "Option B: Recreate database (will lose data)"
|
|
echo " docker stop littleshop-admin"
|
|
echo " rm /opt/littleshop/data/littleshop-production.db*"
|
|
echo " docker start littleshop-admin"
|
|
echo ""
|
|
echo "Option C: Run in Development mode for detailed errors"
|
|
echo " docker stop littleshop-admin"
|
|
echo " docker rm littleshop-admin"
|
|
echo " # Then run with ASPNETCORE_ENVIRONMENT=Development"
|
|
echo "==========================================" |