diff --git a/docs/caddy/monolith/Caddyfile b/docs/caddy/monolith/Caddyfile index cd93f9e10..82567c4a6 100644 --- a/docs/caddy/monolith/Caddyfile +++ b/docs/caddy/monolith/Caddyfile @@ -1,68 +1,57 @@ +# 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 { - # debug - admin off - email example@example.com - default_sni example.com - # Debug endpoint - # acme_ca https://acme-staging-v02.api.letsencrypt.org/directory + # 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 } -####################################################################### -# Snippets -#______________________________________________________________________ - -(handle_errors_maintenance) { - handle_errors { - @maintenance expression {http.error.status_code} == 502 - rewrite @maintenance maintenance.html - root * "/path/to/service/pages" - file_server - } -} - -(matrix-well-known-header) { - # Headers - header Access-Control-Allow-Origin "*" - header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" - header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization" - header Content-Type "application/json" -} - -####################################################################### - +# 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 { - - # ... - - handle /.well-known/matrix/server { - import matrix-well-known-header - respond `{ "m.server": "matrix.example.com:443" }` 200 - } - - handle /.well-known/matrix/client { - import matrix-well-known-header - respond `{ "m.homeserver": { "base_url": "https://matrix.example.com" } }` 200 - } - - import handle_errors_maintenance -} - -example.com:8448 { - # server<->server HTTPS traffic - reverse_proxy http://dendrite-host:8008 + 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 { - - handle /_matrix/* { - # client<->server HTTPS traffic - reverse_proxy http://dendrite-host:8008 - } - - handle_path /* { - # Client webapp (Element SPA or ...) - file_server { - root /path/to/www/example.com/matrix-web-client/ - } - } + # Set localhost:8008 to the address of your Dendrite server, if different + reverse_proxy /_matrix/* localhost:8008 } diff --git a/docs/installation/10_optimisation.md b/docs/installation/10_optimisation.md deleted file mode 100644 index c19b7a75e..000000000 --- a/docs/installation/10_optimisation.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Optimise your installation -parent: Installation -has_toc: true -nav_order: 10 -permalink: /installation/start/optimisation ---- - -# Optimise your installation - -Now that you have Dendrite running, the following tweaks will improve the reliability -and performance of your installation. - -## File descriptor limit - -Most platforms have a limit on how many file descriptors a single process can open. All -connections made by Dendrite consume file descriptors — this includes database connections -and network requests to remote homeservers. When participating in large federated rooms -where Dendrite must talk to many remote servers, it is often very easy to exhaust default -limits which are quite low. - -We currently recommend setting the file descriptor limit to 65535 to avoid such -issues. Dendrite will log immediately after startup if the file descriptor limit is too low: - -``` -level=warning msg="IMPORTANT: Process file descriptor limit is currently 1024, it is recommended to raise the limit for Dendrite to at least 65535 to avoid issues" -``` - -UNIX systems have two limits: a hard limit and a soft limit. You can view the soft limit -by running `ulimit -Sn` and the hard limit with `ulimit -Hn`: - -```bash -$ ulimit -Hn -1048576 - -$ ulimit -Sn -1024 -``` - -Increase the soft limit before starting Dendrite: - -```bash -ulimit -Sn 65535 -``` - -The log line at startup should no longer appear if the limit is sufficient. - -If you are running under a systemd service, you can instead add `LimitNOFILE=65535` option -to the `[Service]` section of your service unit file. - -## DNS caching - -Dendrite has a built-in DNS cache which significantly reduces the load that Dendrite will -place on your DNS resolver. This may also speed up outbound federation. - -Consider enabling the DNS cache by modifying the `global` section of your configuration file: - -```yaml - dns_cache: - enabled: true - cache_size: 4096 - cache_lifetime: 600s -``` - -## Time synchronisation - -Matrix relies heavily on TLS which requires the system time to be correct. If the clock -drifts then you may find that federation no works reliably (or at all) and clients may -struggle to connect to your Dendrite server. - -Ensure that the time is synchronised on your system by enabling NTP sync. diff --git a/sytest-blacklist b/sytest-blacklist index adebaf00a..14edf398a 100644 --- a/sytest-blacklist +++ b/sytest-blacklist @@ -40,4 +40,4 @@ Accesing an AS-hosted room alias asks the AS server Guest users can join guest_access rooms # This will fail in HTTP API mode, so blacklisted for now -If a device list update goes missing, the server resyncs on the next one +If a device list update goes missing, the server resyncs on the next one \ No newline at end of file diff --git a/sytest-whitelist b/sytest-whitelist index 9f019fb40..e92ae6495 100644 --- a/sytest-whitelist +++ b/sytest-whitelist @@ -107,7 +107,6 @@ Lazy loading parameters in the filter are strictly boolean Can sync Can sync a joined room Newly joined room is included in an incremental sync -Newly joined room includes presence in incremental sync User is offline if they set_presence=offline in their sync Changes to state are included in an incremental sync A change to displayname should appear in incremental /sync @@ -755,4 +754,4 @@ Messages that notify from another user increment notification_count Messages that highlight from another user increment unread highlight count Notifications can be viewed with GET /notifications Can get rooms/{roomId}/messages for a departed room (SPEC-216) -Local device key changes appear in /keys/changes +Local device key changes appear in /keys/changes \ No newline at end of file diff --git a/userapi/storage/tables/stats_table_test.go b/userapi/storage/tables/stats_table_test.go index ad79bb2c8..c4aec552c 100644 --- a/userapi/storage/tables/stats_table_test.go +++ b/userapi/storage/tables/stats_table_test.go @@ -283,7 +283,6 @@ func Test_UserStatistics(t *testing.T) { t.Fatalf("unable to update daily visits stats: %v", err) } } - gotStats, _, err := statsDB.UserStatistics(ctx, nil) if err != nil { t.Fatalf("unexpected error: %v", err)