Commit 5dda1ae
committed
Merge #271: Evaluate Caddy for HTTPS Termination
5026ea9 docs: [#270] deploy caddy to production and update structure (Jose Celano)
299cccd docs: [#270] add caddy security scan and workflow update notes (Jose Celano)
e44754f docs: [#270] document tracker's built-in healthcheck (Jose Celano)
eb66f6c feat: [#270] add healthcheck to caddy container (Jose Celano)
cd0dfa7 docs: [#270] document caddy log warnings and their meaning (Jose Celano)
ab8b2e3 docs: [#270] document caddy configuration patterns (Jose Celano)
0a1f1e8 refactor: [#270] fix caddyfile formatting (Jose Celano)
b9e4aea docs: [#270] add caddy tls proxy evaluation results (Jose Celano)
Pull request description:
## Summary
Evaluation of Caddy v2.10 as TLS termination proxy for Torrust Tracker deployments.
**Status**: ✅ Evaluation Complete - Recommend Adoption
Closes #270
## Key Results
- ✅ **WebSocket support works perfectly** (Pingoo's critical failure point)
- ✅ **Automatic Let's Encrypt certificates** (~3-4 seconds for 3 domains)
- ✅ **Simple configuration** (21 lines vs nginx+certbot complexity)
- ✅ **All HTTPS endpoints verified**:
- Tracker API: `/api/health_check` → HTTP/2 200
- HTTP Tracker: `/announce` and `/health_check` → HTTP/2 200
- Grafana UI: redirect to login → HTTP/2 302
- ✅ **Production-ready** with automatic certificate renewal
- ✅ **Built-in HTTP/3 (QUIC)** support
## WebSocket Test (Critical)
```text
URL: wss://grafana.torrust-tracker.com/api/live/ws
Status: 101 Switching Protocols
Result: ✅ Dashboard live updates working perfectly
```
This was the critical failure point for Pingoo (#234).
## Documentation
- **Experiment Report**: `docs/research/caddy-tls-proxy-evaluation/experiment-full-stack.md`
- **Conclusion**: `docs/research/caddy-tls-proxy-evaluation/conclusion.md`
- **Configuration Files**: `docs/research/caddy-tls-proxy-evaluation/experiment-files/` (secrets redacted)
## Recommendation
**ADOPT CADDY** as the TLS termination proxy for Torrust Tracker deployments.
**Rationale**:
- Solves the critical WebSocket issue that blocked Pingoo
- Dramatically simpler than nginx+certbot approach
- Production-ready with automatic certificate management
- Better protocol support (HTTP/3/QUIC built-in)
- Lower operational overhead
## Next Steps
1. Create ADR documenting Caddy adoption decision
2. Update deployer templates with Caddy configuration
3. Migrate production deployments to Caddy
4. Document Caddy configuration in user guide
## Draft Status
This PR is marked as draft to allow for additional improvements while colleagues review the evaluation results.
ACKs for top commit:
josecelano:
ACK 5026ea9
Tree-SHA512: 1d77b7b784df3a8137810ddaa8ea27194be556285e0e9e064e50a1a779cc632da6b9aa6b441deb4b9161a52e2f1dc9f39bd515818b9671ad0e33bb591835248013 files changed
Lines changed: 1315 additions & 1 deletion
File tree
- docs
- issues
- research/caddy-tls-proxy-evaluation
- experiment-files
- storage/caddy/etc
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
67 | 67 | | |
68 | 68 | | |
69 | 69 | | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
70 | 73 | | |
71 | 74 | | |
72 | 75 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
518 | 518 | | |
519 | 519 | | |
520 | 520 | | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
521 | 570 | | |
522 | 571 | | |
523 | | - | |
| 572 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
0 commit comments