# ADR-004: Reverse Proxy Selection — Caddy

**Status**: Accepted  
**Date**: 2026-04-05  
**Deciders**: Ezra (architect), Timmy Foundation  
**Scope**: TLS termination and reverse proxy for Matrix/Conduit (#166, #183)

---

## Context

Options for reverse proxy + TLS:
- **Caddy** (auto-TLS, simple config)
- **Traefik** (Docker-native, label-based)
- **Nginx** (ubiquitous, more manual)

## Decision

Use **Caddy** as the dedicated reverse proxy for Matrix services.

## Consequences

| Positive | Negative |
|----------|----------|
| Automatic ACME/Let's Encrypt | Less community Matrix-specific examples |
| Native `.well-known` + SRV support | New config language for ops team |
| No Docker label magic required | |
| Clean separation from existing Traefik | |

## Implementation

See:
- `infra/matrix/caddy/Caddyfile`
- `deploy/matrix/Caddyfile`

## References

- Issue: [#183](http://143.198.27.163:3000/Timmy_Foundation/timmy-config/issues/183)
