1
0
Fork 0
mirror of https://github.com/element-hq/synapse.git synced 2025-03-31 03:45:13 +00:00
This commit is contained in:
erikjohnston 2023-12-13 15:42:43 +00:00
parent 6307f83cc3
commit 2ab69e0816
103 changed files with 380 additions and 409 deletions

View file

@ -125,7 +125,7 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/CAPTCHA_SETUP.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/CAPTCHA_SETUP.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/admin_api/account_validity.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/admin_api/account_validity.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/admin_api/event_reports.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/admin_api/event_reports.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/admin_api/experimental_features.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/admin_api/experimental_features.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/admin_api/media_admin_api.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/admin_api/media_admin_api.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/admin_api/purge_history_api.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/admin_api/purge_history_api.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/admin_api/register_api.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/admin_api/register_api.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/admin_api/room_membership.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/admin_api/room_membership.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/admin_api/rooms.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/admin_api/rooms.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/admin_api/server_notices.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/admin_api/server_notices.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/admin_api/statistics.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/admin_api/statistics.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/admin_api/user_admin_api.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/admin_api/user_admin_api.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/admin_api/version_api.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/admin_api/version_api.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/application_services.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/application_services.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/auth_chain_difference_algorithm.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/auth_chain_difference_algorithm.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/code_style.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/code_style.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/consent_tracking.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/consent_tracking.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>
@ -176,7 +176,7 @@ database and shows a success page.</p>
<p>To enable this, first create templates for the policy and success pages. <p>To enable this, first create templates for the policy and success pages.
These should be stored on the local filesystem.</p> These should be stored on the local filesystem.</p>
<p>These templates use the <a href="http://jinja.pocoo.org">Jinja2</a> templating language, <p>These templates use the <a href="http://jinja.pocoo.org">Jinja2</a> templating language,
and <a href="https://github.com/matrix-org/synapse/tree/develop/docs/privacy_policy_templates/">docs/privacy_policy_templates</a> and <a href="https://github.com/element.-hq/synapse/tree/develop/docs/privacy_policy_templates/">docs/privacy_policy_templates</a>
gives examples of the sort of thing that can be done.</p> gives examples of the sort of thing that can be done.</p>
<p>Note that the templates must be stored under a name giving the language of the <p>Note that the templates must be stored under a name giving the language of the
template - currently this must always be <code>en</code> (for &quot;English&quot;); template - currently this must always be <code>en</code> (for &quot;English&quot;);

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/delegate.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/delegate.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/deprecation_policy.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/deprecation_policy.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/development/cas.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/development/cas.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/development/contributing_guide.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/development/contributing_guide.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>
@ -162,14 +162,15 @@
<h1 id="contributing"><a class="header" href="#contributing">Contributing</a></h1> <h1 id="contributing"><a class="header" href="#contributing">Contributing</a></h1>
<p>This document aims to get you started with contributing to Synapse!</p> <p>This document aims to get you started with contributing to Synapse!</p>
<h1 id="1-who-can-contribute-to-synapse"><a class="header" href="#1-who-can-contribute-to-synapse">1. Who can contribute to Synapse?</a></h1> <h1 id="1-who-can-contribute-to-synapse"><a class="header" href="#1-who-can-contribute-to-synapse">1. Who can contribute to Synapse?</a></h1>
<p>Everyone is welcome to contribute code to <a href="https://github.com/matrix-org">matrix.org <p>Everyone is welcome to contribute code to <a href="https://github.com/element-hq/synapse">Synapse</a>,
projects</a>, provided that they are willing to provided that they are willing to
license their contributions under the same license as the project itself. We license their contributions under the same license as the project itself. We
follow a simple 'inbound=outbound' model for contributions: the act of follow a simple 'inbound=outbound' model for contributions: the act of
submitting an 'inbound' contribution means that the contributor agrees to submitting an 'inbound' contribution means that the contributor agrees to
license the code under the same terms as the project's overall 'outbound' license the code under the same terms as the project's overall 'outbound'
license - in our case, this is almost always Apache Software License v2 (see license - in our case, this is almost always Apache Software License v2 (see
<a href="https://github.com/matrix-org/synapse/blob/develop/LICENSE">LICENSE</a>).</p> <a href="https://github.com/element-hq/synapse/blob/develop/LICENSE">LICENSE</a>).</p>
<p>TODO THIS NEEDS UPDATING</p>
<h1 id="2-what-do-i-need"><a class="header" href="#2-what-do-i-need">2. What do I need?</a></h1> <h1 id="2-what-do-i-need"><a class="header" href="#2-what-do-i-need">2. What do I need?</a></h1>
<p>If you are running Windows, the Windows Subsystem for Linux (WSL) is strongly <p>If you are running Windows, the Windows Subsystem for Linux (WSL) is strongly
recommended for development. More information about WSL can be found at recommended for development. More information about WSL can be found at
@ -222,8 +223,8 @@ cp docs/sample_log_config.yaml log_config.yaml
<ul> <ul>
<li>Set a <code>server_name</code></li> <li>Set a <code>server_name</code></li>
<li>Adjusting paths to be correct for your system like the <code>log_config</code> to point to the log config you just copied</li> <li>Adjusting paths to be correct for your system like the <code>log_config</code> to point to the log config you just copied</li>
<li>Using a <a href="https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#database">PostgreSQL database instead of SQLite</a></li> <li>Using a <a href="https://vector-im.github.io/synapse/latest/usage/configuration/config_documentation.html#database">PostgreSQL database instead of SQLite</a></li>
<li>Adding a <a href="https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#registration_shared_secret"><code>registration_shared_secret</code></a> so you can use <a href="https://matrix-org.github.io/synapse/latest/setup/installation.html#registering-a-user"><code>register_new_matrix_user</code> command</a>.</li> <li>Adding a <a href="https://vector-im.github.io/synapse/latest/usage/configuration/config_documentation.html#registration_shared_secret"><code>registration_shared_secret</code></a> so you can use <a href="https://vector-im.github.io/synapse/latest/setup/installation.html#registering-a-user"><code>register_new_matrix_user</code> command</a>.</li>
</ul> </ul>
<p>And then run Synapse with the following command:</p> <p>And then run Synapse with the following command:</p>
<pre><code class="language-sh">poetry run python -m synapse.app.homeserver -c homeserver.yaml <pre><code class="language-sh">poetry run python -m synapse.app.homeserver -c homeserver.yaml
@ -236,19 +237,19 @@ resolve any issues and re-run until successful.</p>
<h1 id="5-get-in-touch"><a class="header" href="#5-get-in-touch">5. Get in touch.</a></h1> <h1 id="5-get-in-touch"><a class="header" href="#5-get-in-touch">5. Get in touch.</a></h1>
<p>Join our developer community on Matrix: <a href="https://matrix.to/#/#synapse-dev:matrix.org">#synapse-dev:matrix.org</a>!</p> <p>Join our developer community on Matrix: <a href="https://matrix.to/#/#synapse-dev:matrix.org">#synapse-dev:matrix.org</a>!</p>
<h1 id="6-pick-an-issue"><a class="header" href="#6-pick-an-issue">6. Pick an issue.</a></h1> <h1 id="6-pick-an-issue"><a class="header" href="#6-pick-an-issue">6. Pick an issue.</a></h1>
<p>Fix your favorite problem or perhaps find a <a href="https://github.com/matrix-org/synapse/issues?q=is%3Aopen+is%3Aissue+label%3A%22Good+First+Issue%22">Good First Issue</a> <p>Fix your favorite problem or perhaps find a <a href="https://github.com/element-hq/synapse/issues?q=is%3Aopen+is%3Aissue+label%3A%22Good+First+Issue%22">Good First Issue</a>
to work on.</p> to work on.</p>
<h1 id="7-turn-coffee-into-code-and-documentation"><a class="header" href="#7-turn-coffee-into-code-and-documentation">7. Turn coffee into code and documentation!</a></h1> <h1 id="7-turn-coffee-into-code-and-documentation"><a class="header" href="#7-turn-coffee-into-code-and-documentation">7. Turn coffee into code and documentation!</a></h1>
<p>There is a growing amount of documentation located in the <p>There is a growing amount of documentation located in the
<a href="https://github.com/matrix-org/synapse/tree/develop/docs"><code>docs</code></a> <a href="https://github.com/element-hq/synapse/tree/develop/docs"><code>docs</code></a>
directory, with a rendered version <a href="https://matrix-org.github.io/synapse">available online</a>. directory, with a rendered version <a href="https://vector-im.github.io/synapse">available online</a>.
This documentation is intended primarily for sysadmins running their This documentation is intended primarily for sysadmins running their
own Synapse instance, as well as developers interacting externally with own Synapse instance, as well as developers interacting externally with
Synapse. Synapse.
<a href="https://github.com/matrix-org/synapse/tree/develop/docs/development"><code>docs/development</code></a> <a href="https://github.com/element-hq/synapse/tree/develop/docs/development"><code>docs/development</code></a>
exists primarily to house documentation for exists primarily to house documentation for
Synapse developers. Synapse developers.
<a href="https://github.com/matrix-org/synapse/tree/develop/docs/admin_api"><code>docs/admin_api</code></a> houses documentation <a href="https://github.com/element-hq/synapse/tree/develop/docs/admin_api"><code>docs/admin_api</code></a> houses documentation
regarding Synapse's Admin API, which is used mostly by sysadmins and external regarding Synapse's Admin API, which is used mostly by sysadmins and external
service developers.</p> service developers.</p>
<p>Synapse's code style is documented <a href="../code_style.html">here</a>. Please follow <p>Synapse's code style is documented <a href="../code_style.html">here</a>. Please follow
@ -256,12 +257,9 @@ it, including the conventions for <a href="../code_style.html#configuration-code
options and documentation</a>.</p> options and documentation</a>.</p>
<p>We welcome improvements and additions to our documentation itself! When <p>We welcome improvements and additions to our documentation itself! When
writing new pages, please writing new pages, please
<a href="https://github.com/matrix-org/synapse/tree/develop/docs#adding-to-the-documentation">build <code>docs</code> to a book</a> <a href="https://github.com/element-hq/synapse/tree/develop/docs#adding-to-the-documentation">build <code>docs</code> to a book</a>
to check that your contributions render correctly. The docs are written in to check that your contributions render correctly. The docs are written in
<a href="https://guides.github.com/features/mastering-markdown/">GitHub-Flavoured Markdown</a>.</p> <a href="https://guides.github.com/features/mastering-markdown/">GitHub-Flavoured Markdown</a>.</p>
<p>Some documentation also exists in <a href="https://github.com/matrix-org/synapse/wiki">Synapse's GitHub
Wiki</a>, although this is primarily
contributed to by community authors.</p>
<p>When changes are made to any Rust code then you must call either <code>poetry install</code> <p>When changes are made to any Rust code then you must call either <code>poetry install</code>
or <code>maturin develop</code> (if installed) to rebuild the Rust code. Using <a href="https://github.com/PyO3/maturin"><code>maturin</code></a> or <code>maturin develop</code> (if installed) to rebuild the Rust code. Using <a href="https://github.com/PyO3/maturin"><code>maturin</code></a>
is quicker than <code>poetry install</code>, so is recommended when making frequent is quicker than <code>poetry install</code>, so is recommended when making frequent
@ -376,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 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> <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> </ul>
<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> <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>
<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> <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><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. <p>It's often nice to develop on Synapse and write Complement tests at the same time.
@ -398,7 +396,7 @@ Here is how to run your local Synapse checkout against your local Complement che
<li>If setting <code>WORKERS=1</code>, optionally set <code>WORKER_TYPES=</code> to declare which worker <li>If setting <code>WORKERS=1</code>, optionally set <code>WORKER_TYPES=</code> to declare which worker
types you wish to test. A simple comma-delimited string containing the worker types types you wish to test. A simple comma-delimited string containing the worker types
defined from the <code>WORKERS_CONFIG</code> template in defined from the <code>WORKERS_CONFIG</code> template in
<a href="https://github.com/matrix-org/synapse/blob/develop/docker/configure_workers_and_start.py#L54">here</a>. <a href="https://github.com/element-hq/synapse/blob/develop/docker/configure_workers_and_start.py#L54">here</a>.
A safe example would be <code>WORKER_TYPES=&quot;federation_inbound, federation_sender, synchrotron&quot;</code>. A safe example would be <code>WORKER_TYPES=&quot;federation_inbound, federation_sender, synchrotron&quot;</code>.
See the <a href="../workers.html">worker documentation</a> for additional information on workers.</li> See the <a href="../workers.html">worker documentation</a> for additional information on workers.</li>
</ul> </ul>
@ -452,7 +450,7 @@ in the format of <code>PRnumber.type</code>. The type can be one of the followin
<li><code>removal</code> (also used for deprecations)</li> <li><code>removal</code> (also used for deprecations)</li>
<li><code>misc</code> (for internal-only changes)</li> <li><code>misc</code> (for internal-only changes)</li>
</ul> </ul>
<p>This file will become part of our <a href="https://github.com/matrix-org/synapse/blob/master/CHANGES.md">changelog</a> at the next <p>This file will become part of our <a href="https://github.com/element-hq/synapse/blob/master/CHANGES.md">changelog</a> at the next
release, so the content of the file should be a short description of your release, so the content of the file should be a short description of your
change in the same style as the rest of the changelog. The file can contain Markdown change in the same style as the rest of the changelog. The file can contain Markdown
formatting, and must end with a full stop (.) or an exclamation mark (!) for formatting, and must end with a full stop (.) or an exclamation mark (!) for
@ -480,7 +478,7 @@ chicken-and-egg problem.</p>
add the changelog file to your branch, or:</p> add the changelog file to your branch, or:</p>
</li> </li>
<li> <li>
<p>Look at the <a href="https://github.com/matrix-org/synapse/issues?q=">list of all <p>Look at the <a href="https://github.com/element-hq/synapse/issues?q=">list of all
issues/PRs</a>, add one to the issues/PRs</a>, add one to the
highest number you see, and quickly open the PR before somebody else claims highest number you see, and quickly open the PR before somebody else claims
your number.</p> your number.</p>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/development/database_schema.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/development/database_schema.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/development/demo.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/development/demo.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/development/dependencies.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/development/dependencies.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>
@ -216,9 +216,9 @@ phonenumbers = [
] ]
</code></pre> </code></pre>
<p>We can see this pinned version inside the docker image for that release:</p> <p>We can see this pinned version inside the docker image for that release:</p>
<pre><code>$ docker pull matrixdotorg/synapse:v1.57.0 <pre><code>$ docker pull vectorim/synapse:v1.97.0
... ...
$ docker run --entrypoint pip matrixdotorg/synapse:v1.57.0 show phonenumbers $ docker run --entrypoint pip vectorim/synapse:v1.97.0 show phonenumbers
Name: phonenumbers Name: phonenumbers
Version: 8.12.44 Version: 8.12.44
Summary: Python version of Google's common library for parsing, formatting, storing and validating international phone numbers. Summary: Python version of Google's common library for parsing, formatting, storing and validating international phone numbers.

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/development/experimental_features.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/development/experimental_features.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/development/git.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/development/git.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>
@ -168,10 +168,10 @@ before. Here, by way of an arbitrary example, is the top of <code>git log --grap
<p>Note how the commit comment explains clearly what is changing and why. Also <p>Note how the commit comment explains clearly what is changing and why. Also
note the <em>absence</em> of merge commits, as well as the absence of commits called note the <em>absence</em> of merge commits, as well as the absence of commits called
things like (to pick a few culprits): things like (to pick a few culprits):
<a href="https://github.com/matrix-org/synapse/commit/84691da6c">“pep8”</a>, <a href="https://github.com/matrix-org/synapse/commit/474810d9d">“fix broken <a href="https://github.com/element.-hq/synapse/commit/84691da6c">“pep8”</a>, <a href="https://github.com/element.-hq/synapse/commit/474810d9d">“fix broken
test”</a>, test”</a>,
<a href="https://github.com/matrix-org/synapse/commit/c9d72e457">“oops”</a>, <a href="https://github.com/element.-hq/synapse/commit/c9d72e457">“oops”</a>,
<a href="https://github.com/matrix-org/synapse/commit/836358823">“typo”</a>, or <a href="https://github.com/matrix-org/synapse/commit/707374d5d">“Who's <a href="https://github.com/element.-hq/synapse/commit/836358823">“typo”</a>, or <a href="https://github.com/element.-hq/synapse/commit/707374d5d">“Who's
the president?”</a>.</p> the president?”</a>.</p>
<p>There are a number of reasons why keeping a clean commit history is a good <p>There are a number of reasons why keeping a clean commit history is a good
thing:</p> thing:</p>

View file

