littleshop/docker-compose.hostinger.yml
SysAdmin 94b6bd421d Fix HTTP 500 on login and create comprehensive deployment documentation
CRITICAL FIXES:
- Fixed JWT key configuration issue causing HTTP 500 on login
  - Changed environment variable from JWT_SECRET_KEY to Jwt__Key (double underscore)
  - Increased JWT key length to >32 bytes (256 bits) as required by HMAC-SHA256
  - Fixed ASPNETCORE_URLS configuration (not ASPNETCORE_HTTP_PORTS)

DOCUMENTATION CREATED:
- TROUBLESHOOTING.md: Complete troubleshooting guide with common issues and solutions
- deploy-littleshop.sh: Automated deployment script with working configuration
- docker-compose.hostinger.yml: Docker Compose file with all correct environment variables
- Updated WORKING_BASELINE_2024-09-24.md: Added HTTP 500 fix details

ROOT CAUSES IDENTIFIED:
1. JWT key environment variable naming mismatch (Jwt__Key vs JWT_SECRET_KEY)
2. JWT key too short (was 17 bytes, needs >32 bytes)
3. ASP.NET Core URL configuration issue (ASPNETCORE_URLS vs HTTP_PORTS)
4. Database file permissions (must be owned by UID 1654)

WORKING CONFIGURATION:
- Jwt__Key with 79-byte key
- ASPNETCORE_URLS=http://+:8080
- Proper Docker network configuration (littleshop-network)
- SilverPay integration on port 8000 (not 8001)

This commit ensures we have a stable, documented baseline for future updates
and addresses the concern about "one step forward, two steps back" by
providing comprehensive documentation of all fixes.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 22:48:25 +01:00

62 lines
2.3 KiB
YAML

version: '3.8'
services:
littleshop:
image: localhost:5000/littleshop:latest
container_name: littleshop-admin
restart: unless-stopped
ports:
- "127.0.0.1:5100:8080" # Local only, BunkerWeb will proxy
environment:
- ASPNETCORE_ENVIRONMENT=Production
- ASPNETCORE_URLS=http://+:8080 # CRITICAL: Must use URLS not HTTP_PORTS
- ConnectionStrings__DefaultConnection=Data Source=/app/data/littleshop-production.db
# JWT Configuration - MUST be > 32 bytes/256 bits
- Jwt__Key=ThisIsAVeryLongSecretKeyThatIsDefinitelyLongerThan32BytesForSure123456789ABCDEF
- Jwt__Issuer=LittleShop-Production
- Jwt__Audience=LittleShop-Production
- Jwt__ExpiryInHours=24
# SilverPay Configuration (pay.thebankofdebbie.giize.com)
- SilverPay__BaseUrl=http://silverpay-api:8000 # Internal Docker network - correct port
- SilverPay__PublicUrl=https://pay.thebankofdebbie.giize.com
- SilverPay__ApiKey=7703aa7a62fa4b40a87e9cfd867f5407147515c0986116ea54fc00c0a0bc30d8
- SilverPay__WebhookSecret=Thefa1r1esd1d1twebhooks2024
- SilverPay__DefaultWebhookUrl=https://admin.thebankofdebbie.giize.com/api/orders/payments/webhook
- SilverPay__AllowUnsignedWebhooks=false
# Admin Credentials (for initial setup)
- AdminUser__Username=admin
- AdminUser__Password=Thefa1r1esd1d1t
# Royal Mail Settings (if needed)
- RoyalMail__ClientId=
- RoyalMail__ClientSecret=
# WebPush Notifications
- WebPush__VapidPublicKey=BMc6fFJZ8oIQKQzcl3kMnP9tTsjrm3oI_VxLt3lAGYUMWGInzDKn7jqclEoZzjvXy1QXGFb3dIun8mVBwh-QuS4
- WebPush__VapidPrivateKey=dYuuagbz2CzCnPDFUpO_qkGLBgnN3MEFZQnjXNkc1MY
- WebPush__Subject=mailto:admin@thebankofdebbie.giize.com
volumes:
- /opt/littleshop/data:/app/data
- /opt/littleshop/uploads:/app/wwwroot/uploads
- /opt/littleshop/logs:/app/logs
networks:
- littleshop-network # Shared network for container communication
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
networks:
littleshop-network:
external: true