mirror of
https://github.com/element-hq/synapse.git
synced 2025-03-05 07:26:52 +00:00
deploy: 2252bae3df
This commit is contained in:
parent
d2d9645a32
commit
f05726f53c
12 changed files with 40 additions and 22 deletions
|
@ -374,7 +374,7 @@ configuration:</p>
|
|||
<li>To run with Postgres, supply the <code>-e POSTGRES=1 -e MULTI_POSTGRES=1</code> environment flags.</li>
|
||||
<li>To run with Synapse in worker mode, supply the <code>-e WORKERS=1 -e REDIS=1</code> environment flags (in addition to the Postgres flags).</li>
|
||||
</ul>
|
||||
<p>For more details about other configurations, see the <a href="https://github.com/vector-im/sytest/blob/develop/docker/README.md">Docker-specific documentation in the SyTest repo</a>.</p>
|
||||
<p>For more details about other configurations, see the <a href="https://github.com/matrix-org/sytest/blob/develop/docker/README.md">Docker-specific documentation in the SyTest repo</a>.</p>
|
||||
<h2 id="run-the-integration-tests-complement"><a class="header" href="#run-the-integration-tests-complement">Run the integration tests (<a href="https://github.com/matrix-org/complement">Complement</a>).</a></h2>
|
||||
<p><a href="https://github.com/matrix-org/complement">Complement</a> is a suite of black box tests that can be run on any homeserver implementation. It can also be thought of as end-to-end (e2e) tests.</p>
|
||||
<p>It's often nice to develop on Synapse and write Complement tests at the same time.
|
||||
|
|
|
@ -54,7 +54,7 @@ function fetchVersions(dropdown, dropdownMenu) {
|
|||
return new Promise((resolve, reject) => {
|
||||
window.addEventListener("load", () => {
|
||||
|
||||
fetch("https://api.github.com/repos/matrix-org/synapse/git/trees/gh-pages", {
|
||||
fetch("https://api.github.com/repos/element-hq/synapse/git/trees/gh-pages", {
|
||||
cache: "force-cache",
|
||||
}).then(res =>
|
||||
res.json()
|
||||
|
@ -124,4 +124,4 @@ function changeVersion(url, newVersion) {
|
|||
parsedURL.pathname = pathSegments.join('/');
|
||||
|
||||
return parsedURL.href;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -167,7 +167,7 @@
|
|||
<h3 id="presence"><a class="header" href="#presence">Presence</a></h3>
|
||||
<p>This is the main reason people have a poor matrix experience on resource constrained homeservers. Element web will frequently be saying the server is offline while the python process will be pegged at 100% cpu. This feature is used to tell when other users are active (have a client app in the foreground) and therefore more likely to respond, but requires a lot of network activity to maintain even when nobody is talking in a room.</p>
|
||||
<p><img src="https://user-images.githubusercontent.com/71895/94848963-a47a3580-041c-11eb-8b6e-acb772b4259e.png" alt="Screenshot_2020-10-01_19-29-46" /></p>
|
||||
<p>While synapse does have some performance issues with presence <a href="https://github.com/matrix-org/synapse/issues/3971">#3971</a>, the fundamental problem is that this is an easy feature to implement for a centralised service at nearly no overhead, but federation makes it combinatorial <a href="https://github.com/matrix-org/synapse/issues/8055">#8055</a>. There is also a client-side config option which disables the UI and idle tracking <a href="https://github.com/vector-im/element-web/blob/v1.7.8/config.sample.json#L45">enable_presence_by_hs_url</a> to blacklist the largest instances but I didn't notice much difference, so I recommend disabling the feature entirely at the server level as well.</p>
|
||||
<p>While synapse does have some performance issues with presence <a href="https://github.com/matrix-org/synapse/issues/3971">#3971</a>, the fundamental problem is that this is an easy feature to implement for a centralised service at nearly no overhead, but federation makes it combinatorial <a href="https://github.com/matrix-org/synapse/issues/8055">#8055</a>. There is also a client-side config option which disables the UI and idle tracking <a href="https://github.com/element-hq/element-web/blob/v1.7.8/config.sample.json#L45">enable_presence_by_hs_url</a> to blacklist the largest instances but I didn't notice much difference, so I recommend disabling the feature entirely at the server level as well.</p>
|
||||
<h3 id="joining"><a class="header" href="#joining">Joining</a></h3>
|
||||
<p>Joining a "large", federated room will initially fail with the below message in Element web, but waiting a while (10-60mins) and trying again will succeed without any issue. What counts as "large" is not message history, user count, connections to homeservers or even a simple count of the state events, it is instead how long the state resolution algorithm takes. However, each of those numbers are reasonable proxies, so we can use them as estimates since user count is one of the few things you see before joining.</p>
|
||||
<p><img src="https://user-images.githubusercontent.com/71895/94945781-18771500-04d3-11eb-8419-83c2da73a341.png" alt="Screenshot_2020-10-02_17-15-06" /></p>
|
||||
|
|
|
@ -451,6 +451,15 @@ sudo dnf groupinstall "Development Tools"
|
|||
<p>Some extra dependencies may be needed. You can use Homebrew (https://brew.sh) for them.</p>
|
||||
<p>You may need to install icu, and make the icu binaries and libraries accessible.
|
||||
Please follow <a href="https://pypi.org/project/PyICU/">the official instructions of PyICU</a> to do so.</p>
|
||||
<p>If you're struggling to get icu discovered, and see:</p>
|
||||
<pre><code> RuntimeError:
|
||||
Please install pkg-config on your system or set the ICU_VERSION environment
|
||||
variable to the version of ICU you have installed.
|
||||
</code></pre>
|
||||
<p>despite it being installed and having your <code>PATH</code> updated, you can omit this dependency by
|
||||
not specifying <code>--extras all</code> to <code>poetry</code>. If using postgres, you can install Synapse via
|
||||
<code>poetry install --extras saml2 --extras oidc --extras postgres --extras opentracing --extras redis --extras sentry</code>.
|
||||
ICU is not a hard dependency on getting a working installation.</p>
|
||||
<p>On ARM-based Macs you may also need to install libjpeg and libpq:</p>
|
||||
<pre><code class="language-sh"> brew install jpeg libpq
|
||||
</code></pre>
|
||||
|
@ -1445,8 +1454,8 @@ basic installation and got it working.</p>
|
|||
<p>NB: If your TLS certificate was provided by Let's Encrypt, TLS/DTLS will
|
||||
not work with any Matrix client that uses Chromium's WebRTC library. This
|
||||
currently includes Element Android & iOS; for more details, see their
|
||||
<a href="https://github.com/vector-im/element-android/issues/1533">respective</a>
|
||||
<a href="https://github.com/vector-im/element-ios/issues/2712">issues</a> as well as the underlying
|
||||
<a href="https://github.com/element-hq/element-android/issues/1533">respective</a>
|
||||
<a href="https://github.com/element-hq/element-ios/issues/2712">issues</a> as well as the underlying
|
||||
<a href="https://bugs.chromium.org/p/webrtc/issues/detail?id=11710">WebRTC issue</a>.
|
||||
Consider using a ZeroSSL certificate for your TURN server as a working alternative.</p>
|
||||
</li>
|
||||
|
@ -1600,8 +1609,8 @@ basic installation and got it working.</p>
|
|||
<p>NB: If your TLS certificate was provided by Let's Encrypt, TLS/DTLS will
|
||||
not work with any Matrix client that uses Chromium's WebRTC library. This
|
||||
currently includes Element Android & iOS; for more details, see their
|
||||
<a href="https://github.com/vector-im/element-android/issues/1533">respective</a>
|
||||
<a href="https://github.com/vector-im/element-ios/issues/2712">issues</a> as well as the underlying
|
||||
<a href="https://github.com/element-hq/element-android/issues/1533">respective</a>
|
||||
<a href="https://github.com/element-hq/element-ios/issues/2712">issues</a> as well as the underlying
|
||||
<a href="https://bugs.chromium.org/p/webrtc/issues/detail?id=11710">WebRTC issue</a>.
|
||||
Consider using a ZeroSSL certificate for your TURN server as a working alternative.</p>
|
||||
</li>
|
||||
|
@ -1814,7 +1823,7 @@ v1.61.0.</p>
|
|||
<tr><td>v1.83.0 – v1.84.1</td><td>v1.77.0</td></tr>
|
||||
<tr><td>v1.85.0 – v1.91.2</td><td>v1.83.0</td></tr>
|
||||
<tr><td>v1.92.0 – v1.97.0</td><td>v1.90.0</td></tr>
|
||||
<tr><td>v1.98.0 – v1.100.0</td><td>v1.96.0</td></tr>
|
||||
<tr><td>v1.98.0 – v1.101.0</td><td>v1.96.0</td></tr>
|
||||
</tbody></table>
|
||||
<h1 id="upgrading-to-v11000"><a class="header" href="#upgrading-to-v11000">Upgrading to v1.100.0</a></h1>
|
||||
<h2 id="minimum-supported-rust-version"><a class="header" href="#minimum-supported-rust-version">Minimum supported Rust version</a></h2>
|
||||
|
@ -11785,7 +11794,7 @@ worker application type.</p>
|
|||
<h4 id="push-notifications"><a class="header" href="#push-notifications">Push Notifications</a></h4>
|
||||
<p>You can designate generic worker to sending push notifications to
|
||||
a <a href="https://spec.matrix.org/v1.5/push-gateway-api/">push gateway</a> such as
|
||||
<a href="https://github.com/vector-im/sygnal">sygnal</a> and email.</p>
|
||||
<a href="https://github.com/matrix-org/sygnal">sygnal</a> and email.</p>
|
||||
<p>This will stop the main process sending push notifications.</p>
|
||||
<p>The workers responsible for sending push notifications can be defined using the
|
||||
<a href="usage/configuration/config_documentation.html#pusher_instances"><code>pusher_instances</code></a>
|
||||
|
@ -16649,7 +16658,7 @@ configuration:</p>
|
|||
<li>To run with Postgres, supply the <code>-e POSTGRES=1 -e MULTI_POSTGRES=1</code> environment flags.</li>
|
||||
<li>To run with Synapse in worker mode, supply the <code>-e WORKERS=1 -e REDIS=1</code> environment flags (in addition to the Postgres flags).</li>
|
||||
</ul>
|
||||
<p>For more details about other configurations, see the <a href="https://github.com/vector-im/sytest/blob/develop/docker/README.md">Docker-specific documentation in the SyTest repo</a>.</p>
|
||||
<p>For more details about other configurations, see the <a href="https://github.com/matrix-org/sytest/blob/develop/docker/README.md">Docker-specific documentation in the SyTest repo</a>.</p>
|
||||
<h2 id="run-the-integration-tests-complement"><a class="header" href="#run-the-integration-tests-complement">Run the integration tests (<a href="https://github.com/matrix-org/complement">Complement</a>).</a></h2>
|
||||
<p><a href="https://github.com/matrix-org/complement">Complement</a> is a suite of black box tests that can be run on any homeserver implementation. It can also be thought of as end-to-end (e2e) tests.</p>
|
||||
<p>It's often nice to develop on Synapse and write Complement tests at the same time.
|
||||
|
@ -19610,7 +19619,7 @@ and is consistent with the <code>.deb</code> packages released by Matrix.org.</p
|
|||
<h3 id="presence-1"><a class="header" href="#presence-1">Presence</a></h3>
|
||||
<p>This is the main reason people have a poor matrix experience on resource constrained homeservers. Element web will frequently be saying the server is offline while the python process will be pegged at 100% cpu. This feature is used to tell when other users are active (have a client app in the foreground) and therefore more likely to respond, but requires a lot of network activity to maintain even when nobody is talking in a room.</p>
|
||||
<p><img src="https://user-images.githubusercontent.com/71895/94848963-a47a3580-041c-11eb-8b6e-acb772b4259e.png" alt="Screenshot_2020-10-01_19-29-46" /></p>
|
||||
<p>While synapse does have some performance issues with presence <a href="https://github.com/matrix-org/synapse/issues/3971">#3971</a>, the fundamental problem is that this is an easy feature to implement for a centralised service at nearly no overhead, but federation makes it combinatorial <a href="https://github.com/matrix-org/synapse/issues/8055">#8055</a>. There is also a client-side config option which disables the UI and idle tracking <a href="https://github.com/vector-im/element-web/blob/v1.7.8/config.sample.json#L45">enable_presence_by_hs_url</a> to blacklist the largest instances but I didn't notice much difference, so I recommend disabling the feature entirely at the server level as well.</p>
|
||||
<p>While synapse does have some performance issues with presence <a href="https://github.com/matrix-org/synapse/issues/3971">#3971</a>, the fundamental problem is that this is an easy feature to implement for a centralised service at nearly no overhead, but federation makes it combinatorial <a href="https://github.com/matrix-org/synapse/issues/8055">#8055</a>. There is also a client-side config option which disables the UI and idle tracking <a href="https://github.com/element-hq/element-web/blob/v1.7.8/config.sample.json#L45">enable_presence_by_hs_url</a> to blacklist the largest instances but I didn't notice much difference, so I recommend disabling the feature entirely at the server level as well.</p>
|
||||
<h3 id="joining"><a class="header" href="#joining">Joining</a></h3>
|
||||
<p>Joining a "large", federated room will initially fail with the below message in Element web, but waiting a while (10-60mins) and trying again will succeed without any issue. What counts as "large" is not message history, user count, connections to homeservers or even a simple count of the state events, it is instead how long the state resolution algorithm takes. However, each of those numbers are reasonable proxies, so we can use them as estimates since user count is one of the few things you see before joining.</p>
|
||||
<p><img src="https://user-images.githubusercontent.com/71895/94945781-18771500-04d3-11eb-8419-83c2da73a341.png" alt="Screenshot_2020-10-02_17-15-06" /></p>
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -377,6 +377,15 @@ sudo dnf groupinstall "Development Tools"
|
|||
<p>Some extra dependencies may be needed. You can use Homebrew (https://brew.sh) for them.</p>
|
||||
<p>You may need to install icu, and make the icu binaries and libraries accessible.
|
||||
Please follow <a href="https://pypi.org/project/PyICU/">the official instructions of PyICU</a> to do so.</p>
|
||||
<p>If you're struggling to get icu discovered, and see:</p>
|
||||
<pre><code> RuntimeError:
|
||||
Please install pkg-config on your system or set the ICU_VERSION environment
|
||||
variable to the version of ICU you have installed.
|
||||
</code></pre>
|
||||
<p>despite it being installed and having your <code>PATH</code> updated, you can omit this dependency by
|
||||
not specifying <code>--extras all</code> to <code>poetry</code>. If using postgres, you can install Synapse via
|
||||
<code>poetry install --extras saml2 --extras oidc --extras postgres --extras opentracing --extras redis --extras sentry</code>.
|
||||
ICU is not a hard dependency on getting a working installation.</p>
|
||||
<p>On ARM-based Macs you may also need to install libjpeg and libpq:</p>
|
||||
<pre><code class="language-sh"> brew install jpeg libpq
|
||||
</code></pre>
|
||||
|
|
|
@ -274,8 +274,8 @@ basic installation and got it working.</p>
|
|||
<p>NB: If your TLS certificate was provided by Let's Encrypt, TLS/DTLS will
|
||||
not work with any Matrix client that uses Chromium's WebRTC library. This
|
||||
currently includes Element Android & iOS; for more details, see their
|
||||
<a href="https://github.com/vector-im/element-android/issues/1533">respective</a>
|
||||
<a href="https://github.com/vector-im/element-ios/issues/2712">issues</a> as well as the underlying
|
||||
<a href="https://github.com/element-hq/element-android/issues/1533">respective</a>
|
||||
<a href="https://github.com/element-hq/element-ios/issues/2712">issues</a> as well as the underlying
|
||||
<a href="https://bugs.chromium.org/p/webrtc/issues/detail?id=11710">WebRTC issue</a>.
|
||||
Consider using a ZeroSSL certificate for your TURN server as a working alternative.</p>
|
||||
</li>
|
||||
|
|
|
@ -267,8 +267,8 @@ basic installation and got it working.</p>
|
|||
<p>NB: If your TLS certificate was provided by Let's Encrypt, TLS/DTLS will
|
||||
not work with any Matrix client that uses Chromium's WebRTC library. This
|
||||
currently includes Element Android & iOS; for more details, see their
|
||||
<a href="https://github.com/vector-im/element-android/issues/1533">respective</a>
|
||||
<a href="https://github.com/vector-im/element-ios/issues/2712">issues</a> as well as the underlying
|
||||
<a href="https://github.com/element-hq/element-android/issues/1533">respective</a>
|
||||
<a href="https://github.com/element-hq/element-ios/issues/2712">issues</a> as well as the underlying
|
||||
<a href="https://bugs.chromium.org/p/webrtc/issues/detail?id=11710">WebRTC issue</a>.
|
||||
Consider using a ZeroSSL certificate for your TURN server as a working alternative.</p>
|
||||
</li>
|
||||
|
|
|
@ -266,7 +266,7 @@ v1.61.0.</p>
|
|||
<tr><td>v1.83.0 – v1.84.1</td><td>v1.77.0</td></tr>
|
||||
<tr><td>v1.85.0 – v1.91.2</td><td>v1.83.0</td></tr>
|
||||
<tr><td>v1.92.0 – v1.97.0</td><td>v1.90.0</td></tr>
|
||||
<tr><td>v1.98.0 – v1.100.0</td><td>v1.96.0</td></tr>
|
||||
<tr><td>v1.98.0 – v1.101.0</td><td>v1.96.0</td></tr>
|
||||
</tbody></table>
|
||||
<h1 id="upgrading-to-v11000"><a class="header" href="#upgrading-to-v11000">Upgrading to v1.100.0</a></h1>
|
||||
<h2 id="minimum-supported-rust-version"><a class="header" href="#minimum-supported-rust-version">Minimum supported Rust version</a></h2>
|
||||
|
|
|
@ -54,7 +54,7 @@ function fetchVersions(dropdown, dropdownMenu) {
|
|||
return new Promise((resolve, reject) => {
|
||||
window.addEventListener("load", () => {
|
||||
|
||||
fetch("https://api.github.com/repos/matrix-org/synapse/git/trees/gh-pages", {
|
||||
fetch("https://api.github.com/repos/element-hq/synapse/git/trees/gh-pages", {
|
||||
cache: "force-cache",
|
||||
}).then(res =>
|
||||
res.json()
|
||||
|
@ -124,4 +124,4 @@ function changeVersion(url, newVersion) {
|
|||
parsedURL.pathname = pathSegments.join('/');
|
||||
|
||||
return parsedURL.href;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -711,7 +711,7 @@ worker application type.</p>
|
|||
<h4 id="push-notifications"><a class="header" href="#push-notifications">Push Notifications</a></h4>
|
||||
<p>You can designate generic worker to sending push notifications to
|
||||
a <a href="https://spec.matrix.org/v1.5/push-gateway-api/">push gateway</a> such as
|
||||
<a href="https://github.com/vector-im/sygnal">sygnal</a> and email.</p>
|
||||
<a href="https://github.com/matrix-org/sygnal">sygnal</a> and email.</p>
|
||||
<p>This will stop the main process sending push notifications.</p>
|
||||
<p>The workers responsible for sending push notifications can be defined using the
|
||||
<a href="usage/configuration/config_documentation.html#pusher_instances"><code>pusher_instances</code></a>
|
||||
|
|
Loading…
Add table
Reference in a new issue