@ -124,10 +124,10 @@
<a href="../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/development/internal_documentation/README.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/development/internal_documentation/README.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/development/releases.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/development/releases.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/development/reviews.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/development/reviews.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/development/room-dag-concepts.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/development/room-dag-concepts.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/development/saml.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/development/saml.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/development/synapse_architecture/cancellation.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/development/synapse_architecture/cancellation.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/development/synapse_architecture/faster_joins.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/development/synapse_architecture/faster_joins.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/development/synapse_architecture/streams.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/development/synapse_architecture/streams.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>
@ -160,7 +160,7 @@
</div> </div>
<h2 id="streams"><a class="header" href="#streams">Streams</a></h2> <h2 id="streams"><a class="header" href="#streams">Streams</a></h2>
<p>Synapse has a concept of &quot;streams&quot;, which are roughly described in <a href="https://github.com/matrix-org/synapse/blob/develop/synapse/storage/util/id_generators.py"><code>id_generators.py</code></a>. <p>Synapse has a concept of &quot;streams&quot;, which are roughly described in <a href="https://github.com/element.-hq/synapse/blob/develop/synapse/storage/util/id_generators.py"><code>id_generators.py</code></a>.
Generally speaking, streams are a series of notifications that something in Synapse's database has changed that the application might need to respond to. Generally speaking, streams are a series of notifications that something in Synapse's database has changed that the application might need to respond to.
For example:</p> For example:</p>
<ul> <ul>
@ -168,9 +168,9 @@ For example:</p>
<li>The account data stream reports changes to users' <a href="https://spec.matrix.org/v1.7/client-server-api/#client-config">account data</a>.</li> <li>The account data stream reports changes to users' <a href="https://spec.matrix.org/v1.7/client-server-api/#client-config">account data</a>.</li>
<li>The to-device stream reports when a device has a new <a href="https://spec.matrix.org/v1.7/client-server-api/#send-to-device-messaging">to-device message</a>.</li> <li>The to-device stream reports when a device has a new <a href="https://spec.matrix.org/v1.7/client-server-api/#send-to-device-messaging">to-device message</a>.</li>
</ul> </ul>
<p>See <a href="https://github.com/matrix-org/synapse/blob/develop/synapse/replication/tcp/streams/__init__.py"><code>synapse.replication.tcp.streams</code></a> for the full list of streams.</p> <p>See <a href="https://github.com/element.-hq/synapse/blob/develop/synapse/replication/tcp/streams/__init__.py"><code>synapse.replication.tcp.streams</code></a> for the full list of streams.</p>
<p>It is very helpful to understand the streams mechanism when working on any part of Synapse that needs to respond to changes—especially if those changes are made by different workers. <p>It is very helpful to understand the streams mechanism when working on any part of Synapse that needs to respond to changes—especially if those changes are made by different workers.
To that end, let's describe streams formally, paraphrasing from the docstring of <a href="https://github.com/matrix-org/synapse/blob/a719b703d9bd0dade2565ddcad0e2f3a7a9d4c37/synapse/storage/util/id_generators.py#L96"><code>AbstractStreamIdGenerator</code></a>.</p> To that end, let's describe streams formally, paraphrasing from the docstring of <a href="https://github.com/element.-hq/synapse/blob/a719b703d9bd0dade2565ddcad0e2f3a7a9d4c37/synapse/storage/util/id_generators.py#L96"><code>AbstractStreamIdGenerator</code></a>.</p>
<h3 id="definition"><a class="header" href="#definition">Definition</a></h3> <h3 id="definition"><a class="header" href="#definition">Definition</a></h3>
<p>A stream is an append-only log <code>T1, T2, ..., Tn, ...</code> of facts<sup class="footnote-reference"><a href="#1">1</a></sup> which grows over time. <p>A stream is an append-only log <code>T1, T2, ..., Tn, ...</code> of facts<sup class="footnote-reference"><a href="#1">1</a></sup> which grows over time.
Only &quot;writers&quot; can add facts to a stream, and there may be multiple writers.</p> Only &quot;writers&quot; can add facts to a stream, and there may be multiple writers.</p>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/federate.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/federate.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/welcome_and_overview.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/welcome_and_overview.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>
@ -160,9 +160,8 @@
</div> </div>
<h1 id="introduction"><a class="header" href="#introduction">Introduction</a></h1> <h1 id="introduction"><a class="header" href="#introduction">Introduction</a></h1>
<p>Welcome to the documentation repository for Synapse, a <p>Welcome to the documentation repository for Synapse, a
<a href="https://matrix.org">Matrix</a> homeserver implementation developed by the matrix.org core <a href="https://matrix.org">Matrix</a> homeserver implementation developed by Element.</p>
team.</p>
<h2 id="installing-and-using-synapse"><a class="header" href="#installing-and-using-synapse">Installing and using Synapse</a></h2> <h2 id="installing-and-using-synapse"><a class="header" href="#installing-and-using-synapse">Installing and using Synapse</a></h2>
<p>This documentation covers topics for <strong>installation</strong>, <strong>configuration</strong> and <p>This documentation covers topics for <strong>installation</strong>, <strong>configuration</strong> and
<strong>maintenance</strong> of your Synapse process:</p> <strong>maintenance</strong> of your Synapse process:</p>
@ -201,7 +200,7 @@ following documentation:</p>
<li> <li>
<p>Read the <a href="development/contributing_guide.html">Contributing Guide</a>. It is meant <p>Read the <a href="development/contributing_guide.html">Contributing Guide</a>. It is meant
to walk new contributors through the process of developing and submitting a to walk new contributors through the process of developing and submitting a
change to the Synapse codebase (which is <a href="https://github.com/matrix-org/synapse">hosted on change to the Synapse codebase (which is <a href="https://github.com/element.-hq/synapse">hosted on
GitHub</a>).</p> GitHub</a>).</p>
</li> </li>
<li> <li>
@ -211,9 +210,9 @@ how to <a href="development/contributing_guide.html#run-the-linters">lint</a> an
<a href="development/contributing_guide.html#8-test-test-test">test</a> your code.</p> <a href="development/contributing_guide.html#8-test-test-test">test</a> your code.</p>
</li> </li>
<li> <li>
<p>Look at <a href="https://github.com/matrix-org/synapse/issues">the issue tracker</a> for <p>Look at <a href="https://github.com/element.-hq/synapse/issues">the issue tracker</a> for
bugs to fix or features to add. If you're new, it may be best to start with bugs to fix or features to add. If you're new, it may be best to start with
those labeled <a href="https://github.com/matrix-org/synapse/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22">good first those labeled <a href="https://github.com/element.-hq/synapse/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22">good first
issue</a>.</p> issue</a>.</p>
</li> </li>
<li> <li>
@ -229,17 +228,9 @@ do so!</p>
</li> </li>
<li> <li>
<p>And finally, contribute to this documentation! The source for which is <p>And finally, contribute to this documentation! The source for which is
<a href="https://github.com/matrix-org/synapse/tree/develop/docs">located here</a>.</p> <a href="https://github.com/element.-hq/synapse/tree/develop/docs">located here</a>.</p>
</li> </li>
</ul> </ul>
<h2 id="donating-to-synapse-development"><a class="header" href="#donating-to-synapse-development">Donating to Synapse development</a></h2>
<p>Want to help keep Synapse going but don't know how to code? Synapse is a
<a href="https://matrix.org">Matrix.org Foundation</a> project. Consider becoming a
supporter on <a href="https://liberapay.com/matrixdotorg">Liberapay</a>,
<a href="https://patreon.com/matrixdotorg">Patreon</a> or through
<a href="https://paypal.me/matrixdotorg">PayPal</a> via a one-time donation.</p>
<p>If you are an organisation or enterprise and would like to sponsor development,
reach out to us over email at: support (at) matrix.org</p>
<h2 id="reporting-a-security-vulnerability"><a class="header" href="#reporting-a-security-vulnerability">Reporting a security vulnerability</a></h2> <h2 id="reporting-a-security-vulnerability"><a class="header" href="#reporting-a-security-vulnerability">Reporting a security vulnerability</a></h2>
<p>If you've found a security issue in Synapse or any other Matrix.org Foundation <p>If you've found a security issue in Synapse or any other Matrix.org Foundation
project, please report it to us in accordance with our <a href="https://www.matrix.org/security-disclosure-policy/">Security Disclosure project, please report it to us in accordance with our <a href="https://www.matrix.org/security-disclosure-policy/">Security Disclosure

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/jwt.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/jwt.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/log_contexts.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/log_contexts.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/manhole.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/manhole.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>
@ -186,7 +186,7 @@ ensures that access to the <code>manhole</code> is only possible for local users
--mount type=volume,src=synapse-data,dst=/data \ --mount type=volume,src=synapse-data,dst=/data \
-p 8008:8008 \ -p 8008:8008 \
-p 127.0.0.1:9000:9000 \ -p 127.0.0.1:9000:9000 \
matrixdotorg/synapse:latest vectorim/synapse:latest
</code></pre> </code></pre>
<h4 id="native-config"><a class="header" href="#native-config">Native config</a></h4> <h4 id="native-config"><a class="header" href="#native-config">Native config</a></h4>
<p>If you are not using docker, set <code>bind_addresses</code> to <code>['::1', '127.0.0.1']</code> as shown. <p>If you are not using docker, set <code>bind_addresses</code> to <code>['::1', '127.0.0.1']</code> as shown.

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/media_repository.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/media_repository.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/message_retention_policies.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/message_retention_policies.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/metrics-howto.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/metrics-howto.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>
@ -239,8 +239,8 @@ the listener port configured with the <code>metrics</code> resource.</p>
<p>Restart Prometheus.</p> <p>Restart Prometheus.</p>
</li> </li>
<li> <li>
<p>Consider using the <a href="https://github.com/matrix-org/synapse/tree/master/contrib/grafana/">grafana dashboard</a> <p>Consider using the <a href="https://github.com/element.-hq/synapse/tree/master/contrib/grafana/">grafana dashboard</a>
and required <a href="https://github.com/matrix-org/synapse/tree/master/contrib/prometheus/">recording rules</a> </p> and required <a href="https://github.com/element.-hq/synapse/tree/master/contrib/prometheus/">recording rules</a></p>
</li> </li>
</ol> </ol>
<h2 id="monitoring-workers"><a class="header" href="#monitoring-workers">Monitoring workers</a></h2> <h2 id="monitoring-workers"><a class="header" href="#monitoring-workers">Monitoring workers</a></h2>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/modules/account_data_callbacks.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/modules/account_data_callbacks.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/modules/account_validity_callbacks.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/modules/account_validity_callbacks.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/modules/add_extra_fields_to_client_events_unsigned.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/modules/add_extra_fields_to_client_events_unsigned.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/modules/background_update_controller_callbacks.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/modules/background_update_controller_callbacks.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/modules/index.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/modules/index.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/modules/password_auth_provider_callbacks.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/modules/password_auth_provider_callbacks.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/modules/porting_legacy_module.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/modules/porting_legacy_module.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/modules/presence_router_callbacks.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/modules/presence_router_callbacks.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/modules/spam_checker_callbacks.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/modules/spam_checker_callbacks.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/modules/third_party_rules_callbacks.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/modules/third_party_rules_callbacks.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/modules/writing_a_module.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/modules/writing_a_module.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>
@ -168,7 +168,7 @@ the <code>synapse.module_api.ModuleApi</code> class. The configuration is a dict
either the output of the module's <code>parse_config</code> static method (see below), or the either the output of the module's <code>parse_config</code> static method (see below), or the
configuration associated with the module in Synapse's configuration file.</p> configuration associated with the module in Synapse's configuration file.</p>
<p>See the documentation for the <code>ModuleApi</code> class <p>See the documentation for the <code>ModuleApi</code> class
<a href="https://github.com/matrix-org/synapse/blob/master/synapse/module_api/__init__.py">here</a>.</p> <a href="https://github.com/element.-hq/synapse/blob/master/synapse/module_api/__init__.py">here</a>.</p>
<h2 id="when-synapse-runs-with-several-modules-configured"><a class="header" href="#when-synapse-runs-with-several-modules-configured">When Synapse runs with several modules configured</a></h2> <h2 id="when-synapse-runs-with-several-modules-configured"><a class="header" href="#when-synapse-runs-with-several-modules-configured">When Synapse runs with several modules configured</a></h2>
<p>If Synapse is running with other modules configured, the order each module appears in <p>If Synapse is running with other modules configured, the order each module appears in
within the <code>modules</code> section of the Synapse configuration file might restrict what it can within the <code>modules</code> section of the Synapse configuration file might restrict what it can
@ -239,7 +239,7 @@ from synapse.module_api import cached, ModuleApi
class MyModule: class MyModule:
def __init__(self, config: Any, api: ModuleApi): def __init__(self, config: Any, api: ModuleApi):
self.api = api self.api = api
# Register the cached function so Synapse knows how to correctly invalidate # Register the cached function so Synapse knows how to correctly invalidate
# entries for it. # entries for it.
self.api.register_cached_function(self.get_user_from_id) self.api.register_cached_function(self.get_user_from_id)
@ -254,15 +254,15 @@ class MyModule:
async def do_something_with_users(self) -&gt; None: async def do_something_with_users(self) -&gt; None:
&quot;&quot;&quot;Calls the cached function and then invalidates an entry in its cache.&quot;&quot;&quot; &quot;&quot;&quot;Calls the cached function and then invalidates an entry in its cache.&quot;&quot;&quot;
user_id = &quot;@alice:example.com&quot; user_id = &quot;@alice:example.com&quot;
# Get the user. Since get_department_for_user is wrapped with a cache, # Get the user. Since get_department_for_user is wrapped with a cache,
# the return value for this user_id will be cached. # the return value for this user_id will be cached.
department = await self.get_department_for_user(user_id) department = await self.get_department_for_user(user_id)
# Do something with `department`... # Do something with `department`...
# Let's say something has changed with our user, and the entry we have for # Let's say something has changed with our user, and the entry we have for
# them in the cache is out of date, so we want to invalidate it. # them in the cache is out of date, so we want to invalidate it.
await self.api.invalidate_cache(self.get_department_for_user, (user_id,)) await self.api.invalidate_cache(self.get_department_for_user, (user_id,))

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/openid.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/openid.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/opentracing.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/opentracing.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/other/running_synapse_on_single_board_computers.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/other/running_synapse_on_single_board_computers.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/password_auth_providers.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/password_auth_providers.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/postgres.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/postgres.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -125,7 +125,7 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
</div> </div>
@ -158,9 +158,8 @@
</div> </div>
<div style="break-before: page; page-break-before: always;"></div><h1 id="introduction"><a class="header" href="#introduction">Introduction</a></h1> <div style="break-before: page; page-break-before: always;"></div><h1 id="introduction"><a class="header" href="#introduction">Introduction</a></h1>
<p>Welcome to the documentation repository for Synapse, a <p>Welcome to the documentation repository for Synapse, a
<a href="https://matrix.org">Matrix</a> homeserver implementation developed by the matrix.org core <a href="https://matrix.org">Matrix</a> homeserver implementation developed by Element.</p>
team.</p>
<h2 id="installing-and-using-synapse"><a class="header" href="#installing-and-using-synapse">Installing and using Synapse</a></h2> <h2 id="installing-and-using-synapse"><a class="header" href="#installing-and-using-synapse">Installing and using Synapse</a></h2>
<p>This documentation covers topics for <strong>installation</strong>, <strong>configuration</strong> and <p>This documentation covers topics for <strong>installation</strong>, <strong>configuration</strong> and
<strong>maintenance</strong> of your Synapse process:</p> <strong>maintenance</strong> of your Synapse process:</p>
@ -199,7 +198,7 @@ following documentation:</p>
<li> <li>
<p>Read the <a href="development/contributing_guide.html">Contributing Guide</a>. It is meant <p>Read the <a href="development/contributing_guide.html">Contributing Guide</a>. It is meant
to walk new contributors through the process of developing and submitting a to walk new contributors through the process of developing and submitting a
change to the Synapse codebase (which is <a href="https://github.com/matrix-org/synapse">hosted on change to the Synapse codebase (which is <a href="https://github.com/element.-hq/synapse">hosted on
GitHub</a>).</p> GitHub</a>).</p>
</li> </li>
<li> <li>
@ -209,9 +208,9 @@ how to <a href="development/contributing_guide.html#run-the-linters">lint</a> an
<a href="development/contributing_guide.html#8-test-test-test">test</a> your code.</p> <a href="development/contributing_guide.html#8-test-test-test">test</a> your code.</p>
</li> </li>
<li> <li>
<p>Look at <a href="https://github.com/matrix-org/synapse/issues">the issue tracker</a> for <p>Look at <a href="https://github.com/element.-hq/synapse/issues">the issue tracker</a> for
bugs to fix or features to add. If you're new, it may be best to start with bugs to fix or features to add. If you're new, it may be best to start with
those labeled <a href="https://github.com/matrix-org/synapse/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22">good first those labeled <a href="https://github.com/element.-hq/synapse/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22">good first
issue</a>.</p> issue</a>.</p>
</li> </li>
<li> <li>
@ -227,17 +226,9 @@ do so!</p>
</li> </li>
<li> <li>
<p>And finally, contribute to this documentation! The source for which is <p>And finally, contribute to this documentation! The source for which is
<a href="https://github.com/matrix-org/synapse/tree/develop/docs">located here</a>.</p> <a href="https://github.com/element.-hq/synapse/tree/develop/docs">located here</a>.</p>
</li> </li>
</ul> </ul>
<h2 id="donating-to-synapse-development"><a class="header" href="#donating-to-synapse-development">Donating to Synapse development</a></h2>
<p>Want to help keep Synapse going but don't know how to code? Synapse is a
<a href="https://matrix.org">Matrix.org Foundation</a> project. Consider becoming a
supporter on <a href="https://liberapay.com/matrixdotorg">Liberapay</a>,
<a href="https://patreon.com/matrixdotorg">Patreon</a> or through
<a href="https://paypal.me/matrixdotorg">PayPal</a> via a one-time donation.</p>
<p>If you are an organisation or enterprise and would like to sponsor development,
reach out to us over email at: support (at) matrix.org</p>
<h2 id="reporting-a-security-vulnerability"><a class="header" href="#reporting-a-security-vulnerability">Reporting a security vulnerability</a></h2> <h2 id="reporting-a-security-vulnerability"><a class="header" href="#reporting-a-security-vulnerability">Reporting a security vulnerability</a></h2>
<p>If you've found a security issue in Synapse or any other Matrix.org Foundation <p>If you've found a security issue in Synapse or any other Matrix.org Foundation
project, please report it to us in accordance with our <a href="https://www.matrix.org/security-disclosure-policy/">Security Disclosure project, please report it to us in accordance with our <a href="https://www.matrix.org/security-disclosure-policy/">Security Disclosure
@ -261,9 +252,9 @@ that your email address is probably <code>user@example.com</code> rather than
for most users.</p> for most users.</p>
<h4 id="docker-images-and-ansible-playbooks"><a class="header" href="#docker-images-and-ansible-playbooks">Docker images and Ansible playbooks</a></h4> <h4 id="docker-images-and-ansible-playbooks"><a class="header" href="#docker-images-and-ansible-playbooks">Docker images and Ansible playbooks</a></h4>
<p>There is an official synapse image available at <p>There is an official synapse image available at
<a href="https://hub.docker.com/r/matrixdotorg/synapse">https://hub.docker.com/r/matrixdotorg/synapse</a> or at <a href="https://ghcr.io/matrix-org/synapse"><code>ghcr.io/matrix-org/synapse</code></a> <a href="https://hub.docker.com/r/vectorim/synapse">https://hub.docker.com/r/vectorim/synapse</a> or at <a href="https://ghcr.io/element-hq/synapse"><code>ghcr.io/element-hq/synapse</code></a>
which can be used with the docker-compose file available at which can be used with the docker-compose file available at
<a href="https://github.com/matrix-org/synapse/tree/develop/contrib/docker">contrib/docker</a>. <a href="https://github.com/element-hq/synapse/tree/develop/contrib/docker">contrib/docker</a>.
Further information on this including configuration options is available in the README Further information on this including configuration options is available in the README
on hub.docker.com.</p> on hub.docker.com.</p>
<p>Alternatively, Andreas Peters (previously Silvio Fricke) has contributed a <p>Alternatively, Andreas Peters (previously Silvio Fricke) has contributed a
@ -280,6 +271,7 @@ For more details, see
<p>Matrix.org provides Debian/Ubuntu packages of Synapse, for the amd64 <p>Matrix.org provides Debian/Ubuntu packages of Synapse, for the amd64
architecture via <a href="https://packages.matrix.org/debian/">https://packages.matrix.org/debian/</a>.</p> architecture via <a href="https://packages.matrix.org/debian/">https://packages.matrix.org/debian/</a>.</p>
<p>To install the latest release:</p> <p>To install the latest release:</p>
<p>TODO UPDATE ALL THIS</p>
<pre><code class="language-sh">sudo apt install -y lsb-release wget apt-transport-https <pre><code class="language-sh">sudo apt install -y lsb-release wget apt-transport-https
sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
echo &quot;deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main&quot; | echo &quot;deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main&quot; |
@ -546,11 +538,11 @@ TLS-enabled listener like so:</li>
<ul> <ul>
<li> <li>
<p>You will also need to add the options <code>tls_certificate_path</code> and <p>You will also need to add the options <code>tls_certificate_path</code> and
<code>tls_private_key_path</code>. to your configuration file. You will need to manage provisioning of <code>tls_private_key_path</code>. to your configuration file. You will need to manage provisioning of
these certificates yourself.</p> these certificates yourself.</p>
</li> </li>
<li> <li>
<p>You can find more information about these options as well as how to configure synapse in the <p>You can find more information about these options as well as how to configure synapse in the
<a href="setup/../usage/configuration/config_documentation.html">configuration manual</a>.</p> <a href="setup/../usage/configuration/config_documentation.html">configuration manual</a>.</p>
<p>If you are using your own certificate, be sure to use a <code>.pem</code> file that <p>If you are using your own certificate, be sure to use a <code>.pem</code> file that
includes the full certificate chain including any intermediate certificates includes the full certificate chain including any intermediate certificates
@ -1832,12 +1824,12 @@ date.</p>
<h1 id="upgrading-to-v1900"><a class="header" href="#upgrading-to-v1900">Upgrading to v1.90.0</a></h1> <h1 id="upgrading-to-v1900"><a class="header" href="#upgrading-to-v1900">Upgrading to v1.90.0</a></h1>
<h2 id="app-service-query-parameter-authorization-is-now-a-configuration-option"><a class="header" href="#app-service-query-parameter-authorization-is-now-a-configuration-option">App service query parameter authorization is now a configuration option</a></h2> <h2 id="app-service-query-parameter-authorization-is-now-a-configuration-option"><a class="header" href="#app-service-query-parameter-authorization-is-now-a-configuration-option">App service query parameter authorization is now a configuration option</a></h2>
<p>Synapse v1.81.0 deprecated application service authorization via query parameters as this is <p>Synapse v1.81.0 deprecated application service authorization via query parameters as this is
considered insecure - and from Synapse v1.71.0 forwards the application service token has also been sent via considered insecure - and from Synapse v1.71.0 forwards the application service token has also been sent via
<a href="https://spec.matrix.org/v1.6/application-service-api/#authorization">the <code>Authorization</code> header</a>], making the insecure <a href="https://spec.matrix.org/v1.6/application-service-api/#authorization">the <code>Authorization</code> header</a>], making the insecure
query parameter authorization redundant. Since removing the ability to continue to use query parameters could break query parameter authorization redundant. Since removing the ability to continue to use query parameters could break
backwards compatibility it has now been put behind a configuration option, <code>use_appservice_legacy_authorization</code>.<br /> backwards compatibility it has now been put behind a configuration option, <code>use_appservice_legacy_authorization</code>.
This option defaults to false, but can be activated by adding </p> This option defaults to false, but can be activated by adding</p>
<pre><code class="language-yaml">use_appservice_legacy_authorization: true <pre><code class="language-yaml">use_appservice_legacy_authorization: true
</code></pre> </code></pre>
<p>to your configuration.</p> <p>to your configuration.</p>
<h1 id="upgrading-to-v1890"><a class="header" href="#upgrading-to-v1890">Upgrading to v1.89.0</a></h1> <h1 id="upgrading-to-v1890"><a class="header" href="#upgrading-to-v1890">Upgrading to v1.89.0</a></h1>
@ -1945,7 +1937,7 @@ worker_listeners:
worker_log_config: /etc/matrix-synapse/generic-worker-log.yaml worker_log_config: /etc/matrix-synapse/generic-worker-log.yaml
</code></pre> </code></pre>
<p>Notes: </p> <p>Notes:</p>
<ul> <ul>
<li><code>tls</code> is optional but mirrors the functionality of <code>worker_replication_http_tls</code></li> <li><code>tls</code> is optional but mirrors the functionality of <code>worker_replication_http_tls</code></li>
</ul> </ul>
@ -2008,8 +2000,8 @@ and vice versa.</p>
<p>Once all workers are upgraded to v1.76 (or downgraded to v1.75), account data <p>Once all workers are upgraded to v1.76 (or downgraded to v1.75), account data
and device replication will resume as normal.</p> and device replication will resume as normal.</p>
<h2 id="minimum-version-of-poetry-is-now-132"><a class="header" href="#minimum-version-of-poetry-is-now-132">Minimum version of Poetry is now 1.3.2</a></h2> <h2 id="minimum-version-of-poetry-is-now-132"><a class="header" href="#minimum-version-of-poetry-is-now-132">Minimum version of Poetry is now 1.3.2</a></h2>
<p>The minimum supported version of Poetry is now 1.3.2 (previously 1.2.0, <a href="upgrade.html#upgrading-to-v1670">since <p>The minimum supported version of Poetry is now 1.3.2 (previously 1.2.0, <a href="upgrade.html#upgrading-to-v1670">since
Synapse 1.67</a>). If you have used <code>poetry install</code> to Synapse 1.67</a>). If you have used <code>poetry install</code> to
install Synapse from a source checkout, you should upgrade poetry: see its install Synapse from a source checkout, you should upgrade poetry: see its
<a href="https://python-poetry.org/docs/#installation">installation instructions</a>. <a href="https://python-poetry.org/docs/#installation">installation instructions</a>.
For all other installation methods, no acction is required.</p> For all other installation methods, no acction is required.</p>
@ -2511,7 +2503,7 @@ becomes stable.</p>
<p>As announced with the release of <a href="upgrade.html#deprecation-of-the-user_may_create_room_with_invites-module-callback">Synapse 1.47.0</a>, <p>As announced with the release of <a href="upgrade.html#deprecation-of-the-user_may_create_room_with_invites-module-callback">Synapse 1.47.0</a>,
the deprecated <code>user_may_create_room_with_invites</code> module callback has been removed.</p> the deprecated <code>user_may_create_room_with_invites</code> module callback has been removed.</p>
<p>Modules relying on it can instead implement <a href="https://matrix-org.github.io/synapse/latest/modules/spam_checker_callbacks.html#user_may_invite"><code>user_may_invite</code></a> <p>Modules relying on it can instead implement <a href="https://matrix-org.github.io/synapse/latest/modules/spam_checker_callbacks.html#user_may_invite"><code>user_may_invite</code></a>
and use the <a href="https://github.com/matrix-org/synapse/blob/872f23b95fa980a61b0866c1475e84491991fa20/synapse/module_api/__init__.py#L869-L876"><code>get_room_state</code></a> and use the <a href="https://github.com/element.-hq/synapse/blob/872f23b95fa980a61b0866c1475e84491991fa20/synapse/module_api/__init__.py#L869-L876"><code>get_room_state</code></a>
module API to infer whether the invite is happening while creating a room (see <a href="https://github.com/matrix-org/synapse-domain-rule-checker/blob/e7d092dd9f2a7f844928771dbfd9fd24c2332e48/synapse_domain_rule_checker/__init__.py#L56-L89">this function</a> module API to infer whether the invite is happening while creating a room (see <a href="https://github.com/matrix-org/synapse-domain-rule-checker/blob/e7d092dd9f2a7f844928771dbfd9fd24c2332e48/synapse_domain_rule_checker/__init__.py#L56-L89">this function</a>
as an example). Alternately, modules can also implement <a href="https://matrix-org.github.io/synapse/latest/modules/third_party_rules_callbacks.html#on_create_room"><code>on_create_room</code></a>.</p> as an example). Alternately, modules can also implement <a href="https://matrix-org.github.io/synapse/latest/modules/third_party_rules_callbacks.html#on_create_room"><code>on_create_room</code></a>.</p>
<h1 id="upgrading-to-v1520"><a class="header" href="#upgrading-to-v1520">Upgrading to v1.52.0</a></h1> <h1 id="upgrading-to-v1520"><a class="header" href="#upgrading-to-v1520">Upgrading to v1.52.0</a></h1>
@ -2548,7 +2540,7 @@ longer supported upstream.</p>
<p>The <code>user_may_create_room_with_invites</code> is deprecated and will be removed in a future <p>The <code>user_may_create_room_with_invites</code> is deprecated and will be removed in a future
version of Synapse. Modules implementing this callback can instead implement version of Synapse. Modules implementing this callback can instead implement
<a href="https://matrix-org.github.io/synapse/latest/modules/spam_checker_callbacks.html#user_may_invite"><code>user_may_invite</code></a> <a href="https://matrix-org.github.io/synapse/latest/modules/spam_checker_callbacks.html#user_may_invite"><code>user_may_invite</code></a>
and use the <a href="https://github.com/matrix-org/synapse/blob/872f23b95fa980a61b0866c1475e84491991fa20/synapse/module_api/__init__.py#L869-L876"><code>get_room_state</code></a> and use the <a href="https://github.com/element.-hq/synapse/blob/872f23b95fa980a61b0866c1475e84491991fa20/synapse/module_api/__init__.py#L869-L876"><code>get_room_state</code></a>
module API method to infer whether the invite is happening in the context of creating a module API method to infer whether the invite is happening in the context of creating a
room.</p> room.</p>
<p>We plan to remove this callback in January 2022.</p> <p>We plan to remove this callback in January 2022.</p>
@ -2581,8 +2573,8 @@ federation requests.</p>
<a href="https://matrix-org.github.io/synapse/latest/admin_api/rooms.html#delete-room-api">Delete Room API</a>.</p> <a href="https://matrix-org.github.io/synapse/latest/admin_api/rooms.html#delete-room-api">Delete Room API</a>.</p>
<h2 id="user-interactive-authentication-fallback-templates-can-now-display-errors"><a class="header" href="#user-interactive-authentication-fallback-templates-can-now-display-errors">User-interactive authentication fallback templates can now display errors</a></h2> <h2 id="user-interactive-authentication-fallback-templates-can-now-display-errors"><a class="header" href="#user-interactive-authentication-fallback-templates-can-now-display-errors">User-interactive authentication fallback templates can now display errors</a></h2>
<p>This may affect you if you make use of custom HTML templates for the <p>This may affect you if you make use of custom HTML templates for the
<a href="https://github.com/matrix-org/synapse/tree/develop/synapse/res/templates/recaptcha.html">reCAPTCHA (<code>synapse/res/templates/recaptcha.html</code>)</a> or <a href="https://github.com/element.-hq/synapse/tree/develop/synapse/res/templates/recaptcha.html">reCAPTCHA (<code>synapse/res/templates/recaptcha.html</code>)</a> or
<a href="https://github.com/matrix-org/synapse/tree/develop/synapse/res/templates/terms.html">terms (<code>synapse/res/templates/terms.html</code>)</a> fallback pages.</p> <a href="https://github.com/element.-hq/synapse/tree/develop/synapse/res/templates/terms.html">terms (<code>synapse/res/templates/terms.html</code>)</a> fallback pages.</p>
<p>The template is now provided an <code>error</code> variable if the authentication <p>The template is now provided an <code>error</code> variable if the authentication
process failed. See the default templates linked above for an example.</p> process failed. See the default templates linked above for an example.</p>
<h2 id="removal-of-out-of-date-email-pushers"><a class="header" href="#removal-of-out-of-date-email-pushers">Removal of out-of-date email pushers</a></h2> <h2 id="removal-of-out-of-date-email-pushers"><a class="header" href="#removal-of-out-of-date-email-pushers">Removal of out-of-date email pushers</a></h2>
@ -2966,7 +2958,7 @@ endpoint can be handled</p>
update your reverse proxy configuration to reflect this change.</p> update your reverse proxy configuration to reflect this change.</p>
<h2 id="new-html-templates"><a class="header" href="#new-html-templates">New HTML templates</a></h2> <h2 id="new-html-templates"><a class="header" href="#new-html-templates">New HTML templates</a></h2>
<p>A new HTML template, <p>A new HTML template,
<a href="https://github.com/matrix-org/synapse/blob/develop/synapse/res/templates/password_reset_confirmation.html">password_reset_confirmation.html</a>, <a href="https://github.com/element.-hq/synapse/blob/develop/synapse/res/templates/password_reset_confirmation.html">password_reset_confirmation.html</a>,
has been added to the <code>synapse/res/templates</code> directory. If you are has been added to the <code>synapse/res/templates</code> directory. If you are
using a custom template directory, you may want to copy the template using a custom template directory, you may want to copy the template
over and modify it.</p> over and modify it.</p>
@ -3046,7 +3038,7 @@ INSERT INTO background_updates (update_name, progress_json, depends_on) VALUES
is configured to use SSO and a custom is configured to use SSO and a custom
<code>sso_redirect_confirm_template_dir</code> configuration then these templates <code>sso_redirect_confirm_template_dir</code> configuration then these templates
will need to be copied from will need to be copied from
<a href="https://github.com/matrix-org/synapse/tree/develop/synapse/res/templates"><code>synapse/res/templates</code></a> into that directory.</p> <a href="https://github.com/element.-hq/synapse/tree/develop/synapse/res/templates"><code>synapse/res/templates</code></a> into that directory.</p>
<h2 id="synapse-sso-plugins-method-deprecation"><a class="header" href="#synapse-sso-plugins-method-deprecation">Synapse SSO Plugins Method Deprecation</a></h2> <h2 id="synapse-sso-plugins-method-deprecation"><a class="header" href="#synapse-sso-plugins-method-deprecation">Synapse SSO Plugins Method Deprecation</a></h2>
<p>Plugins using the <code>complete_sso_login</code> method of <p>Plugins using the <code>complete_sso_login</code> method of
<code>synapse.module_api.ModuleApi</code> should update to using the async/await <code>synapse.module_api.ModuleApi</code> should update to using the async/await
@ -3177,7 +3169,7 @@ included.</p>
<p>Synapse will expect these files to exist inside the configured template <p>Synapse will expect these files to exist inside the configured template
directory, and <strong>will fail to start</strong> if they are absent. To view the directory, and <strong>will fail to start</strong> if they are absent. To view the
default templates, see default templates, see
<a href="https://github.com/matrix-org/synapse/tree/master/synapse/res/templates">synapse/res/templates</a>.</p> <a href="https://github.com/element.-hq/synapse/tree/master/synapse/res/templates">synapse/res/templates</a>.</p>
<h2 id="3pid-verification-changes"><a class="header" href="#3pid-verification-changes">3pid verification changes</a></h2> <h2 id="3pid-verification-changes"><a class="header" href="#3pid-verification-changes">3pid verification changes</a></h2>
<p><strong>Note: As of this release, users will be unable to add phone numbers or <p><strong>Note: As of this release, users will be unable to add phone numbers or
email addresses to their accounts, without changes to the Synapse email addresses to their accounts, without changes to the Synapse
@ -4941,7 +4933,7 @@ caches:
</code></pre> </code></pre>
<p>If you are running multiple workers, you must individually update the worker <p>If you are running multiple workers, you must individually update the worker
config file and send this signal to each worker process.</p> config file and send this signal to each worker process.</p>
<p>If you're using the <a href="https://github.com/matrix-org/synapse/blob/develop/contrib/systemd/matrix-synapse.service">example systemd service</a> <p>If you're using the <a href="https://github.com/element.-hq/synapse/blob/develop/contrib/systemd/matrix-synapse.service">example systemd service</a>
file in Synapse's <code>contrib</code> directory, you can send a <code>SIGHUP</code> signal by using file in Synapse's <code>contrib</code> directory, you can send a <code>SIGHUP</code> signal by using
<code>systemctl reload matrix-synapse</code>.</p> <code>systemctl reload matrix-synapse</code>.</p>
<hr /> <hr />
@ -6019,7 +6011,7 @@ Defaults to false.</p>
<hr /> <hr />
<h3 id="sentry"><a class="header" href="#sentry"><code>sentry</code></a></h3> <h3 id="sentry"><a class="header" href="#sentry"><code>sentry</code></a></h3>
<p>Use this option to enable sentry integration. Provide the DSN assigned to you by sentry <p>Use this option to enable sentry integration. Provide the DSN assigned to you by sentry
with the <code>dsn</code> setting. </p> with the <code>dsn</code> setting.</p>
<p>An optional <code>environment</code> field can be used to specify an environment. This allows <p>An optional <code>environment</code> field can be used to specify an environment. This allows
for log maintenance based on different environments, ensuring better organization for log maintenance based on different environments, ensuring better organization
and analysis..</p> and analysis..</p>
@ -7831,7 +7823,7 @@ remote endpoint at 10.1.2.3:9999.</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="templates"><a class="header" href="#templates">Templates</a></h1> <div style="break-before: page; page-break-before: always;"></div><h1 id="templates"><a class="header" href="#templates">Templates</a></h1>
<p>Synapse uses parametrised templates to generate the content of emails it sends and <p>Synapse uses parametrised templates to generate the content of emails it sends and
webpages it shows to users.</p> webpages it shows to users.</p>
<p>By default, Synapse will use the templates listed <a href="https://github.com/matrix-org/synapse/tree/master/synapse/res/templates">here</a>. <p>By default, Synapse will use the templates listed <a href="https://github.com/element.-hq/synapse/tree/master/synapse/res/templates">here</a>.
Server admins can configure an additional directory for Synapse to look for templates Server admins can configure an additional directory for Synapse to look for templates
in, allowing them to specify custom templates:</p> in, allowing them to specify custom templates:</p>
<pre><code class="language-yaml">templates: <pre><code class="language-yaml">templates:
@ -7954,7 +7946,7 @@ and failure that a user will see when they confirm the password reset flow using
page above. page above.
When rendering, <code>password_reset_success.html</code> is given no variable, and When rendering, <code>password_reset_success.html</code> is given no variable, and
<code>password_reset_failure.html</code> is given a <code>failure_reason</code>, which contains the reason <code>password_reset_failure.html</code> is given a <code>failure_reason</code>, which contains the reason
for the password reset failure. </li> for the password reset failure.</li>
<li><code>registration_success.html</code> and <code>registration_failure.html</code>: HTML pages for success and <li><code>registration_success.html</code> and <code>registration_failure.html</code>: HTML pages for success and
failure that a user will see when they follow the link in an address verification email failure that a user will see when they follow the link in an address verification email
sent during registration. sent during registration.
@ -8910,7 +8902,7 @@ usually returned as part of the <a href="https://spec.matrix.org/latest/client-s
<h3 id="default-openid-mapping-provider"><a class="header" href="#default-openid-mapping-provider">Default OpenID Mapping Provider</a></h3> <h3 id="default-openid-mapping-provider"><a class="header" href="#default-openid-mapping-provider">Default OpenID Mapping Provider</a></h3>
<p>Synapse has a built-in OpenID mapping provider if a custom provider isn't <p>Synapse has a built-in OpenID mapping provider if a custom provider isn't
specified in the config. It is located at specified in the config. It is located at
<a href="https://github.com/matrix-org/synapse/blob/develop/synapse/handlers/oidc.py"><code>synapse.handlers.oidc.JinjaOidcMappingProvider</code></a>.</p> <a href="https://github.com/element.-hq/synapse/blob/develop/synapse/handlers/oidc.py"><code>synapse.handlers.oidc.JinjaOidcMappingProvider</code></a>.</p>
<h2 id="saml-mapping-providers"><a class="header" href="#saml-mapping-providers">SAML Mapping Providers</a></h2> <h2 id="saml-mapping-providers"><a class="header" href="#saml-mapping-providers">SAML Mapping Providers</a></h2>
<p>The SAML mapping provider can be customized by editing the <p>The SAML mapping provider can be customized by editing the
<a href="usage/configuration/config_documentation.html#saml2_config"><code>saml2_config.user_mapping_provider.module</code></a> <a href="usage/configuration/config_documentation.html#saml2_config"><code>saml2_config.user_mapping_provider.module</code></a>
@ -9025,7 +9017,7 @@ complete registration using methods from the <code>ModuleApi</code>.</p>
<h3 id="default-saml-mapping-provider"><a class="header" href="#default-saml-mapping-provider">Default SAML Mapping Provider</a></h3> <h3 id="default-saml-mapping-provider"><a class="header" href="#default-saml-mapping-provider">Default SAML Mapping Provider</a></h3>
<p>Synapse has a built-in SAML mapping provider if a custom provider isn't <p>Synapse has a built-in SAML mapping provider if a custom provider isn't
specified in the config. It is located at specified in the config. It is located at
<a href="https://github.com/matrix-org/synapse/blob/develop/synapse/handlers/saml.py"><code>synapse.handlers.saml.DefaultSamlMappingProvider</code></a>.</p> <a href="https://github.com/element.-hq/synapse/blob/develop/synapse/handlers/saml.py"><code>synapse.handlers.saml.DefaultSamlMappingProvider</code></a>.</p>
<div style="break-before: page; page-break-before: always;"></div><h2 style="color:red"> <div style="break-before: page; page-break-before: always;"></div><h2 style="color:red">
This page of the Synapse documentation is now deprecated. For up to date This page of the Synapse documentation is now deprecated. For up to date
documentation on setting up or writing a password auth provider module, please see documentation on setting up or writing a password auth provider module, please see
@ -9485,7 +9477,7 @@ database and shows a success page.</p>
<p>To enable this, first create templates for the policy and success pages. <p>To enable this, first create templates for the policy and success pages.
These should be stored on the local filesystem.</p> These should be stored on the local filesystem.</p>
<p>These templates use the <a href="http://jinja.pocoo.org">Jinja2</a> templating language, <p>These templates use the <a href="http://jinja.pocoo.org">Jinja2</a> templating language,
and <a href="https://github.com/matrix-org/synapse/tree/develop/docs/privacy_policy_templates/">docs/privacy_policy_templates</a> and <a href="https://github.com/element.-hq/synapse/tree/develop/docs/privacy_policy_templates/">docs/privacy_policy_templates</a>
gives examples of the sort of thing that can be done.</p> gives examples of the sort of thing that can be done.</p>
<p>Note that the templates must be stored under a name giving the language of the <p>Note that the templates must be stored under a name giving the language of the
template - currently this must always be <code>en</code> (for &quot;English&quot;); template - currently this must always be <code>en</code> (for &quot;English&quot;);
@ -9966,7 +9958,7 @@ the <code>synapse.module_api.ModuleApi</code> class. The configuration is a dict
either the output of the module's <code>parse_config</code> static method (see below), or the either the output of the module's <code>parse_config</code> static method (see below), or the
configuration associated with the module in Synapse's configuration file.</p> configuration associated with the module in Synapse's configuration file.</p>
<p>See the documentation for the <code>ModuleApi</code> class <p>See the documentation for the <code>ModuleApi</code> class
<a href="https://github.com/matrix-org/synapse/blob/master/synapse/module_api/__init__.py">here</a>.</p> <a href="https://github.com/element.-hq/synapse/blob/master/synapse/module_api/__init__.py">here</a>.</p>
<h2 id="when-synapse-runs-with-several-modules-configured"><a class="header" href="#when-synapse-runs-with-several-modules-configured">When Synapse runs with several modules configured</a></h2> <h2 id="when-synapse-runs-with-several-modules-configured"><a class="header" href="#when-synapse-runs-with-several-modules-configured">When Synapse runs with several modules configured</a></h2>
<p>If Synapse is running with other modules configured, the order each module appears in <p>If Synapse is running with other modules configured, the order each module appears in
within the <code>modules</code> section of the Synapse configuration file might restrict what it can within the <code>modules</code> section of the Synapse configuration file might restrict what it can
@ -10037,7 +10029,7 @@ from synapse.module_api import cached, ModuleApi
class MyModule: class MyModule:
def __init__(self, config: Any, api: ModuleApi): def __init__(self, config: Any, api: ModuleApi):
self.api = api self.api = api
# Register the cached function so Synapse knows how to correctly invalidate # Register the cached function so Synapse knows how to correctly invalidate
# entries for it. # entries for it.
self.api.register_cached_function(self.get_user_from_id) self.api.register_cached_function(self.get_user_from_id)
@ -10052,15 +10044,15 @@ class MyModule:
async def do_something_with_users(self) -&gt; None: async def do_something_with_users(self) -&gt; None:
&quot;&quot;&quot;Calls the cached function and then invalidates an entry in its cache.&quot;&quot;&quot; &quot;&quot;&quot;Calls the cached function and then invalidates an entry in its cache.&quot;&quot;&quot;
user_id = &quot;@alice:example.com&quot; user_id = &quot;@alice:example.com&quot;
# Get the user. Since get_department_for_user is wrapped with a cache, # Get the user. Since get_department_for_user is wrapped with a cache,
# the return value for this user_id will be cached. # the return value for this user_id will be cached.
department = await self.get_department_for_user(user_id) department = await self.get_department_for_user(user_id)
# Do something with `department`... # Do something with `department`...
# Let's say something has changed with our user, and the entry we have for # Let's say something has changed with our user, and the entry we have for
# them in the cache is out of date, so we want to invalidate it. # them in the cache is out of date, so we want to invalidate it.
await self.api.invalidate_cache(self.get_department_for_user, (user_id,)) await self.api.invalidate_cache(self.get_department_for_user, (user_id,))
@ -11277,8 +11269,8 @@ virtualenv, these can be installed with:</p>
<pre><code class="language-sh">pip install &quot;matrix-synapse[redis]&quot; <pre><code class="language-sh">pip install &quot;matrix-synapse[redis]&quot;
</code></pre> </code></pre>
<p>Note that these dependencies are included when synapse is installed with <code>pip install matrix-synapse[all]</code>. They are also included in the debian packages from <p>Note that these dependencies are included when synapse is installed with <code>pip install matrix-synapse[all]</code>. They are also included in the debian packages from
<code>matrix.org</code> and in the docker images at <code>packages.matrix.org</code> and in the docker images at
https://hub.docker.com/r/matrixdotorg/synapse/.</p> https://hub.docker.com/r/ectorim/synapse/.</p>
<p>To make effective use of the workers, you will need to configure an HTTP <p>To make effective use of the workers, you will need to configure an HTTP
reverse-proxy such as nginx or haproxy, which will direct incoming requests to reverse-proxy such as nginx or haproxy, which will direct incoming requests to
the correct worker, or to the main synapse instance. See the correct worker, or to the main synapse instance. See
@ -11303,7 +11295,7 @@ file suitable for use with workers:</p>
for the main process</li> for the main process</li>
<li>Secondly, you need to enable <li>Secondly, you need to enable
<a href="usage/configuration/config_documentation.html#redis">redis-based replication</a></li> <a href="usage/configuration/config_documentation.html#redis">redis-based replication</a></li>
<li>You will need to add an <a href="usage/configuration/config_documentation.html#instance_map"><code>instance_map</code></a> <li>You will need to add an <a href="usage/configuration/config_documentation.html#instance_map"><code>instance_map</code></a>
with the <code>main</code> process defined, as well as the relevant connection information from with the <code>main</code> process defined, as well as the relevant connection information from
it's HTTP <code>replication</code> listener (defined in step 1 above). it's HTTP <code>replication</code> listener (defined in step 1 above).
<ul> <ul>
@ -11619,7 +11611,7 @@ of the main process to a particular worker.</p>
<li>An <a href="usage/configuration/config_documentation.html#listeners">HTTP <code>replication</code> listener</a> configured,</li> <li>An <a href="usage/configuration/config_documentation.html#listeners">HTTP <code>replication</code> listener</a> configured,</li>
<li>Have a <a href="usage/configuration/config_documentation.html#worker_name"><code>worker_name</code></a> <li>Have a <a href="usage/configuration/config_documentation.html#worker_name"><code>worker_name</code></a>
and be listed in the <a href="usage/configuration/config_documentation.html#instance_map"><code>instance_map</code></a> and be listed in the <a href="usage/configuration/config_documentation.html#instance_map"><code>instance_map</code></a>
config. </li> config.</li>
<li>Have the main process declared on the <a href="usage/configuration/config_documentation.html#instance_map"><code>instance_map</code></a> as well.</li> <li>Have the main process declared on the <a href="usage/configuration/config_documentation.html#instance_map"><code>instance_map</code></a> as well.</li>
</ul> </ul>
<p>Note: The same worker can handle multiple streams, but unless otherwise documented, <p>Note: The same worker can handle multiple streams, but unless otherwise documented,
@ -11784,7 +11776,7 @@ worker application type.</p>
<h4 id="push-notifications"><a class="header" href="#push-notifications">Push Notifications</a></h4> <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 <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 <a href="https://spec.matrix.org/v1.5/push-gateway-api/">push gateway</a> such as
<a href="https://github.com/matrix-org/sygnal">sygnal</a> and email.</p> <a href="https://github.com/vector-im/sygnal">sygnal</a> and email.</p>
<p>This will stop the main process sending push notifications.</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 <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> <a href="usage/configuration/config_documentation.html#pusher_instances"><code>pusher_instances</code></a>
@ -11991,9 +11983,9 @@ managing workers. It provides a <code>matrix-synapse</code> service for the mast
well as a <code>matrix-synapse-worker@</code> service template for any workers you well as a <code>matrix-synapse-worker@</code> service template for any workers you
require. Additionally, to group the required services, it sets up a require. Additionally, to group the required services, it sets up a
<code>matrix-synapse.target</code>.</p> <code>matrix-synapse.target</code>.</p>
<p>See the folder <a href="https://github.com/matrix-org/synapse/tree/develop/docs/systemd-with-workers/system/">system</a> <p>See the folder <a href="https://github.com/element.-hq/synapse/tree/develop/docs/systemd-with-workers/system/">system</a>
for the systemd unit files.</p> for the systemd unit files.</p>
<p>The folder <a href="https://github.com/matrix-org/synapse/tree/develop/docs/systemd-with-workers/workers/">workers</a> <p>The folder <a href="https://github.com/element.-hq/synapse/tree/develop/docs/systemd-with-workers/workers/">workers</a>
contains an example configuration for the <code>generic_worker</code> worker.</p> contains an example configuration for the <code>generic_worker</code> worker.</p>
<h2 id="synapse-configuration-files"><a class="header" href="#synapse-configuration-files">Synapse configuration files</a></h2> <h2 id="synapse-configuration-files"><a class="header" href="#synapse-configuration-files">Synapse configuration files</a></h2>
<p>See <a href="systemd-with-workers/../workers.html">the worker documentation</a> for information on how to set up the <p>See <a href="systemd-with-workers/../workers.html">the worker documentation</a> for information on how to set up the
@ -12020,7 +12012,7 @@ the provided <code>*.service</code> files accordingly.</p>
<h2 id="set-up"><a class="header" href="#set-up">Set up</a></h2> <h2 id="set-up"><a class="header" href="#set-up">Set up</a></h2>
<ol> <ol>
<li>Adjust synapse configuration files as above.</li> <li>Adjust synapse configuration files as above.</li>
<li>Copy the <code>*.service</code> and <code>*.target</code> files in <a href="https://github.com/matrix-org/synapse/tree/develop/docs/systemd-with-workers/system/">system</a> <li>Copy the <code>*.service</code> and <code>*.target</code> files in <a href="https://github.com/element.-hq/synapse/tree/develop/docs/systemd-with-workers/system/">system</a>
to <code>/etc/systemd/system</code>.</li> to <code>/etc/systemd/system</code>.</li>
<li>Run <code>systemctl daemon-reload</code> to tell systemd to load the new unit files.</li> <li>Run <code>systemctl daemon-reload</code> to tell systemd to load the new unit files.</li>
<li>Run <code>systemctl enable matrix-synapse.service</code>. This will configure the <li>Run <code>systemctl enable matrix-synapse.service</code>. This will configure the
@ -12055,7 +12047,7 @@ systemctl restart matrix-synapse.target
<h2 id="hardening"><a class="header" href="#hardening">Hardening</a></h2> <h2 id="hardening"><a class="header" href="#hardening">Hardening</a></h2>
<p><strong>Optional:</strong> If further hardening is desired, the file <p><strong>Optional:</strong> If further hardening is desired, the file
<code>override-hardened.conf</code> may be copied from <code>override-hardened.conf</code> may be copied from
<a href="https://github.com/matrix-org/synapse/tree/develop/contrib/systemd/">contrib/systemd/override-hardened.conf</a> <a href="https://github.com/element.-hq/synapse/tree/develop/contrib/systemd/">contrib/systemd/override-hardened.conf</a>
in this repository to the location in this repository to the location
<code>/etc/systemd/system/matrix-synapse.service.d/override-hardened.conf</code> (the <code>/etc/systemd/system/matrix-synapse.service.d/override-hardened.conf</code> (the
directory may have to be created). It enables certain sandboxing features in directory may have to be created). It enables certain sandboxing features in
@ -15494,7 +15486,7 @@ ensures that access to the <code>manhole</code> is only possible for local users
--mount type=volume,src=synapse-data,dst=/data \ --mount type=volume,src=synapse-data,dst=/data \
-p 8008:8008 \ -p 8008:8008 \
-p 127.0.0.1:9000:9000 \ -p 127.0.0.1:9000:9000 \
matrixdotorg/synapse:latest vectorim/synapse:latest
</code></pre> </code></pre>
<h4 id="native-config"><a class="header" href="#native-config">Native config</a></h4> <h4 id="native-config"><a class="header" href="#native-config">Native config</a></h4>
<p>If you are not using docker, set <code>bind_addresses</code> to <code>['::1', '127.0.0.1']</code> as shown. <p>If you are not using docker, set <code>bind_addresses</code> to <code>['::1', '127.0.0.1']</code> as shown.
@ -15616,8 +15608,8 @@ the listener port configured with the <code>metrics</code> resource.</p>
<p>Restart Prometheus.</p> <p>Restart Prometheus.</p>
</li> </li>
<li> <li>
<p>Consider using the <a href="https://github.com/matrix-org/synapse/tree/master/contrib/grafana/">grafana dashboard</a> <p>Consider using the <a href="https://github.com/element.-hq/synapse/tree/master/contrib/grafana/">grafana dashboard</a>
and required <a href="https://github.com/matrix-org/synapse/tree/master/contrib/prometheus/">recording rules</a> </p> and required <a href="https://github.com/element.-hq/synapse/tree/master/contrib/prometheus/">recording rules</a></p>
</li> </li>
</ol> </ol>
<h2 id="monitoring-workers"><a class="header" href="#monitoring-workers">Monitoring workers</a></h2> <h2 id="monitoring-workers"><a class="header" href="#monitoring-workers">Monitoring workers</a></h2>
@ -15943,14 +15935,14 @@ to filter by a specific service ID. This <em>also</em> includes non-application-
<p><code>synapse_admin_mau_registered_reserved_users</code> records the number of users specified in <code>mau_limits_reserved_threepids</code> which have <p><code>synapse_admin_mau_registered_reserved_users</code> records the number of users specified in <code>mau_limits_reserved_threepids</code> which have
registered accounts on the homeserver.</p> registered accounts on the homeserver.</p>
<div style="break-before: page; page-break-before: always;"></div><h2 id="understanding-synapse-through-grafana-graphs"><a class="header" href="#understanding-synapse-through-grafana-graphs">Understanding Synapse through Grafana graphs</a></h2> <div style="break-before: page; page-break-before: always;"></div><h2 id="understanding-synapse-through-grafana-graphs"><a class="header" href="#understanding-synapse-through-grafana-graphs">Understanding Synapse through Grafana graphs</a></h2>
<p>It is possible to monitor much of the internal state of Synapse using <a href="https://prometheus.io">Prometheus</a> <p>It is possible to monitor much of the internal state of Synapse using <a href="https://prometheus.io">Prometheus</a>
metrics and <a href="https://grafana.com/">Grafana</a>. metrics and <a href="https://grafana.com/">Grafana</a>.
A guide for configuring Synapse to provide metrics is available <a href="usage/administration/../../metrics-howto.html">here</a> A guide for configuring Synapse to provide metrics is available <a href="usage/administration/../../metrics-howto.html">here</a>
and information on setting up Grafana is <a href="https://github.com/matrix-org/synapse/tree/master/contrib/grafana">here</a>. and information on setting up Grafana is <a href="https://github.com/element.-hq/synapse/tree/master/contrib/grafana">here</a>.
In this setup, Prometheus will periodically scrape the information Synapse provides and In this setup, Prometheus will periodically scrape the information Synapse provides and
store a record of it over time. Grafana is then used as an interface to query and store a record of it over time. Grafana is then used as an interface to query and
present this information through a series of pretty graphs.</p> present this information through a series of pretty graphs.</p>
<p>Once you have grafana set up, and assuming you're using <a href="https://github.com/matrix-org/synapse/blob/master/contrib/grafana/synapse.json">our grafana dashboard template</a>, look for the following graphs when debugging a slow/overloaded Synapse:</p> <p>Once you have grafana set up, and assuming you're using <a href="https://github.com/element.-hq/synapse/blob/master/contrib/grafana/synapse.json">our grafana dashboard template</a>, look for the following graphs when debugging a slow/overloaded Synapse:</p>
<h2 id="message-event-send-time"><a class="header" href="#message-event-send-time">Message Event Send Time</a></h2> <h2 id="message-event-send-time"><a class="header" href="#message-event-send-time">Message Event Send Time</a></h2>
<p><img src="https://user-images.githubusercontent.com/1342360/82239409-a1c8e900-9930-11ea-8081-e4614e0c63f4.png" alt="image" /></p> <p><img src="https://user-images.githubusercontent.com/1342360/82239409-a1c8e900-9930-11ea-8081-e4614e0c63f4.png" alt="image" /></p>
<p>This, along with the CPU and Memory graphs, is a good way to check the general health of your Synapse instance. It represents how long it takes for a user on your homeserver to send a message.</p> <p>This, along with the CPU and Memory graphs, is a good way to check the general health of your Synapse instance. It represents how long it takes for a user on your homeserver to send a message.</p>
@ -15977,20 +15969,20 @@ present this information through a series of pretty graphs.</p>
<p>This is quite a useful graph. It shows how many times Synapse attempts to retrieve a piece of data from a cache which the cache did not contain, thus resulting in a call to the database. We can see here that the <code>_get_joined_profile_from_event_id</code> cache is being requested a lot, and often the data we're after is not cached.</p> <p>This is quite a useful graph. It shows how many times Synapse attempts to retrieve a piece of data from a cache which the cache did not contain, thus resulting in a call to the database. We can see here that the <code>_get_joined_profile_from_event_id</code> cache is being requested a lot, and often the data we're after is not cached.</p>
<p>Cross-referencing this with the Eviction Rate graph, which shows that entries are being evicted from <code>_get_joined_profile_from_event_id</code> quite often:</p> <p>Cross-referencing this with the Eviction Rate graph, which shows that entries are being evicted from <code>_get_joined_profile_from_event_id</code> quite often:</p>
<p><img src="https://user-images.githubusercontent.com/1342360/82240766-de95df80-9932-11ea-8c15-5acfc57c48da.png" alt="image" /></p> <p><img src="https://user-images.githubusercontent.com/1342360/82240766-de95df80-9932-11ea-8c15-5acfc57c48da.png" alt="image" /></p>
<p>we should probably consider raising the size of that cache by raising its cache factor (a multiplier value for the size of an individual cache). Information on doing so is available <a href="https://github.com/matrix-org/synapse/blob/ee421e524478c1ad8d43741c27379499c2f6135c/docs/sample_config.yaml#L608-L642">here</a> (note that the configuration of individual cache factors through the configuration file is available in Synapse v1.14.0+, whereas doing so through environment variables has been supported for a very long time). Note that this will increase Synapse's overall memory usage.</p> <p>we should probably consider raising the size of that cache by raising its cache factor (a multiplier value for the size of an individual cache). Information on doing so is available <a href="https://github.com/element.-hq/synapse/blob/ee421e524478c1ad8d43741c27379499c2f6135c/docs/sample_config.yaml#L608-L642">here</a> (note that the configuration of individual cache factors through the configuration file is available in Synapse v1.14.0+, whereas doing so through environment variables has been supported for a very long time). Note that this will increase Synapse's overall memory usage.</p>
<h2 id="forward-extremities"><a class="header" href="#forward-extremities">Forward Extremities</a></h2> <h2 id="forward-extremities"><a class="header" href="#forward-extremities">Forward Extremities</a></h2>
<p><img src="https://user-images.githubusercontent.com/1342360/82241440-13566680-9934-11ea-8b88-ba468db937ed.png" alt="image" /></p> <p><img src="https://user-images.githubusercontent.com/1342360/82241440-13566680-9934-11ea-8b88-ba468db937ed.png" alt="image" /></p>
<p>Forward extremities are the leaf events at the end of a DAG in a room, aka events that have no children. The more that exist in a room, the more <a href="https://spec.matrix.org/v1.1/server-server-api/#room-state-resolution">state resolution</a> that Synapse needs to perform (hint: it's an expensive operation). While Synapse has code to prevent too many of these existing at one time in a room, bugs can sometimes make them crop up again.</p> <p>Forward extremities are the leaf events at the end of a DAG in a room, aka events that have no children. The more that exist in a room, the more <a href="https://spec.matrix.org/v1.1/server-server-api/#room-state-resolution">state resolution</a> that Synapse needs to perform (hint: it's an expensive operation). While Synapse has code to prevent too many of these existing at one time in a room, bugs can sometimes make them crop up again.</p>
<p>If a room has &gt;10 forward extremities, it's worth checking which room is the culprit and potentially removing them using the SQL queries mentioned in <a href="https://github.com/matrix-org/synapse/issues/1760">#1760</a>.</p> <p>If a room has &gt;10 forward extremities, it's worth checking which room is the culprit and potentially removing them using the SQL queries mentioned in <a href="https://github.com/matrix-org/synapse/issues/1760">#1760</a>.</p>
<h2 id="garbage-collection"><a class="header" href="#garbage-collection">Garbage Collection</a></h2> <h2 id="garbage-collection"><a class="header" href="#garbage-collection">Garbage Collection</a></h2>
<p><img src="https://user-images.githubusercontent.com/1342360/82241911-da6ac180-9934-11ea-9a0d-a311fe22acd0.png" alt="image" /></p> <p><img src="https://user-images.githubusercontent.com/1342360/82241911-da6ac180-9934-11ea-9a0d-a311fe22acd0.png" alt="image" /></p>
<p>Large spikes in garbage collection times (bigger than shown here, I'm talking in the <p>Large spikes in garbage collection times (bigger than shown here, I'm talking in the
multiple seconds range), can cause lots of problems in Synapse performance. It's more an multiple seconds range), can cause lots of problems in Synapse performance. It's more an
indicator of problems, and a symptom of other problems though, so check other graphs for what might be causing it.</p> indicator of problems, and a symptom of other problems though, so check other graphs for what might be causing it.</p>
<h2 id="final-thoughts"><a class="header" href="#final-thoughts">Final Thoughts</a></h2> <h2 id="final-thoughts"><a class="header" href="#final-thoughts">Final Thoughts</a></h2>
<p>If you're still having performance problems with your Synapse instance and you've <p>If you're still having performance problems with your Synapse instance and you've
tried everything you can, it may just be a lack of system resources. Consider adding tried everything you can, it may just be a lack of system resources. Consider adding
more CPU and RAM, and make use of <a href="usage/administration/../../workers.html">worker mode</a> more CPU and RAM, and make use of <a href="usage/administration/../../workers.html">worker mode</a>
to make use of multiple CPU cores / multiple machines for your homeserver.</p> to make use of multiple CPU cores / multiple machines for your homeserver.</p>
<div style="break-before: page; page-break-before: always;"></div><h2 id="some-useful-sql-queries-for-synapse-admins"><a class="header" href="#some-useful-sql-queries-for-synapse-admins">Some useful SQL queries for Synapse Admins</a></h2> <div style="break-before: page; page-break-before: always;"></div><h2 id="some-useful-sql-queries-for-synapse-admins"><a class="header" href="#some-useful-sql-queries-for-synapse-admins">Some useful SQL queries for Synapse Admins</a></h2>
<h2 id="size-of-full-matrix-db"><a class="header" href="#size-of-full-matrix-db">Size of full matrix db</a></h2> <h2 id="size-of-full-matrix-db"><a class="header" href="#size-of-full-matrix-db">Size of full matrix db</a></h2>
@ -16188,7 +16180,7 @@ WHERE room_stats_state.room_id = event_json.room_id&quot; | psql -d synapse -h l
<h2 id="compression-tool"><a class="header" href="#compression-tool">Compression tool</a></h2> <h2 id="compression-tool"><a class="header" href="#compression-tool">Compression tool</a></h2>
<p>There is a tool at https://github.com/matrix-org/rust-synapse-compress-state which can compress the <code>state_groups_state</code> on a room by-room basis (essentially, it reduces the number of &quot;full&quot; state groups). This can result in dramatic reductions of the storage used.</p> <p>There is a tool at https://github.com/matrix-org/rust-synapse-compress-state which can compress the <code>state_groups_state</code> on a room by-room basis (essentially, it reduces the number of &quot;full&quot; state groups). This can result in dramatic reductions of the storage used.</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="request-log-format"><a class="header" href="#request-log-format">Request log format</a></h1> <div style="break-before: page; page-break-before: always;"></div><h1 id="request-log-format"><a class="header" href="#request-log-format">Request log format</a></h1>
<p>HTTP request logs are written by synapse (see <a href="https://github.com/matrix-org/synapse/tree/develop/synapse/http/site.py"><code>synapse/http/site.py</code></a> for details).</p> <p>HTTP request logs are written by synapse (see <a href="https://github.com/element.-hq/synapse/tree/develop/synapse/http/site.py"><code>synapse/http/site.py</code></a> for details).</p>
<p>See the following for how to decode the dense data available from the default logging configuration.</p> <p>See the following for how to decode the dense data available from the default logging configuration.</p>
<pre><code>2020-10-01 12:00:00,000 - synapse.access.http.8008 - 311 - INFO - PUT-1000- 192.168.0.1 - 8008 - {another-matrix-server.com} Processed request: 0.100sec/-0.000sec (0.000sec, 0.000sec) (0.001sec/0.090sec/3) 11B !200 &quot;PUT /_matrix/federation/v1/send/1600000000000 HTTP/1.1&quot; &quot;Synapse/1.20.1&quot; [0 dbevts] <pre><code>2020-10-01 12:00:00,000 - synapse.access.http.8008 - 311 - INFO - PUT-1000- 192.168.0.1 - 8008 - {another-matrix-server.com} Processed request: 0.100sec/-0.000sec (0.000sec, 0.000sec) (0.001sec/0.090sec/3) 11B !200 &quot;PUT /_matrix/federation/v1/send/1600000000000 HTTP/1.1&quot; &quot;Synapse/1.20.1&quot; [0 dbevts]
-AAAAAAAAAAAAAAAAAAAAA- -BBBBBBBBBBBBBBBBBBBBBB- -C- -DD- -EEEEEE- -FFFFFFFFF- -GG- -HHHHHHHHHHHHHHHHHHHHHHH- -IIIIII- -JJJJJJJ- -KKKKKK-, -LLLLLL- -MMMMMMM- -NNNNNN- O -P- -QQ- -RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR- -SSSSSSSSSSSS- -TTTTTT- -AAAAAAAAAAAAAAAAAAAAA- -BBBBBBBBBBBBBBBBBBBBBB- -C- -DD- -EEEEEE- -FFFFFFFFF- -GG- -HHHHHHHHHHHHHHHHHHHHHHH- -IIIIII- -JJJJJJJ- -KKKKKK-, -LLLLLL- -MMMMMMM- -NNNNNN- O -P- -QQ- -RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR- -SSSSSSSSSSSS- -TTTTTT-
@ -16434,14 +16426,15 @@ you see this failure mode so we can help debug it, however.</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="contributing"><a class="header" href="#contributing">Contributing</a></h1> <div style="break-before: page; page-break-before: always;"></div><h1 id="contributing"><a class="header" href="#contributing">Contributing</a></h1>
<p>This document aims to get you started with contributing to Synapse!</p> <p>This document aims to get you started with contributing to Synapse!</p>
<h1 id="1-who-can-contribute-to-synapse"><a class="header" href="#1-who-can-contribute-to-synapse">1. Who can contribute to Synapse?</a></h1> <h1 id="1-who-can-contribute-to-synapse"><a class="header" href="#1-who-can-contribute-to-synapse">1. Who can contribute to Synapse?</a></h1>
<p>Everyone is welcome to contribute code to <a href="https://github.com/matrix-org">matrix.org <p>Everyone is welcome to contribute code to <a href="https://github.com/element-hq/synapse">Synapse</a>,
projects</a>, provided that they are willing to provided that they are willing to
license their contributions under the same license as the project itself. We license their contributions under the same license as the project itself. We
follow a simple 'inbound=outbound' model for contributions: the act of follow a simple 'inbound=outbound' model for contributions: the act of
submitting an 'inbound' contribution means that the contributor agrees to submitting an 'inbound' contribution means that the contributor agrees to
license the code under the same terms as the project's overall 'outbound' license the code under the same terms as the project's overall 'outbound'
license - in our case, this is almost always Apache Software License v2 (see license - in our case, this is almost always Apache Software License v2 (see
<a href="https://github.com/matrix-org/synapse/blob/develop/LICENSE">LICENSE</a>).</p> <a href="https://github.com/element-hq/synapse/blob/develop/LICENSE">LICENSE</a>).</p>
<p>TODO THIS NEEDS UPDATING</p>
<h1 id="2-what-do-i-need"><a class="header" href="#2-what-do-i-need">2. What do I need?</a></h1> <h1 id="2-what-do-i-need"><a class="header" href="#2-what-do-i-need">2. What do I need?</a></h1>
<p>If you are running Windows, the Windows Subsystem for Linux (WSL) is strongly <p>If you are running Windows, the Windows Subsystem for Linux (WSL) is strongly
recommended for development. More information about WSL can be found at recommended for development. More information about WSL can be found at
@ -16494,8 +16487,8 @@ cp docs/sample_log_config.yaml log_config.yaml
<ul> <ul>
<li>Set a <code>server_name</code></li> <li>Set a <code>server_name</code></li>
<li>Adjusting paths to be correct for your system like the <code>log_config</code> to point to the log config you just copied</li> <li>Adjusting paths to be correct for your system like the <code>log_config</code> to point to the log config you just copied</li>
<li>Using a <a href="https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#database">PostgreSQL database instead of SQLite</a></li> <li>Using a <a href="https://vector-im.github.io/synapse/latest/usage/configuration/config_documentation.html#database">PostgreSQL database instead of SQLite</a></li>
<li>Adding a <a href="https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#registration_shared_secret"><code>registration_shared_secret</code></a> so you can use <a href="https://matrix-org.github.io/synapse/latest/setup/installation.html#registering-a-user"><code>register_new_matrix_user</code> command</a>.</li> <li>Adding a <a href="https://vector-im.github.io/synapse/latest/usage/configuration/config_documentation.html#registration_shared_secret"><code>registration_shared_secret</code></a> so you can use <a href="https://vector-im.github.io/synapse/latest/setup/installation.html#registering-a-user"><code>register_new_matrix_user</code> command</a>.</li>
</ul> </ul>
<p>And then run Synapse with the following command:</p> <p>And then run Synapse with the following command:</p>
<pre><code class="language-sh">poetry run python -m synapse.app.homeserver -c homeserver.yaml <pre><code class="language-sh">poetry run python -m synapse.app.homeserver -c homeserver.yaml
@ -16508,19 +16501,19 @@ resolve any issues and re-run until successful.</p>
<h1 id="5-get-in-touch"><a class="header" href="#5-get-in-touch">5. Get in touch.</a></h1> <h1 id="5-get-in-touch"><a class="header" href="#5-get-in-touch">5. Get in touch.</a></h1>
<p>Join our developer community on Matrix: <a href="https://matrix.to/#/#synapse-dev:matrix.org">#synapse-dev:matrix.org</a>!</p> <p>Join our developer community on Matrix: <a href="https://matrix.to/#/#synapse-dev:matrix.org">#synapse-dev:matrix.org</a>!</p>
<h1 id="6-pick-an-issue"><a class="header" href="#6-pick-an-issue">6. Pick an issue.</a></h1> <h1 id="6-pick-an-issue"><a class="header" href="#6-pick-an-issue">6. Pick an issue.</a></h1>
<p>Fix your favorite problem or perhaps find a <a href="https://github.com/matrix-org/synapse/issues?q=is%3Aopen+is%3Aissue+label%3A%22Good+First+Issue%22">Good First Issue</a> <p>Fix your favorite problem or perhaps find a <a href="https://github.com/element-hq/synapse/issues?q=is%3Aopen+is%3Aissue+label%3A%22Good+First+Issue%22">Good First Issue</a>
to work on.</p> to work on.</p>
<h1 id="7-turn-coffee-into-code-and-documentation"><a class="header" href="#7-turn-coffee-into-code-and-documentation">7. Turn coffee into code and documentation!</a></h1> <h1 id="7-turn-coffee-into-code-and-documentation"><a class="header" href="#7-turn-coffee-into-code-and-documentation">7. Turn coffee into code and documentation!</a></h1>
<p>There is a growing amount of documentation located in the <p>There is a growing amount of documentation located in the
<a href="https://github.com/matrix-org/synapse/tree/develop/docs"><code>docs</code></a> <a href="https://github.com/element-hq/synapse/tree/develop/docs"><code>docs</code></a>
directory, with a rendered version <a href="https://matrix-org.github.io/synapse">available online</a>. directory, with a rendered version <a href="https://vector-im.github.io/synapse">available online</a>.
This documentation is intended primarily for sysadmins running their This documentation is intended primarily for sysadmins running their
own Synapse instance, as well as developers interacting externally with own Synapse instance, as well as developers interacting externally with
Synapse. Synapse.
<a href="https://github.com/matrix-org/synapse/tree/develop/docs/development"><code>docs/development</code></a> <a href="https://github.com/element-hq/synapse/tree/develop/docs/development"><code>docs/development</code></a>
exists primarily to house documentation for exists primarily to house documentation for
Synapse developers. Synapse developers.
<a href="https://github.com/matrix-org/synapse/tree/develop/docs/admin_api"><code>docs/admin_api</code></a> houses documentation <a href="https://github.com/element-hq/synapse/tree/develop/docs/admin_api"><code>docs/admin_api</code></a> houses documentation
regarding Synapse's Admin API, which is used mostly by sysadmins and external regarding Synapse's Admin API, which is used mostly by sysadmins and external
service developers.</p> service developers.</p>
<p>Synapse's code style is documented <a href="development/../code_style.html">here</a>. Please follow <p>Synapse's code style is documented <a href="development/../code_style.html">here</a>. Please follow
@ -16528,12 +16521,9 @@ it, including the conventions for <a href="development/../code_style.html#config
options and documentation</a>.</p> options and documentation</a>.</p>
<p>We welcome improvements and additions to our documentation itself! When <p>We welcome improvements and additions to our documentation itself! When
writing new pages, please writing new pages, please
<a href="https://github.com/matrix-org/synapse/tree/develop/docs#adding-to-the-documentation">build <code>docs</code> to a book</a> <a href="https://github.com/element-hq/synapse/tree/develop/docs#adding-to-the-documentation">build <code>docs</code> to a book</a>
to check that your contributions render correctly. The docs are written in to check that your contributions render correctly. The docs are written in
<a href="https://guides.github.com/features/mastering-markdown/">GitHub-Flavoured Markdown</a>.</p> <a href="https://guides.github.com/features/mastering-markdown/">GitHub-Flavoured Markdown</a>.</p>
<p>Some documentation also exists in <a href="https://github.com/matrix-org/synapse/wiki">Synapse's GitHub
Wiki</a>, although this is primarily
contributed to by community authors.</p>
<p>When changes are made to any Rust code then you must call either <code>poetry install</code> <p>When changes are made to any Rust code then you must call either <code>poetry install</code>
or <code>maturin develop</code> (if installed) to rebuild the Rust code. Using <a href="https://github.com/PyO3/maturin"><code>maturin</code></a> or <code>maturin develop</code> (if installed) to rebuild the Rust code. Using <a href="https://github.com/PyO3/maturin"><code>maturin</code></a>
is quicker than <code>poetry install</code>, so is recommended when making frequent is quicker than <code>poetry install</code>, so is recommended when making frequent
@ -16648,7 +16638,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 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> <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> </ul>
<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> <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>
<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> <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><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. <p>It's often nice to develop on Synapse and write Complement tests at the same time.
@ -16670,7 +16660,7 @@ Here is how to run your local Synapse checkout against your local Complement che
<li>If setting <code>WORKERS=1</code>, optionally set <code>WORKER_TYPES=</code> to declare which worker <li>If setting <code>WORKERS=1</code>, optionally set <code>WORKER_TYPES=</code> to declare which worker
types you wish to test. A simple comma-delimited string containing the worker types types you wish to test. A simple comma-delimited string containing the worker types
defined from the <code>WORKERS_CONFIG</code> template in defined from the <code>WORKERS_CONFIG</code> template in
<a href="https://github.com/matrix-org/synapse/blob/develop/docker/configure_workers_and_start.py#L54">here</a>. <a href="https://github.com/element-hq/synapse/blob/develop/docker/configure_workers_and_start.py#L54">here</a>.
A safe example would be <code>WORKER_TYPES=&quot;federation_inbound, federation_sender, synchrotron&quot;</code>. A safe example would be <code>WORKER_TYPES=&quot;federation_inbound, federation_sender, synchrotron&quot;</code>.
See the <a href="development/../workers.html">worker documentation</a> for additional information on workers.</li> See the <a href="development/../workers.html">worker documentation</a> for additional information on workers.</li>
</ul> </ul>
@ -16724,7 +16714,7 @@ in the format of <code>PRnumber.type</code>. The type can be one of the followin
<li><code>removal</code> (also used for deprecations)</li> <li><code>removal</code> (also used for deprecations)</li>
<li><code>misc</code> (for internal-only changes)</li> <li><code>misc</code> (for internal-only changes)</li>
</ul> </ul>
<p>This file will become part of our <a href="https://github.com/matrix-org/synapse/blob/master/CHANGES.md">changelog</a> at the next <p>This file will become part of our <a href="https://github.com/element-hq/synapse/blob/master/CHANGES.md">changelog</a> at the next
release, so the content of the file should be a short description of your release, so the content of the file should be a short description of your
change in the same style as the rest of the changelog. The file can contain Markdown change in the same style as the rest of the changelog. The file can contain Markdown
formatting, and must end with a full stop (.) or an exclamation mark (!) for formatting, and must end with a full stop (.) or an exclamation mark (!) for
@ -16752,7 +16742,7 @@ chicken-and-egg problem.</p>
add the changelog file to your branch, or:</p> add the changelog file to your branch, or:</p>
</li> </li>
<li> <li>
<p>Look at the <a href="https://github.com/matrix-org/synapse/issues?q=">list of all <p>Look at the <a href="https://github.com/element-hq/synapse/issues?q=">list of all
issues/PRs</a>, add one to the issues/PRs</a>, add one to the
highest number you see, and quickly open the PR before somebody else claims highest number you see, and quickly open the PR before somebody else claims
your number.</p> your number.</p>
@ -17075,10 +17065,10 @@ before. Here, by way of an arbitrary example, is the top of <code>git log --grap
<p>Note how the commit comment explains clearly what is changing and why. Also <p>Note how the commit comment explains clearly what is changing and why. Also
note the <em>absence</em> of merge commits, as well as the absence of commits called note the <em>absence</em> of merge commits, as well as the absence of commits called
things like (to pick a few culprits): things like (to pick a few culprits):
<a href="https://github.com/matrix-org/synapse/commit/84691da6c">“pep8”</a>, <a href="https://github.com/matrix-org/synapse/commit/474810d9d">“fix broken <a href="https://github.com/element.-hq/synapse/commit/84691da6c">“pep8”</a>, <a href="https://github.com/element.-hq/synapse/commit/474810d9d">“fix broken
test”</a>, test”</a>,
<a href="https://github.com/matrix-org/synapse/commit/c9d72e457">“oops”</a>, <a href="https://github.com/element.-hq/synapse/commit/c9d72e457">“oops”</a>,
<a href="https://github.com/matrix-org/synapse/commit/836358823">“typo”</a>, or <a href="https://github.com/matrix-org/synapse/commit/707374d5d">“Who's <a href="https://github.com/element.-hq/synapse/commit/836358823">“typo”</a>, or <a href="https://github.com/element.-hq/synapse/commit/707374d5d">“Who's
the president?”</a>.</p> the president?”</a>.</p>
<p>There are a number of reasons why keeping a clean commit history is a good <p>There are a number of reasons why keeping a clean commit history is a good
thing:</p> thing:</p>
@ -17722,9 +17712,9 @@ phonenumbers = [
] ]
</code></pre> </code></pre>
<p>We can see this pinned version inside the docker image for that release:</p> <p>We can see this pinned version inside the docker image for that release:</p>
<pre><code>$ docker pull matrixdotorg/synapse:v1.57.0 <pre><code>$ docker pull vectorim/synapse:v1.97.0
... ...
$ docker run --entrypoint pip matrixdotorg/synapse:v1.57.0 show phonenumbers $ docker run --entrypoint pip vectorim/synapse:v1.97.0 show phonenumbers
Name: phonenumbers Name: phonenumbers
Version: 8.12.44 Version: 8.12.44
Summary: Python version of Google's common library for parsing, formatting, storing and validating international phone numbers. Summary: Python version of Google's common library for parsing, formatting, storing and validating international phone numbers.
@ -18554,7 +18544,7 @@ minimal.</p>
the classes interact, can be found in the classes interact, can be found in
<code>synapse/replication/tcp/__init__.py</code></p> <code>synapse/replication/tcp/__init__.py</code></p>
<div style="break-before: page; page-break-before: always;"></div><h2 id="streams"><a class="header" href="#streams">Streams</a></h2> <div style="break-before: page; page-break-before: always;"></div><h2 id="streams"><a class="header" href="#streams">Streams</a></h2>
<p>Synapse has a concept of &quot;streams&quot;, which are roughly described in <a href="https://github.com/matrix-org/synapse/blob/develop/synapse/storage/util/id_generators.py"><code>id_generators.py</code></a>. <p>Synapse has a concept of &quot;streams&quot;, which are roughly described in <a href="https://github.com/element.-hq/synapse/blob/develop/synapse/storage/util/id_generators.py"><code>id_generators.py</code></a>.
Generally speaking, streams are a series of notifications that something in Synapse's database has changed that the application might need to respond to. Generally speaking, streams are a series of notifications that something in Synapse's database has changed that the application might need to respond to.
For example:</p> For example:</p>
<ul> <ul>
@ -18562,9 +18552,9 @@ For example:</p>
<li>The account data stream reports changes to users' <a href="https://spec.matrix.org/v1.7/client-server-api/#client-config">account data</a>.</li> <li>The account data stream reports changes to users' <a href="https://spec.matrix.org/v1.7/client-server-api/#client-config">account data</a>.</li>
<li>The to-device stream reports when a device has a new <a href="https://spec.matrix.org/v1.7/client-server-api/#send-to-device-messaging">to-device message</a>.</li> <li>The to-device stream reports when a device has a new <a href="https://spec.matrix.org/v1.7/client-server-api/#send-to-device-messaging">to-device message</a>.</li>
</ul> </ul>
<p>See <a href="https://github.com/matrix-org/synapse/blob/develop/synapse/replication/tcp/streams/__init__.py"><code>synapse.replication.tcp.streams</code></a> for the full list of streams.</p> <p>See <a href="https://github.com/element.-hq/synapse/blob/develop/synapse/replication/tcp/streams/__init__.py"><code>synapse.replication.tcp.streams</code></a> for the full list of streams.</p>
<p>It is very helpful to understand the streams mechanism when working on any part of Synapse that needs to respond to changes—especially if those changes are made by different workers. <p>It is very helpful to understand the streams mechanism when working on any part of Synapse that needs to respond to changes—especially if those changes are made by different workers.
To that end, let's describe streams formally, paraphrasing from the docstring of <a href="https://github.com/matrix-org/synapse/blob/a719b703d9bd0dade2565ddcad0e2f3a7a9d4c37/synapse/storage/util/id_generators.py#L96"><code>AbstractStreamIdGenerator</code></a>.</p> To that end, let's describe streams formally, paraphrasing from the docstring of <a href="https://github.com/element.-hq/synapse/blob/a719b703d9bd0dade2565ddcad0e2f3a7a9d4c37/synapse/storage/util/id_generators.py#L96"><code>AbstractStreamIdGenerator</code></a>.</p>
<h3 id="definition"><a class="header" href="#definition">Definition</a></h3> <h3 id="definition"><a class="header" href="#definition">Definition</a></h3>
<p>A stream is an append-only log <code>T1, T2, ..., Tn, ...</code> of facts<sup class="footnote-reference"><a href="#1">1</a></sup> which grows over time. <p>A stream is an append-only log <code>T1, T2, ..., Tn, ...</code> of facts<sup class="footnote-reference"><a href="#1">1</a></sup> which grows over time.
Only &quot;writers&quot; can add facts to a stream, and there may be multiple writers.</p> Only &quot;writers&quot; can add facts to a stream, and there may be multiple writers.</p>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/replication.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/replication.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/reverse_proxy.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/reverse_proxy.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/room_and_user_statistics.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/room_and_user_statistics.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/server_notices.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/server_notices.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/setup/forward_proxy.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/setup/forward_proxy.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/setup/installation.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/setup/installation.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>
@ -178,9 +178,9 @@ that your email address is probably <code>user@example.com</code> rather than
for most users.</p> for most users.</p>
<h4 id="docker-images-and-ansible-playbooks"><a class="header" href="#docker-images-and-ansible-playbooks">Docker images and Ansible playbooks</a></h4> <h4 id="docker-images-and-ansible-playbooks"><a class="header" href="#docker-images-and-ansible-playbooks">Docker images and Ansible playbooks</a></h4>
<p>There is an official synapse image available at <p>There is an official synapse image available at
<a href="https://hub.docker.com/r/matrixdotorg/synapse">https://hub.docker.com/r/matrixdotorg/synapse</a> or at <a href="https://ghcr.io/matrix-org/synapse"><code>ghcr.io/matrix-org/synapse</code></a> <a href="https://hub.docker.com/r/vectorim/synapse">https://hub.docker.com/r/vectorim/synapse</a> or at <a href="https://ghcr.io/element-hq/synapse"><code>ghcr.io/element-hq/synapse</code></a>
which can be used with the docker-compose file available at which can be used with the docker-compose file available at
<a href="https://github.com/matrix-org/synapse/tree/develop/contrib/docker">contrib/docker</a>. <a href="https://github.com/element-hq/synapse/tree/develop/contrib/docker">contrib/docker</a>.
Further information on this including configuration options is available in the README Further information on this including configuration options is available in the README
on hub.docker.com.</p> on hub.docker.com.</p>
<p>Alternatively, Andreas Peters (previously Silvio Fricke) has contributed a <p>Alternatively, Andreas Peters (previously Silvio Fricke) has contributed a
@ -197,6 +197,7 @@ For more details, see
<p>Matrix.org provides Debian/Ubuntu packages of Synapse, for the amd64 <p>Matrix.org provides Debian/Ubuntu packages of Synapse, for the amd64
architecture via <a href="https://packages.matrix.org/debian/">https://packages.matrix.org/debian/</a>.</p> architecture via <a href="https://packages.matrix.org/debian/">https://packages.matrix.org/debian/</a>.</p>
<p>To install the latest release:</p> <p>To install the latest release:</p>
<p>TODO UPDATE ALL THIS</p>
<pre><code class="language-sh">sudo apt install -y lsb-release wget apt-transport-https <pre><code class="language-sh">sudo apt install -y lsb-release wget apt-transport-https
sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
echo &quot;deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main&quot; | echo &quot;deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main&quot; |
@ -463,11 +464,11 @@ TLS-enabled listener like so:</li>
<ul> <ul>
<li> <li>
<p>You will also need to add the options <code>tls_certificate_path</code> and <p>You will also need to add the options <code>tls_certificate_path</code> and
<code>tls_private_key_path</code>. to your configuration file. You will need to manage provisioning of <code>tls_private_key_path</code>. to your configuration file. You will need to manage provisioning of
these certificates yourself.</p> these certificates yourself.</p>
</li> </li>
<li> <li>
<p>You can find more information about these options as well as how to configure synapse in the <p>You can find more information about these options as well as how to configure synapse in the
<a href="../usage/configuration/config_documentation.html">configuration manual</a>.</p> <a href="../usage/configuration/config_documentation.html">configuration manual</a>.</p>
<p>If you are using your own certificate, be sure to use a <code>.pem</code> file that <p>If you are using your own certificate, be sure to use a <code>.pem</code> file that
includes the full certificate chain including any intermediate certificates includes the full certificate chain including any intermediate certificates

