super-productivity/packages/super-sync-server/Caddyfile
Johannes Millan ae40f0ba2e feat(sync): add comprehensive timeout handling for large operations
Implement coordinated timeout strategy across all layers:

**Client-side (90s total):**
- HTTP requests: 75s timeout with AbortController
- Sync wait timeout: 90s (exceeds all server timeouts)
- Restore service: Retry logic for network errors (2s, 4s backoff)
- Better error messages for timeout scenarios

**Server-side:**
- Caddy proxy: 85s timeout (exceeds Fastify)
- Fastify server: 80s request timeout (exceeds DB timeout)
- Database operations: 60s (unchanged)

**Rationale:**
Each timeout layer exceeds the one below it, allowing inner operations
to complete and report errors properly. The 90s client timeout ensures
large operations (snapshot generation, imports) can complete without
premature abortion.

**Monitoring:**
- Log slow requests >30s for visibility
- Detailed error logging with duration tracking
- Android WebView timeout support via CapacitorHttp
2026-01-20 17:07:24 +01:00

30 lines
682 B
Caddyfile

{$DOMAIN} {
reverse_proxy supersync:1900 {
# Allow up to 85 seconds for long-running operations
# (snapshot generation, large imports)
# MUST be greater than Fastify timeout (80s) but less than client timeout (90s)
timeout 85s
transport http {
dial_timeout 10s
response_header_timeout 85s
}
}
# Security headers
header {
X-Content-Type-Options nosniff
X-Frame-Options DENY
Referrer-Policy strict-origin-when-cross-origin
-Server
}
# Enable compression
encode gzip zstd
# Logging
log {
output stdout
format console
}
}