diff --git a/docs/caddy/monolith/Caddyfile b/docs/caddy/monolith/Caddyfile index 3adf45982..82567c4a6 100644 --- a/docs/caddy/monolith/Caddyfile +++ b/docs/caddy/monolith/Caddyfile @@ -3,7 +3,7 @@ # Customize email address and domain names. # Optional settings commented out. # -# BE SURE YOUR DOMAIN IS POINTED AT YOUR SERVER FIRST. +# BE SURE YOUR DOMAINS ARE POINTED AT YOUR SERVER FIRST. # Documentation: https://caddyserver.com/docs/ # # Bonus tip: If your IP address changes, use Caddy's @@ -38,17 +38,20 @@ } # The server name of your matrix homeserver. This example shows -# "well-known delegation" from the registered domain to a subdomain. +# "well-known delegation" from the registered domain to a subdomain, +# which is only needed if your server_name doesn't match your Matrix +# homeserver URL (i.e. you can show users a vanity domain that looks +# nice and is easy to remember but still have your Matrix server on +# its own subdomain or hosted service). example.com { header /.well-known/matrix/* Content-Type application/json header /.well-known/matrix/* Access-Control-Allow-Origin * - respond /.well-known/matrix/server `{"m.homeserver": {"base_url": "https://matrix.example.com"}}` - respond /.well-known/matrix/client `{"m.server": "matrix.example.com:443"}` + respond /.well-known/matrix/server `{"m.server": "matrix.example.com:443"}` + respond /.well-known/matrix/client `{"m.homeserver": {"base_url": "https://matrix.example.com"}}` } # The actual domain name whereby your Matrix server is accessed. matrix.example.com { # Set localhost:8008 to the address of your Dendrite server, if different - reverse_proxy /_matrix/* localhost:8008 # matrix endpoints - reverse_proxy /_dendrite/* localhost:8008 # admin endpoints + reverse_proxy /_matrix/* localhost:8008 } diff --git a/docs/caddy/polylith/Caddyfile b/docs/caddy/polylith/Caddyfile new file mode 100644 index 000000000..244e50e7e --- /dev/null +++ b/docs/caddy/polylith/Caddyfile @@ -0,0 +1,66 @@ +# Sample Caddyfile for using Caddy in front of Dendrite. +# +# Customize email address and domain names. +# Optional settings commented out. +# +# BE SURE YOUR DOMAINS ARE POINTED AT YOUR SERVER FIRST. +# Documentation: https://caddyserver.com/docs/ +# +# Bonus tip: If your IP address changes, use Caddy's +# dynamic DNS plugin to update your DNS records to +# point to your new IP automatically: +# https://github.com/mholt/caddy-dynamicdns +# + + +# Global options block +{ + # In case there is a problem with your certificates. + # email example@example.com + + # Turn off the admin endpoint if you don't need graceful config + # changes and/or are running untrusted code on your machine. + # admin off + + # Enable this if your clients don't send ServerName in TLS handshakes. + # default_sni example.com + + # Enable debug mode for verbose logging. + # debug + + # Use Let's Encrypt's staging endpoint for testing. + # acme_ca https://acme-staging-v02.api.letsencrypt.org/directory + + # If you're port-forwarding HTTP/HTTPS ports from 80/443 to something + # else, enable these and put the alternate port numbers here. + # http_port 8080 + # https_port 8443 +} + +# The server name of your matrix homeserver. This example shows +# "well-known delegation" from the registered domain to a subdomain, +# which is only needed if your server_name doesn't match your Matrix +# homeserver URL (i.e. you can show users a vanity domain that looks +# nice and is easy to remember but still have your Matrix server on +# its own subdomain or hosted service). +example.com { + header /.well-known/matrix/* Content-Type application/json + header /.well-known/matrix/* Access-Control-Allow-Origin * + respond /.well-known/matrix/server `{"m.server": "matrix.example.com:443"}` + respond /.well-known/matrix/client `{"m.homeserver": {"base_url": "https://matrix.example.com"}}` +} + +# The actual domain name whereby your Matrix server is accessed. +matrix.example.com { + # Change the end of each reverse_proxy line to the correct + # address for your various services. + @sync_api { + path_regexp /_matrix/client/.*?/(sync|user/.*?/filter/?.*|keys/changes|rooms/.*?/messages)$ + } + reverse_proxy @sync_api sync_api:8073 + + reverse_proxy /_matrix/client* client_api:8071 + reverse_proxy /_matrix/federation* federation_api:8071 + reverse_proxy /_matrix/key* federation_api:8071 + reverse_proxy /_matrix/media* media_api:8071 +} diff --git a/docs/installation/1_planning.md b/docs/installation/1_planning.md index 7c1b4f966..3aa5b4d85 100644 --- a/docs/installation/1_planning.md +++ b/docs/installation/1_planning.md @@ -100,9 +100,8 @@ or by specifying the `store_dir` option in the the `jetstream` configuration. A reverse proxy such as [Caddy](https://caddyserver.com), [NGINX](https://www.nginx.com) or [HAProxy](http://www.haproxy.org) is required for polylith deployments and is useful for monolith deployments. Configuring those is not covered in this documentation, although sample configurations -for [Caddy](https://github.com/matrix-org/dendrite/blob/main/docs/caddy/monolith/Caddyfile) and -[NGINX](https://github.com/matrix-org/dendrite/blob/main/docs/nginx/polylith-sample.conf) -are provided. +for [Caddy](https://github.com/matrix-org/dendrite/blob/main/docs/caddy) and +[NGINX](https://github.com/matrix-org/dendrite/blob/main/docs/nginx) are provided. ### Windows diff --git a/docs/installation/6_install_polylith.md b/docs/installation/6_install_polylith.md index 22ca70ac8..ec4a77628 100644 --- a/docs/installation/6_install_polylith.md +++ b/docs/installation/6_install_polylith.md @@ -29,5 +29,6 @@ Polylith deployments require a reverse proxy in order to ensure that requests ar sent to the correct endpoint. You must ensure that a suitable reverse proxy is installed and configured. -Sample configurations are provided for [Caddy](https://github.com/matrix-org/dendrite/blob/main/docs/caddy/monolith/Caddyfile) +Sample configurations are provided +for [Caddy](https://github.com/matrix-org/dendrite/blob/main/docs/caddy/polylith/Caddyfile) and [NGINX](https://github.com/matrix-org/dendrite/blob/main/docs/nginx/polylith-sample.conf). \ No newline at end of file