View file

@ -124,10 +124,10 @@
<a href="../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/setup/turn/coturn.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/setup/turn/coturn.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/setup/turn/eturnal.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/setup/turn/eturnal.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/sso_mapping_providers.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/sso_mapping_providers.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>
@ -300,7 +300,7 @@ usually returned as part of the <a href="https://spec.matrix.org/latest/client-s
<h3 id="default-openid-mapping-provider"><a class="header" href="#default-openid-mapping-provider">Default OpenID Mapping Provider</a></h3> <h3 id="default-openid-mapping-provider"><a class="header" href="#default-openid-mapping-provider">Default OpenID Mapping Provider</a></h3>
<p>Synapse has a built-in OpenID mapping provider if a custom provider isn't <p>Synapse has a built-in OpenID mapping provider if a custom provider isn't
specified in the config. It is located at specified in the config. It is located at
<a href="https://github.com/matrix-org/synapse/blob/develop/synapse/handlers/oidc.py"><code>synapse.handlers.oidc.JinjaOidcMappingProvider</code></a>.</p> <a href="https://github.com/element.-hq/synapse/blob/develop/synapse/handlers/oidc.py"><code>synapse.handlers.oidc.JinjaOidcMappingProvider</code></a>.</p>
<h2 id="saml-mapping-providers"><a class="header" href="#saml-mapping-providers">SAML Mapping Providers</a></h2> <h2 id="saml-mapping-providers"><a class="header" href="#saml-mapping-providers">SAML Mapping Providers</a></h2>
<p>The SAML mapping provider can be customized by editing the <p>The SAML mapping provider can be customized by editing the
<a href="usage/configuration/config_documentation.html#saml2_config"><code>saml2_config.user_mapping_provider.module</code></a> <a href="usage/configuration/config_documentation.html#saml2_config"><code>saml2_config.user_mapping_provider.module</code></a>
@ -415,7 +415,7 @@ complete registration using methods from the <code>ModuleApi</code>.</p>
<h3 id="default-saml-mapping-provider"><a class="header" href="#default-saml-mapping-provider">Default SAML Mapping Provider</a></h3> <h3 id="default-saml-mapping-provider"><a class="header" href="#default-saml-mapping-provider">Default SAML Mapping Provider</a></h3>
<p>Synapse has a built-in SAML mapping provider if a custom provider isn't <p>Synapse has a built-in SAML mapping provider if a custom provider isn't
specified in the config. It is located at specified in the config. It is located at
<a href="https://github.com/matrix-org/synapse/blob/develop/synapse/handlers/saml.py"><code>synapse.handlers.saml.DefaultSamlMappingProvider</code></a>.</p> <a href="https://github.com/element.-hq/synapse/blob/develop/synapse/handlers/saml.py"><code>synapse.handlers.saml.DefaultSamlMappingProvider</code></a>.</p>
</main> </main>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/structured_logging.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/structured_logging.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/synctl_workers.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/synctl_workers.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../print.html" title="Print this book" aria-label="Print this book"> <a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/systemd-with-workers/README.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/systemd-with-workers/README.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>
@ -165,9 +165,9 @@ managing workers. It provides a <code>matrix-synapse</code> service for the mast
well as a <code>matrix-synapse-worker@</code> service template for any workers you well as a <code>matrix-synapse-worker@</code> service template for any workers you
require. Additionally, to group the required services, it sets up a require. Additionally, to group the required services, it sets up a
<code>matrix-synapse.target</code>.</p> <code>matrix-synapse.target</code>.</p>
<p>See the folder <a href="https://github.com/matrix-org/synapse/tree/develop/docs/systemd-with-workers/system/">system</a> <p>See the folder <a href="https://github.com/element.-hq/synapse/tree/develop/docs/systemd-with-workers/system/">system</a>
for the systemd unit files.</p> for the systemd unit files.</p>
<p>The folder <a href="https://github.com/matrix-org/synapse/tree/develop/docs/systemd-with-workers/workers/">workers</a> <p>The folder <a href="https://github.com/element.-hq/synapse/tree/develop/docs/systemd-with-workers/workers/">workers</a>
contains an example configuration for the <code>generic_worker</code> worker.</p> contains an example configuration for the <code>generic_worker</code> worker.</p>
<h2 id="synapse-configuration-files"><a class="header" href="#synapse-configuration-files">Synapse configuration files</a></h2> <h2 id="synapse-configuration-files"><a class="header" href="#synapse-configuration-files">Synapse configuration files</a></h2>
<p>See <a href="../workers.html">the worker documentation</a> for information on how to set up the <p>See <a href="../workers.html">the worker documentation</a> for information on how to set up the
@ -194,7 +194,7 @@ the provided <code>*.service</code> files accordingly.</p>
<h2 id="set-up"><a class="header" href="#set-up">Set up</a></h2> <h2 id="set-up"><a class="header" href="#set-up">Set up</a></h2>
<ol> <ol>
<li>Adjust synapse configuration files as above.</li> <li>Adjust synapse configuration files as above.</li>
<li>Copy the <code>*.service</code> and <code>*.target</code> files in <a href="https://github.com/matrix-org/synapse/tree/develop/docs/systemd-with-workers/system/">system</a> <li>Copy the <code>*.service</code> and <code>*.target</code> files in <a href="https://github.com/element.-hq/synapse/tree/develop/docs/systemd-with-workers/system/">system</a>
to <code>/etc/systemd/system</code>.</li> to <code>/etc/systemd/system</code>.</li>
<li>Run <code>systemctl daemon-reload</code> to tell systemd to load the new unit files.</li> <li>Run <code>systemctl daemon-reload</code> to tell systemd to load the new unit files.</li>
<li>Run <code>systemctl enable matrix-synapse.service</code>. This will configure the <li>Run <code>systemctl enable matrix-synapse.service</code>. This will configure the
@ -229,7 +229,7 @@ systemctl restart matrix-synapse.target
<h2 id="hardening"><a class="header" href="#hardening">Hardening</a></h2> <h2 id="hardening"><a class="header" href="#hardening">Hardening</a></h2>
<p><strong>Optional:</strong> If further hardening is desired, the file <p><strong>Optional:</strong> If further hardening is desired, the file
<code>override-hardened.conf</code> may be copied from <code>override-hardened.conf</code> may be copied from
<a href="https://github.com/matrix-org/synapse/tree/develop/contrib/systemd/">contrib/systemd/override-hardened.conf</a> <a href="https://github.com/element.-hq/synapse/tree/develop/contrib/systemd/">contrib/systemd/override-hardened.conf</a>
in this repository to the location in this repository to the location
<code>/etc/systemd/system/matrix-synapse.service.d/override-hardened.conf</code> (the <code>/etc/systemd/system/matrix-synapse.service.d/override-hardened.conf</code> (the
directory may have to be created). It enables certain sandboxing features in directory may have to be created). It enables certain sandboxing features in

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/tcp_replication.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/tcp_replication.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/templates.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/templates.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>
@ -162,7 +162,7 @@
<h1 id="templates"><a class="header" href="#templates">Templates</a></h1> <h1 id="templates"><a class="header" href="#templates">Templates</a></h1>
<p>Synapse uses parametrised templates to generate the content of emails it sends and <p>Synapse uses parametrised templates to generate the content of emails it sends and
webpages it shows to users.</p> webpages it shows to users.</p>
<p>By default, Synapse will use the templates listed <a href="https://github.com/matrix-org/synapse/tree/master/synapse/res/templates">here</a>. <p>By default, Synapse will use the templates listed <a href="https://github.com/element.-hq/synapse/tree/master/synapse/res/templates">here</a>.
Server admins can configure an additional directory for Synapse to look for templates Server admins can configure an additional directory for Synapse to look for templates
in, allowing them to specify custom templates:</p> in, allowing them to specify custom templates:</p>
<pre><code class="language-yaml">templates: <pre><code class="language-yaml">templates:
@ -285,7 +285,7 @@ and failure that a user will see when they confirm the password reset flow using
page above. page above.
When rendering, <code>password_reset_success.html</code> is given no variable, and When rendering, <code>password_reset_success.html</code> is given no variable, and
<code>password_reset_failure.html</code> is given a <code>failure_reason</code>, which contains the reason <code>password_reset_failure.html</code> is given a <code>failure_reason</code>, which contains the reason
for the password reset failure. </li> for the password reset failure.</li>
<li><code>registration_success.html</code> and <code>registration_failure.html</code>: HTML pages for success and <li><code>registration_success.html</code> and <code>registration_failure.html</code>: HTML pages for success and
failure that a user will see when they follow the link in an address verification email failure that a user will see when they follow the link in an address verification email
sent during registration. sent during registration.

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/turn-howto.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/turn-howto.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="print.html" title="Print this book" aria-label="Print this book"> <a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/upgrade.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/upgrade.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>
@ -276,12 +276,12 @@ date.</p>
<h1 id="upgrading-to-v1900"><a class="header" href="#upgrading-to-v1900">Upgrading to v1.90.0</a></h1> <h1 id="upgrading-to-v1900"><a class="header" href="#upgrading-to-v1900">Upgrading to v1.90.0</a></h1>
<h2 id="app-service-query-parameter-authorization-is-now-a-configuration-option"><a class="header" href="#app-service-query-parameter-authorization-is-now-a-configuration-option">App service query parameter authorization is now a configuration option</a></h2> <h2 id="app-service-query-parameter-authorization-is-now-a-configuration-option"><a class="header" href="#app-service-query-parameter-authorization-is-now-a-configuration-option">App service query parameter authorization is now a configuration option</a></h2>
<p>Synapse v1.81.0 deprecated application service authorization via query parameters as this is <p>Synapse v1.81.0 deprecated application service authorization via query parameters as this is
considered insecure - and from Synapse v1.71.0 forwards the application service token has also been sent via considered insecure - and from Synapse v1.71.0 forwards the application service token has also been sent via
<a href="https://spec.matrix.org/v1.6/application-service-api/#authorization">the <code>Authorization</code> header</a>], making the insecure <a href="https://spec.matrix.org/v1.6/application-service-api/#authorization">the <code>Authorization</code> header</a>], making the insecure
query parameter authorization redundant. Since removing the ability to continue to use query parameters could break query parameter authorization redundant. Since removing the ability to continue to use query parameters could break
backwards compatibility it has now been put behind a configuration option, <code>use_appservice_legacy_authorization</code>.<br /> backwards compatibility it has now been put behind a configuration option, <code>use_appservice_legacy_authorization</code>.
This option defaults to false, but can be activated by adding </p> This option defaults to false, but can be activated by adding</p>
<pre><code class="language-yaml">use_appservice_legacy_authorization: true <pre><code class="language-yaml">use_appservice_legacy_authorization: true
</code></pre> </code></pre>
<p>to your configuration.</p> <p>to your configuration.</p>
<h1 id="upgrading-to-v1890"><a class="header" href="#upgrading-to-v1890">Upgrading to v1.89.0</a></h1> <h1 id="upgrading-to-v1890"><a class="header" href="#upgrading-to-v1890">Upgrading to v1.89.0</a></h1>
@ -389,7 +389,7 @@ worker_listeners:
worker_log_config: /etc/matrix-synapse/generic-worker-log.yaml worker_log_config: /etc/matrix-synapse/generic-worker-log.yaml
</code></pre> </code></pre>
<p>Notes: </p> <p>Notes:</p>
<ul> <ul>
<li><code>tls</code> is optional but mirrors the functionality of <code>worker_replication_http_tls</code></li> <li><code>tls</code> is optional but mirrors the functionality of <code>worker_replication_http_tls</code></li>
</ul> </ul>
@ -452,8 +452,8 @@ and vice versa.</p>
<p>Once all workers are upgraded to v1.76 (or downgraded to v1.75), account data <p>Once all workers are upgraded to v1.76 (or downgraded to v1.75), account data
and device replication will resume as normal.</p> and device replication will resume as normal.</p>
<h2 id="minimum-version-of-poetry-is-now-132"><a class="header" href="#minimum-version-of-poetry-is-now-132">Minimum version of Poetry is now 1.3.2</a></h2> <h2 id="minimum-version-of-poetry-is-now-132"><a class="header" href="#minimum-version-of-poetry-is-now-132">Minimum version of Poetry is now 1.3.2</a></h2>
<p>The minimum supported version of Poetry is now 1.3.2 (previously 1.2.0, <a href="#upgrading-to-v1670">since <p>The minimum supported version of Poetry is now 1.3.2 (previously 1.2.0, <a href="#upgrading-to-v1670">since
Synapse 1.67</a>). If you have used <code>poetry install</code> to Synapse 1.67</a>). If you have used <code>poetry install</code> to
install Synapse from a source checkout, you should upgrade poetry: see its install Synapse from a source checkout, you should upgrade poetry: see its
<a href="https://python-poetry.org/docs/#installation">installation instructions</a>. <a href="https://python-poetry.org/docs/#installation">installation instructions</a>.
For all other installation methods, no acction is required.</p> For all other installation methods, no acction is required.</p>
@ -955,7 +955,7 @@ becomes stable.</p>
<p>As announced with the release of <a href="#deprecation-of-the-user_may_create_room_with_invites-module-callback">Synapse 1.47.0</a>, <p>As announced with the release of <a href="#deprecation-of-the-user_may_create_room_with_invites-module-callback">Synapse 1.47.0</a>,
the deprecated <code>user_may_create_room_with_invites</code> module callback has been removed.</p> the deprecated <code>user_may_create_room_with_invites</code> module callback has been removed.</p>
<p>Modules relying on it can instead implement <a href="https://matrix-org.github.io/synapse/latest/modules/spam_checker_callbacks.html#user_may_invite"><code>user_may_invite</code></a> <p>Modules relying on it can instead implement <a href="https://matrix-org.github.io/synapse/latest/modules/spam_checker_callbacks.html#user_may_invite"><code>user_may_invite</code></a>
and use the <a href="https://github.com/matrix-org/synapse/blob/872f23b95fa980a61b0866c1475e84491991fa20/synapse/module_api/__init__.py#L869-L876"><code>get_room_state</code></a> and use the <a href="https://github.com/element.-hq/synapse/blob/872f23b95fa980a61b0866c1475e84491991fa20/synapse/module_api/__init__.py#L869-L876"><code>get_room_state</code></a>
module API to infer whether the invite is happening while creating a room (see <a href="https://github.com/matrix-org/synapse-domain-rule-checker/blob/e7d092dd9f2a7f844928771dbfd9fd24c2332e48/synapse_domain_rule_checker/__init__.py#L56-L89">this function</a> module API to infer whether the invite is happening while creating a room (see <a href="https://github.com/matrix-org/synapse-domain-rule-checker/blob/e7d092dd9f2a7f844928771dbfd9fd24c2332e48/synapse_domain_rule_checker/__init__.py#L56-L89">this function</a>
as an example). Alternately, modules can also implement <a href="https://matrix-org.github.io/synapse/latest/modules/third_party_rules_callbacks.html#on_create_room"><code>on_create_room</code></a>.</p> as an example). Alternately, modules can also implement <a href="https://matrix-org.github.io/synapse/latest/modules/third_party_rules_callbacks.html#on_create_room"><code>on_create_room</code></a>.</p>
<h1 id="upgrading-to-v1520"><a class="header" href="#upgrading-to-v1520">Upgrading to v1.52.0</a></h1> <h1 id="upgrading-to-v1520"><a class="header" href="#upgrading-to-v1520">Upgrading to v1.52.0</a></h1>
@ -992,7 +992,7 @@ longer supported upstream.</p>
<p>The <code>user_may_create_room_with_invites</code> is deprecated and will be removed in a future <p>The <code>user_may_create_room_with_invites</code> is deprecated and will be removed in a future
version of Synapse. Modules implementing this callback can instead implement version of Synapse. Modules implementing this callback can instead implement
<a href="https://matrix-org.github.io/synapse/latest/modules/spam_checker_callbacks.html#user_may_invite"><code>user_may_invite</code></a> <a href="https://matrix-org.github.io/synapse/latest/modules/spam_checker_callbacks.html#user_may_invite"><code>user_may_invite</code></a>
and use the <a href="https://github.com/matrix-org/synapse/blob/872f23b95fa980a61b0866c1475e84491991fa20/synapse/module_api/__init__.py#L869-L876"><code>get_room_state</code></a> and use the <a href="https://github.com/element.-hq/synapse/blob/872f23b95fa980a61b0866c1475e84491991fa20/synapse/module_api/__init__.py#L869-L876"><code>get_room_state</code></a>
module API method to infer whether the invite is happening in the context of creating a module API method to infer whether the invite is happening in the context of creating a
room.</p> room.</p>
<p>We plan to remove this callback in January 2022.</p> <p>We plan to remove this callback in January 2022.</p>
@ -1025,8 +1025,8 @@ federation requests.</p>
<a href="https://matrix-org.github.io/synapse/latest/admin_api/rooms.html#delete-room-api">Delete Room API</a>.</p> <a href="https://matrix-org.github.io/synapse/latest/admin_api/rooms.html#delete-room-api">Delete Room API</a>.</p>
<h2 id="user-interactive-authentication-fallback-templates-can-now-display-errors"><a class="header" href="#user-interactive-authentication-fallback-templates-can-now-display-errors">User-interactive authentication fallback templates can now display errors</a></h2> <h2 id="user-interactive-authentication-fallback-templates-can-now-display-errors"><a class="header" href="#user-interactive-authentication-fallback-templates-can-now-display-errors">User-interactive authentication fallback templates can now display errors</a></h2>
<p>This may affect you if you make use of custom HTML templates for the <p>This may affect you if you make use of custom HTML templates for the
<a href="https://github.com/matrix-org/synapse/tree/develop/synapse/res/templates/recaptcha.html">reCAPTCHA (<code>synapse/res/templates/recaptcha.html</code>)</a> or <a href="https://github.com/element.-hq/synapse/tree/develop/synapse/res/templates/recaptcha.html">reCAPTCHA (<code>synapse/res/templates/recaptcha.html</code>)</a> or
<a href="https://github.com/matrix-org/synapse/tree/develop/synapse/res/templates/terms.html">terms (<code>synapse/res/templates/terms.html</code>)</a> fallback pages.</p> <a href="https://github.com/element.-hq/synapse/tree/develop/synapse/res/templates/terms.html">terms (<code>synapse/res/templates/terms.html</code>)</a> fallback pages.</p>
<p>The template is now provided an <code>error</code> variable if the authentication <p>The template is now provided an <code>error</code> variable if the authentication
process failed. See the default templates linked above for an example.</p> process failed. See the default templates linked above for an example.</p>
<h2 id="removal-of-out-of-date-email-pushers"><a class="header" href="#removal-of-out-of-date-email-pushers">Removal of out-of-date email pushers</a></h2> <h2 id="removal-of-out-of-date-email-pushers"><a class="header" href="#removal-of-out-of-date-email-pushers">Removal of out-of-date email pushers</a></h2>
@ -1410,7 +1410,7 @@ endpoint can be handled</p>
update your reverse proxy configuration to reflect this change.</p> update your reverse proxy configuration to reflect this change.</p>
<h2 id="new-html-templates"><a class="header" href="#new-html-templates">New HTML templates</a></h2> <h2 id="new-html-templates"><a class="header" href="#new-html-templates">New HTML templates</a></h2>
<p>A new HTML template, <p>A new HTML template,
<a href="https://github.com/matrix-org/synapse/blob/develop/synapse/res/templates/password_reset_confirmation.html">password_reset_confirmation.html</a>, <a href="https://github.com/element.-hq/synapse/blob/develop/synapse/res/templates/password_reset_confirmation.html">password_reset_confirmation.html</a>,
has been added to the <code>synapse/res/templates</code> directory. If you are has been added to the <code>synapse/res/templates</code> directory. If you are
using a custom template directory, you may want to copy the template using a custom template directory, you may want to copy the template
over and modify it.</p> over and modify it.</p>
@ -1490,7 +1490,7 @@ INSERT INTO background_updates (update_name, progress_json, depends_on) VALUES
is configured to use SSO and a custom is configured to use SSO and a custom
<code>sso_redirect_confirm_template_dir</code> configuration then these templates <code>sso_redirect_confirm_template_dir</code> configuration then these templates
will need to be copied from will need to be copied from
<a href="https://github.com/matrix-org/synapse/tree/develop/synapse/res/templates"><code>synapse/res/templates</code></a> into that directory.</p> <a href="https://github.com/element.-hq/synapse/tree/develop/synapse/res/templates"><code>synapse/res/templates</code></a> into that directory.</p>
<h2 id="synapse-sso-plugins-method-deprecation"><a class="header" href="#synapse-sso-plugins-method-deprecation">Synapse SSO Plugins Method Deprecation</a></h2> <h2 id="synapse-sso-plugins-method-deprecation"><a class="header" href="#synapse-sso-plugins-method-deprecation">Synapse SSO Plugins Method Deprecation</a></h2>
<p>Plugins using the <code>complete_sso_login</code> method of <p>Plugins using the <code>complete_sso_login</code> method of
<code>synapse.module_api.ModuleApi</code> should update to using the async/await <code>synapse.module_api.ModuleApi</code> should update to using the async/await
@ -1621,7 +1621,7 @@ included.</p>
<p>Synapse will expect these files to exist inside the configured template <p>Synapse will expect these files to exist inside the configured template
directory, and <strong>will fail to start</strong> if they are absent. To view the directory, and <strong>will fail to start</strong> if they are absent. To view the
default templates, see default templates, see
<a href="https://github.com/matrix-org/synapse/tree/master/synapse/res/templates">synapse/res/templates</a>.</p> <a href="https://github.com/element.-hq/synapse/tree/master/synapse/res/templates">synapse/res/templates</a>.</p>
<h2 id="3pid-verification-changes"><a class="header" href="#3pid-verification-changes">3pid verification changes</a></h2> <h2 id="3pid-verification-changes"><a class="header" href="#3pid-verification-changes">3pid verification changes</a></h2>
<p><strong>Note: As of this release, users will be unable to add phone numbers or <p><strong>Note: As of this release, users will be unable to add phone numbers or
email addresses to their accounts, without changes to the Synapse email addresses to their accounts, without changes to the Synapse

