# Caddyfile — Reverse proxy for Conduit Matrix homeserver
# Issue: #166 / #183
#
# Place in /etc/caddy/Caddyfile or use with `caddy run --config Caddyfile`

# Matrix client and federation on same domain
matrix.timmy.foundation {
    # Client API (.well-known, /_matrix/client)
    handle /.well-known/matrix/* {
        header Content-Type application/json
        respond `{"
            "m.homeserver": {"base_url": "https://matrix.timmy.foundation"},
            "m.identity_server": {"base_url": "https://vector.im"}
        }` 200
    }

    # Handle federation (server-to-server) on standard path
    handle /_matrix/server/* {
        reverse_proxy localhost:6167
    }

    # Handle client API
    handle /_matrix/client/* {
        reverse_proxy localhost:6167
    }

    # Handle media repository
    handle /_matrix/media/* {
        reverse_proxy localhost:6167
    }

    # Handle federation checks
    handle /_matrix/federation/* {
        reverse_proxy localhost:6167
    }

    # Handle static content (if serving Element web from same domain)
    handle_path /element/* {
        reverse_proxy localhost:8080
    }

    # Health check / status
    respond /health "OK" 200
    
    # Default — you may want to serve Element web or redirect
    respond "Matrix Homeserver" 200
}

# Optional: Serve Element Web on separate subdomain
# element.timmy.foundation {
#     reverse_proxy localhost:8080
# }

# Federation port (8448) — server-to-server communication
# This allows other Matrix servers to find and connect to yours
matrix.timmy.foundation:8448 {
    reverse_proxy localhost:6167
}
