4.7 KiB
Deep Debugging Summary - January 26, 2026
Issue Reported
Site not accessible externally with error: "Blocked request. This host ("houseofprayer.ddns.net") is not allowed"
Root Cause Analysis
Primary Issue
Vite Dev Server Host Blocking - Vite's allowedHosts configuration was set to 'all' but the running frontend process was started before this configuration was applied, causing it to use default restrictive host validation.
Contributing Factors
- Configuration Not Loaded: Frontend process started with old/default vite.config.js
- No Process Restart: Config changes made but frontend not restarted
- Silent Failure: Vite returned HTTP 403 without clear indication in logs
Debugging Steps Performed
1. Log Analysis
- Backend logs: No errors, backend operational on port 8080
- Nginx error logs: Showed unrelated ModSecurity warnings from external scanners
- Frontend logs: Running but with old configuration
2. Service Verification
# All services confirmed running
- Frontend: Port 5100 ✓
- Backend: Port 8080 ✓
- Nginx: Port 443 ✓
- PostgreSQL: Active ✓
3. Configuration Review
- vite.config.js: Initially had
allowedHosts: 'all'(not working) - server.js: CORS properly configured for domain
- nginx-ssl.conf: Correctly proxying to services
4. Host Blocking Test
curl -H "Host: houseofprayer.ddns.net" http://localhost:5100/
# Result: 403 Forbidden (confirmed host blocking)
Solution Implemented
Step 1: Updated Vite Configuration
Changed /frontend/vite.config.js:
server: {
port: 5100,
strictPort: true,
host: true, // Listen on all addresses
allowedHosts: [
".ddns.net", // Wildcard for all .ddns.net subdomains
"houseofprayer.ddns.net", // Specific domain
"localhost",
".localhost",
"192.168.10.130", // Local IP
"127.0.0.1",
],
// ... rest of config
}
Step 2: Restarted Frontend Process
kill $(lsof -ti:5100)
cd frontend && npm run dev > /tmp/frontend.log 2>&1 &
Step 3: Verified Fix
curl -H "Host: houseofprayer.ddns.net" http://localhost:5100/
# Result: HTTP 200 OK ✓
Prevention Measures
1. Created Health Check Script
Location: scripts/health-check.sh
Automatically verifies:
- All services running
- Vite accepts domain (tests host blocking)
- DNS resolution
- Public HTTPS access
- API endpoints responding
Usage:
./scripts/health-check.sh
2. Created Startup Checklist
Location: STARTUP_CHECKLIST.md
Documents:
- Service verification commands
- Common issues and solutions
- Configuration file locations
- Emergency recovery procedures
- Testing commands
3. Configuration Best Practices
Rule: Always restart services after config changes
For frontend:
kill $(lsof -ti:5100)
cd frontend && npm run dev &
For backend:
kill $(lsof -ti:8080)
cd backend && node server.js &
Final Verification
All services operational:
✓ Frontend (Vite): Port 5100, accepts houseofprayer.ddns.net
✓ Backend (Node): Port 8080, API responding
✓ Nginx (HTTPS): Port 443, SSL active
✓ PostgreSQL: Database connected
✓ DNS Resolution: houseofprayer.ddns.net → 170.254.17.146
✓ Public Access: https://houseofprayer.ddns.net (200 OK)
Key Learnings
- Always restart after config changes - Configuration files are read at startup, not dynamically
- Test host blocking explicitly - Use curl with Host header to verify
- Vite's allowedHosts behavior - Both
'all'and array formats work, but require process restart - Health checks are essential - Automated verification prevents similar issues
Files Created/Modified
Created
scripts/health-check.sh- Automated health verificationSTARTUP_CHECKLIST.md- Operational documentationDEEP_DEBUG_REPORT.md- This file
Modified
frontend/vite.config.js- Fixed allowedHosts configuration
Recommended Next Steps
-
Production Build: Replace Vite dev server with built static files
cd frontend && npm run build # Serve from frontend/dist with Nginx -
Systemd Services: Create auto-start services for frontend/backend
-
Monitoring: Set up uptime monitoring (e.g., UptimeRobot)
-
Backup Strategy: Automate database backups
-
SSL Renewal: Ensure certbot auto-renewal working
Time to Resolution
Approximately 15 minutes from issue report to full resolution
Status
✅ RESOLVED - Site fully operational at https://houseofprayer.ddns.net
Debugging Session: January 26, 2026
Engineer: GitHub Copilot
User: pts
Site: House of Prayer Music Database