View file

@ -124,10 +124,10 @@
<a href="../../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/usage/administration/admin_api/background_updates.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/usage/administration/admin_api/background_updates.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/usage/administration/admin_api/federation.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/usage/administration/admin_api/federation.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/usage/administration/admin_api/README.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/usage/administration/admin_api/README.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/usage/administration/admin_api/registration_tokens.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/usage/administration/admin_api/registration_tokens.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/usage/administration/admin_faq.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/usage/administration/admin_faq.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/usage/administration/database_maintenance_tools.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/usage/administration/database_maintenance_tools.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/usage/administration/README.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/usage/administration/README.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/usage/administration/monitoring/reporting_homeserver_usage_statistics.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/usage/administration/monitoring/reporting_homeserver_usage_statistics.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/usage/administration/monthly_active_users.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/usage/administration/monthly_active_users.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/usage/administration/request_log.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/usage/administration/request_log.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>
@ -160,7 +160,7 @@
</div> </div>
<h1 id="request-log-format"><a class="header" href="#request-log-format">Request log format</a></h1> <h1 id="request-log-format"><a class="header" href="#request-log-format">Request log format</a></h1>
<p>HTTP request logs are written by synapse (see <a href="https://github.com/matrix-org/synapse/tree/develop/synapse/http/site.py"><code>synapse/http/site.py</code></a> for details).</p> <p>HTTP request logs are written by synapse (see <a href="https://github.com/element.-hq/synapse/tree/develop/synapse/http/site.py"><code>synapse/http/site.py</code></a> for details).</p>
<p>See the following for how to decode the dense data available from the default logging configuration.</p> <p>See the following for how to decode the dense data available from the default logging configuration.</p>
<pre><code>2020-10-01 12:00:00,000 - synapse.access.http.8008 - 311 - INFO - PUT-1000- 192.168.0.1 - 8008 - {another-matrix-server.com} Processed request: 0.100sec/-0.000sec (0.000sec, 0.000sec) (0.001sec/0.090sec/3) 11B !200 &quot;PUT /_matrix/federation/v1/send/1600000000000 HTTP/1.1&quot; &quot;Synapse/1.20.1&quot; [0 dbevts] <pre><code>2020-10-01 12:00:00,000 - synapse.access.http.8008 - 311 - INFO - PUT-1000- 192.168.0.1 - 8008 - {another-matrix-server.com} Processed request: 0.100sec/-0.000sec (0.000sec, 0.000sec) (0.001sec/0.090sec/3) 11B !200 &quot;PUT /_matrix/federation/v1/send/1600000000000 HTTP/1.1&quot; &quot;Synapse/1.20.1&quot; [0 dbevts]
-AAAAAAAAAAAAAAAAAAAAA- -BBBBBBBBBBBBBBBBBBBBBB- -C- -DD- -EEEEEE- -FFFFFFFFF- -GG- -HHHHHHHHHHHHHHHHHHHHHHH- -IIIIII- -JJJJJJJ- -KKKKKK-, -LLLLLL- -MMMMMMM- -NNNNNN- O -P- -QQ- -RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR- -SSSSSSSSSSSS- -TTTTTT- -AAAAAAAAAAAAAAAAAAAAA- -BBBBBBBBBBBBBBBBBBBBBB- -C- -DD- -EEEEEE- -FFFFFFFFF- -GG- -HHHHHHHHHHHHHHHHHHHHHHH- -IIIIII- -JJJJJJJ- -KKKKKK-, -LLLLLL- -MMMMMMM- -NNNNNN- O -P- -QQ- -RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR- -SSSSSSSSSSSS- -TTTTTT-

View file

@ -124,10 +124,10 @@
<a href="../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/usage/administration/state_groups.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/usage/administration/state_groups.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/usage/administration/understanding_synapse_through_grafana_graphs.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/usage/administration/understanding_synapse_through_grafana_graphs.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>
@ -160,14 +160,14 @@
</div> </div>
<h2 id="understanding-synapse-through-grafana-graphs"><a class="header" href="#understanding-synapse-through-grafana-graphs">Understanding Synapse through Grafana graphs</a></h2> <h2 id="understanding-synapse-through-grafana-graphs"><a class="header" href="#understanding-synapse-through-grafana-graphs">Understanding Synapse through Grafana graphs</a></h2>
<p>It is possible to monitor much of the internal state of Synapse using <a href="https://prometheus.io">Prometheus</a> <p>It is possible to monitor much of the internal state of Synapse using <a href="https://prometheus.io">Prometheus</a>
metrics and <a href="https://grafana.com/">Grafana</a>. metrics and <a href="https://grafana.com/">Grafana</a>.
A guide for configuring Synapse to provide metrics is available <a href="../../metrics-howto.html">here</a> A guide for configuring Synapse to provide metrics is available <a href="../../metrics-howto.html">here</a>
and information on setting up Grafana is <a href="https://github.com/matrix-org/synapse/tree/master/contrib/grafana">here</a>. and information on setting up Grafana is <a href="https://github.com/element.-hq/synapse/tree/master/contrib/grafana">here</a>.
In this setup, Prometheus will periodically scrape the information Synapse provides and In this setup, Prometheus will periodically scrape the information Synapse provides and
store a record of it over time. Grafana is then used as an interface to query and store a record of it over time. Grafana is then used as an interface to query and
present this information through a series of pretty graphs.</p> present this information through a series of pretty graphs.</p>
<p>Once you have grafana set up, and assuming you're using <a href="https://github.com/matrix-org/synapse/blob/master/contrib/grafana/synapse.json">our grafana dashboard template</a>, look for the following graphs when debugging a slow/overloaded Synapse:</p> <p>Once you have grafana set up, and assuming you're using <a href="https://github.com/element.-hq/synapse/blob/master/contrib/grafana/synapse.json">our grafana dashboard template</a>, look for the following graphs when debugging a slow/overloaded Synapse:</p>
<h2 id="message-event-send-time"><a class="header" href="#message-event-send-time">Message Event Send Time</a></h2> <h2 id="message-event-send-time"><a class="header" href="#message-event-send-time">Message Event Send Time</a></h2>
<p><img src="https://user-images.githubusercontent.com/1342360/82239409-a1c8e900-9930-11ea-8081-e4614e0c63f4.png" alt="image" /></p> <p><img src="https://user-images.githubusercontent.com/1342360/82239409-a1c8e900-9930-11ea-8081-e4614e0c63f4.png" alt="image" /></p>
<p>This, along with the CPU and Memory graphs, is a good way to check the general health of your Synapse instance. It represents how long it takes for a user on your homeserver to send a message.</p> <p>This, along with the CPU and Memory graphs, is a good way to check the general health of your Synapse instance. It represents how long it takes for a user on your homeserver to send a message.</p>
@ -194,20 +194,20 @@ present this information through a series of pretty graphs.</p>
<p>This is quite a useful graph. It shows how many times Synapse attempts to retrieve a piece of data from a cache which the cache did not contain, thus resulting in a call to the database. We can see here that the <code>_get_joined_profile_from_event_id</code> cache is being requested a lot, and often the data we're after is not cached.</p> <p>This is quite a useful graph. It shows how many times Synapse attempts to retrieve a piece of data from a cache which the cache did not contain, thus resulting in a call to the database. We can see here that the <code>_get_joined_profile_from_event_id</code> cache is being requested a lot, and often the data we're after is not cached.</p>
<p>Cross-referencing this with the Eviction Rate graph, which shows that entries are being evicted from <code>_get_joined_profile_from_event_id</code> quite often:</p> <p>Cross-referencing this with the Eviction Rate graph, which shows that entries are being evicted from <code>_get_joined_profile_from_event_id</code> quite often:</p>
<p><img src="https://user-images.githubusercontent.com/1342360/82240766-de95df80-9932-11ea-8c15-5acfc57c48da.png" alt="image" /></p> <p><img src="https://user-images.githubusercontent.com/1342360/82240766-de95df80-9932-11ea-8c15-5acfc57c48da.png" alt="image" /></p>
<p>we should probably consider raising the size of that cache by raising its cache factor (a multiplier value for the size of an individual cache). Information on doing so is available <a href="https://github.com/matrix-org/synapse/blob/ee421e524478c1ad8d43741c27379499c2f6135c/docs/sample_config.yaml#L608-L642">here</a> (note that the configuration of individual cache factors through the configuration file is available in Synapse v1.14.0+, whereas doing so through environment variables has been supported for a very long time). Note that this will increase Synapse's overall memory usage.</p> <p>we should probably consider raising the size of that cache by raising its cache factor (a multiplier value for the size of an individual cache). Information on doing so is available <a href="https://github.com/element.-hq/synapse/blob/ee421e524478c1ad8d43741c27379499c2f6135c/docs/sample_config.yaml#L608-L642">here</a> (note that the configuration of individual cache factors through the configuration file is available in Synapse v1.14.0+, whereas doing so through environment variables has been supported for a very long time). Note that this will increase Synapse's overall memory usage.</p>
<h2 id="forward-extremities"><a class="header" href="#forward-extremities">Forward Extremities</a></h2> <h2 id="forward-extremities"><a class="header" href="#forward-extremities">Forward Extremities</a></h2>
<p><img src="https://user-images.githubusercontent.com/1342360/82241440-13566680-9934-11ea-8b88-ba468db937ed.png" alt="image" /></p> <p><img src="https://user-images.githubusercontent.com/1342360/82241440-13566680-9934-11ea-8b88-ba468db937ed.png" alt="image" /></p>
<p>Forward extremities are the leaf events at the end of a DAG in a room, aka events that have no children. The more that exist in a room, the more <a href="https://spec.matrix.org/v1.1/server-server-api/#room-state-resolution">state resolution</a> that Synapse needs to perform (hint: it's an expensive operation). While Synapse has code to prevent too many of these existing at one time in a room, bugs can sometimes make them crop up again.</p> <p>Forward extremities are the leaf events at the end of a DAG in a room, aka events that have no children. The more that exist in a room, the more <a href="https://spec.matrix.org/v1.1/server-server-api/#room-state-resolution">state resolution</a> that Synapse needs to perform (hint: it's an expensive operation). While Synapse has code to prevent too many of these existing at one time in a room, bugs can sometimes make them crop up again.</p>
<p>If a room has &gt;10 forward extremities, it's worth checking which room is the culprit and potentially removing them using the SQL queries mentioned in <a href="https://github.com/matrix-org/synapse/issues/1760">#1760</a>.</p> <p>If a room has &gt;10 forward extremities, it's worth checking which room is the culprit and potentially removing them using the SQL queries mentioned in <a href="https://github.com/matrix-org/synapse/issues/1760">#1760</a>.</p>
<h2 id="garbage-collection"><a class="header" href="#garbage-collection">Garbage Collection</a></h2> <h2 id="garbage-collection"><a class="header" href="#garbage-collection">Garbage Collection</a></h2>
<p><img src="https://user-images.githubusercontent.com/1342360/82241911-da6ac180-9934-11ea-9a0d-a311fe22acd0.png" alt="image" /></p> <p><img src="https://user-images.githubusercontent.com/1342360/82241911-da6ac180-9934-11ea-9a0d-a311fe22acd0.png" alt="image" /></p>
<p>Large spikes in garbage collection times (bigger than shown here, I'm talking in the <p>Large spikes in garbage collection times (bigger than shown here, I'm talking in the
multiple seconds range), can cause lots of problems in Synapse performance. It's more an multiple seconds range), can cause lots of problems in Synapse performance. It's more an
indicator of problems, and a symptom of other problems though, so check other graphs for what might be causing it.</p> indicator of problems, and a symptom of other problems though, so check other graphs for what might be causing it.</p>
<h2 id="final-thoughts"><a class="header" href="#final-thoughts">Final Thoughts</a></h2> <h2 id="final-thoughts"><a class="header" href="#final-thoughts">Final Thoughts</a></h2>
<p>If you're still having performance problems with your Synapse instance and you've <p>If you're still having performance problems with your Synapse instance and you've
tried everything you can, it may just be a lack of system resources. Consider adding tried everything you can, it may just be a lack of system resources. Consider adding
more CPU and RAM, and make use of <a href="../../workers.html">worker mode</a> more CPU and RAM, and make use of <a href="../../workers.html">worker mode</a>
to make use of multiple CPU cores / multiple machines for your homeserver.</p> to make use of multiple CPU cores / multiple machines for your homeserver.</p>
</main> </main>

View file

@ -124,10 +124,10 @@
<a href="../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/usage/administration/useful_sql_for_admins.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/usage/administration/useful_sql_for_admins.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/usage/configuration/config_documentation.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/usage/configuration/config_documentation.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>
@ -1367,7 +1367,7 @@ caches:
</code></pre> </code></pre>
<p>If you are running multiple workers, you must individually update the worker <p>If you are running multiple workers, you must individually update the worker
config file and send this signal to each worker process.</p> config file and send this signal to each worker process.</p>
<p>If you're using the <a href="https://github.com/matrix-org/synapse/blob/develop/contrib/systemd/matrix-synapse.service">example systemd service</a> <p>If you're using the <a href="https://github.com/element.-hq/synapse/blob/develop/contrib/systemd/matrix-synapse.service">example systemd service</a>
file in Synapse's <code>contrib</code> directory, you can send a <code>SIGHUP</code> signal by using file in Synapse's <code>contrib</code> directory, you can send a <code>SIGHUP</code> signal by using
<code>systemctl reload matrix-synapse</code>.</p> <code>systemctl reload matrix-synapse</code>.</p>
<hr /> <hr />
@ -2445,7 +2445,7 @@ Defaults to false.</p>
<hr /> <hr />
<h3 id="sentry"><a class="header" href="#sentry"><code>sentry</code></a></h3> <h3 id="sentry"><a class="header" href="#sentry"><code>sentry</code></a></h3>
<p>Use this option to enable sentry integration. Provide the DSN assigned to you by sentry <p>Use this option to enable sentry integration. Provide the DSN assigned to you by sentry
with the <code>dsn</code> setting. </p> with the <code>dsn</code> setting.</p>
<p>An optional <code>environment</code> field can be used to specify an environment. This allows <p>An optional <code>environment</code> field can be used to specify an environment. This allows
for log maintenance based on different environments, ensuring better organization for log maintenance based on different environments, ensuring better organization
and analysis..</p> and analysis..</p>

View file

@ -124,10 +124,10 @@
<a href="../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/usage/configuration/homeserver_sample_config.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/usage/configuration/homeserver_sample_config.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/usage/configuration/README.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/usage/configuration/README.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/usage/configuration/logging_sample_config.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/usage/configuration/logging_sample_config.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/usage/configuration/user_authentication/README.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/usage/configuration/user_authentication/README.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/usage/configuration/user_authentication/refresh_tokens.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/usage/configuration/user_authentication/refresh_tokens.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../../../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/usage/configuration/user_authentication/single_sign_on/cas.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/usage/configuration/user_authentication/single_sign_on/cas.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../../../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/usage/configuration/user_authentication/single_sign_on/README.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/usage/configuration/user_authentication/single_sign_on/README.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

View file

@ -124,10 +124,10 @@
<a href="../../../../print.html" title="Print this book" aria-label="Print this book"> <a href="../../../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i> <i id="print-button" class="fa fa-print"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse" title="Git repository" aria-label="Git repository"> <a href="https://github.com/element-hq/synapse" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i> <i id="git-repository-button" class="fa fa-github"></i>
</a> </a>
<a href="https://github.com/matrix-org/synapse/edit/develop/docs/usage/configuration/user_authentication/single_sign_on/saml.md" title="Suggest an edit" aria-label="Suggest an edit"> <a href="https://github.com/element-hq/synapse/edit/develop/docs/usage/configuration/user_authentication/single_sign_on/saml.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i> <i id="git-edit-button" class="fa fa-edit"></i>
</a> </a>
</div> </div>

Some files were not shown because too many files have changed in this diff Show more