diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md
index 16720bceb5..744a076ef1 100644
--- a/docs/SUMMARY.md
+++ b/docs/SUMMARY.md
@@ -5,11 +5,11 @@
# Setup
- [Installation](setup/installation.md)
- - [Using Postgres](postgres.md)
- - [Configuring a Reverse Proxy](reverse_proxy.md)
+ - [Using Postgres](setup/postgres.md)
+ - [Configuring a Reverse Proxy](setup/reverse_proxy.md)
- [Configuring a Forward/Outbound Proxy](setup/forward_proxy.md)
- - [Configuring a Turn Server](turn-howto.md)
- - [Delegation](delegate.md)
+ - [Configuring a Turn Server](setup/turn-howto.md)
+ - [Delegation](setup/delegate.md)
# Upgrading
- [Upgrading between Synapse Versions](upgrade.md)
diff --git a/docs/federate.md b/docs/federate.md
index df4c87da51..285473362f 100644
--- a/docs/federate.md
+++ b/docs/federate.md
@@ -14,7 +14,7 @@ you set the `server_name` to match your machine's public DNS hostname.
For this default configuration to work, you will need to listen for TLS
connections on port 8448. The preferred way to do that is by using a
-reverse proxy: see [the reverse proxy documentation](reverse_proxy.md) for instructions
+reverse proxy: see [the reverse proxy documentation](setup/reverse_proxy.md) for instructions
on how to correctly set one up.
In some cases you might not want to run Synapse on the machine that has
@@ -23,7 +23,7 @@ traffic to use a different port than 8448. For example, you might want to
have your user names look like `@user:example.com`, but you want to run
Synapse on `synapse.example.com` on port 443. This can be done using
delegation, which allows an admin to control where federation traffic should
-be sent. See [the delegation documentation](delegate.md) for instructions on how to set this up.
+be sent. See [the delegation documentation](setup/delegate.md) for instructions on how to set this up.
Once federation has been configured, you should be able to join a room over
federation. A good place to start is `#synapse:matrix.org` - a room for
@@ -44,7 +44,7 @@ a complicated dance which requires connections in both directions).
Another common problem is that people on other servers can't join rooms that
you invite them to. This can be caused by an incorrectly-configured reverse
-proxy: see [the reverse proxy documentation](reverse_proxy.md) for instructions on how
+proxy: see [the reverse proxy documentation](setup/reverse_proxy.md) for instructions on how
to correctly configure a reverse proxy.
### Known issues
diff --git a/docs/other/running_synapse_on_single_board_computers.md b/docs/other/running_synapse_on_single_board_computers.md
index dcf96f0056..b137537bf6 100644
--- a/docs/other/running_synapse_on_single_board_computers.md
+++ b/docs/other/running_synapse_on_single_board_computers.md
@@ -20,7 +20,7 @@ Joining a "large", federated room will initially fail with the below message in

-This is [#1211](https://github.com/matrix-org/synapse/issues/1211) and will also hopefully be mitigated by peeking [matrix-org/matrix-doc#2753](https://github.com/matrix-org/matrix-doc/pull/2753) so at least you don't need to wait for a join to complete before finding out if it's the kind of room you want. Note that you should first disable presence, otherwise it'll just make the situation worse [#3120](https://github.com/matrix-org/synapse/issues/3120). There is a lot of database interaction too, so make sure you've [migrated your data](../postgres.md) from the default sqlite to postgresql. Personally, I recommend patience - once the initial join is complete there's rarely any issues with actually interacting with the room, but if you like you can just block "large" rooms entirely.
+This is [#1211](https://github.com/matrix-org/synapse/issues/1211) and will also hopefully be mitigated by peeking [matrix-org/matrix-doc#2753](https://github.com/matrix-org/matrix-doc/pull/2753) so at least you don't need to wait for a join to complete before finding out if it's the kind of room you want. Note that you should first disable presence, otherwise it'll just make the situation worse [#3120](https://github.com/matrix-org/synapse/issues/3120). There is a lot of database interaction too, so make sure you've [migrated your data](../setup/postgres.md) from the default sqlite to postgresql. Personally, I recommend patience - once the initial join is complete there's rarely any issues with actually interacting with the room, but if you like you can just block "large" rooms entirely.
### Sessions
diff --git a/docs/delegate.md b/docs/setup/delegate.md
index ee9cbb3b1c..ee9cbb3b1c 100644
--- a/docs/delegate.md
+++ b/docs/setup/delegate.md
diff --git a/docs/setup/installation.md b/docs/setup/installation.md
index dcd8f17c5e..8d4edbf0a0 100644
--- a/docs/setup/installation.md
+++ b/docs/setup/installation.md
@@ -392,7 +392,7 @@ instead. Advantages include:
- allowing the DB to be run on separate hardware
For information on how to install and use PostgreSQL in Synapse, please see
-[Using Postgres](../postgres.md)
+[Using Postgres](postgres.md)
SQLite is only acceptable for testing purposes. SQLite should not be used in
a production server. Synapse will perform poorly when using
@@ -407,7 +407,7 @@ over HTTPS.
The recommended way to do so is to set up a reverse proxy on port
`8448`. You can find documentation on doing so in
-[the reverse proxy documentation](../reverse_proxy.md).
+[the reverse proxy documentation](reverse_proxy.md).
Alternatively, you can configure Synapse to expose an HTTPS port. To do
so, you will need to edit `homeserver.yaml`, as follows:
@@ -553,7 +553,7 @@ it can register users, including admin accounts, on your server even if
### Setting up a TURN server
For reliable VoIP calls to be routed via this homeserver, you MUST configure
-a TURN server. See [TURN setup](../turn-howto.md) for details.
+a TURN server. See [TURN setup](turn-howto.md) for details.
### URL previews
diff --git a/docs/postgres.md b/docs/setup/postgres.md
index f2519f6b0a..534f6f58fb 100644
--- a/docs/postgres.md
+++ b/docs/setup/postgres.md
@@ -8,14 +8,14 @@ Synapse will require the python postgres client library in order to
connect to a postgres database.
- If you are using the [matrix.org debian/ubuntu
- packages](setup/installation.md#matrixorg-packages), the necessary python
+ packages](installation.md#matrixorg-packages), the necessary python
library will already be installed, but you will need to ensure the
low-level postgres library is installed, which you can do with
`apt install libpq5`.
- For other pre-built packages, please consult the documentation from
the relevant package.
- If you installed synapse [in a
- virtualenv](setup/installation.md#installing-from-source), you can install
+ virtualenv](installation.md#installing-from-source), you can install
the library with:
~/synapse/env/bin/pip install "matrix-synapse[postgres]"
diff --git a/docs/reverse_proxy.md b/docs/setup/reverse_proxy.md
index 4e7a1d4435..4e7a1d4435 100644
--- a/docs/reverse_proxy.md
+++ b/docs/setup/reverse_proxy.md
diff --git a/docs/turn-howto.md b/docs/setup/turn-howto.md
index 37a311ad9c..37a311ad9c 100644
--- a/docs/turn-howto.md
+++ b/docs/setup/turn-howto.md
diff --git a/docs/upgrade.md b/docs/upgrade.md
index b81385b191..b394d0c163 100644
--- a/docs/upgrade.md
+++ b/docs/upgrade.md
@@ -1031,7 +1031,7 @@ by the client.
Synapse also requires the `Host` header to be preserved.
-See the [reverse proxy documentation](reverse_proxy.md), where the
+See the [reverse proxy documentation](setup/reverse_proxy.md), where the
example configurations have been updated to show how to set these
headers.
@@ -1280,7 +1280,7 @@ acts the same as the `http_client` argument previously passed to
## Forwarding `/_synapse/client` through your reverse proxy
-The [reverse proxy documentation](reverse_proxy.md)
+The [reverse proxy documentation](setup/reverse_proxy.md)
has been updated to include reverse proxy directives for
`/_synapse/client/*` endpoints. As the user password reset flow now uses
endpoints under this prefix, **you must update your reverse proxy
@@ -1482,7 +1482,7 @@ participating in many rooms.
omitting the `CONCURRENTLY` keyword. Note however that this
operation may in itself cause Synapse to stop running for some time.
Synapse admins are reminded that [SQLite is not recommended for use
- outside a test environment](postgres.md).
+ outside a test environment](setup/postgres.md).
3. Once the index has been created, the `SELECT` query in step 1 above
should complete quickly. It is therefore safe to upgrade to Synapse
@@ -1500,7 +1500,7 @@ participating in many rooms.
Synapse will now log a warning on start up if used with a PostgreSQL
database that has a non-recommended locale set.
-See [Postgres](postgres.md) for details.
+See [Postgres](setup/postgres.md) for details.
# Upgrading to v1.8.0
diff --git a/docs/usage/administration/admin_faq.md b/docs/usage/administration/admin_faq.md
index 7ba5a83f04..e349a4e34f 100644
--- a/docs/usage/administration/admin_faq.md
+++ b/docs/usage/administration/admin_faq.md
@@ -122,7 +122,7 @@ Help!! Synapse is slow and eats all my RAM/CPU!
-----------------------------------------------
First, ensure you are running the latest version of Synapse, using Python 3
-with a [PostgreSQL database](../../postgres.md).
+with a [PostgreSQL database](../../setup/postgres.md).
Synapse's architecture is quite RAM hungry currently - we deliberately
cache a lot of recent room data and metadata in RAM in order to speed up
diff --git a/docs/usage/configuration/config_documentation.md b/docs/usage/configuration/config_documentation.md
index d81eda52c1..65025d3840 100644
--- a/docs/usage/configuration/config_documentation.md
+++ b/docs/usage/configuration/config_documentation.md
@@ -115,7 +115,7 @@ usernames on your server would be in the format `@user:example.com`
In most cases you should avoid using a matrix specific subdomain such as
matrix.example.com or synapse.example.com as the `server_name` for the same
reasons you wouldn't use user@email.example.com as your email address.
-See [here](../../delegate.md)
+See [here](../../setup/delegate.md)
for information on how to host Synapse on a subdomain while preserving
a clean `server_name`.
@@ -179,7 +179,7 @@ This will tell other servers to send traffic to port 443 instead.
This option currently defaults to false.
-See [Delegation of incoming federation traffic](../../delegate.md) for more
+See [Delegation of incoming federation traffic](../../setup/delegate.md) for more
information.
Example configuration:
@@ -434,14 +434,14 @@ Sub-options for each listener include:
* `tls`: set to true to enable TLS for this listener. Will use the TLS key/cert specified in tls_private_key_path / tls_certificate_path.
* `x_forwarded`: Only valid for an 'http' listener. Set to true to use the X-Forwarded-For header as the client IP. Useful when Synapse is
- behind a [reverse-proxy](../../reverse_proxy.md).
+ behind a [reverse-proxy](../../setup/reverse_proxy.md).
* `request_id_header`: The header extracted from each incoming request that is
used as the basis for the request ID. The request ID is used in
[logs](../administration/request_log.md#request-log-format) and tracing to
correlate and match up requests. When unset, Synapse will automatically
generate sequential request IDs. This option is useful when Synapse is behind
- a [reverse-proxy](../../reverse_proxy.md).
+ a [reverse-proxy](../../setup/reverse_proxy.md).
_Added in Synapse 1.68.0._
@@ -1205,7 +1205,7 @@ Associated sub-options:
* `allow_unsafe_locale` is an option specific to Postgres. Under the default behavior, Synapse will refuse to
start if the postgres db is set to a non-C locale. You can override this behavior (which is *not* recommended)
by setting `allow_unsafe_locale` to true. Note that doing so may corrupt your database. You can find more information
- [here](../../postgres.md#fixing-incorrect-collate-or-ctype) and [here](https://wiki.postgresql.org/wiki/Locale_data_changes).
+ [here](../../setup/postgres.md#fixing-incorrect-collate-or-ctype) and [here](https://wiki.postgresql.org/wiki/Locale_data_changes).
* `args` gives options which are passed through to the database engine,
except for options starting with `cp_`, which are used to configure the Twisted
@@ -1215,7 +1215,7 @@ Associated sub-options:
* for [the connection pool](https://twistedmatrix.com/documents/current/api/twisted.enterprise.adbapi.ConnectionPool.html#__init__)
For more information on using Synapse with Postgres,
-see [here](../../postgres.md).
+see [here](../../setup/postgres.md).
Example SQLite configuration:
```yaml
@@ -1626,7 +1626,7 @@ The largest allowed upload size in bytes.
If you are using a reverse proxy you may also need to set this value in
your reverse proxy's config. Defaults to 50M. Notably Nginx has a small max body size by default.
-See [here](../../reverse_proxy.md) for more on using a reverse proxy with Synapse.
+See [here](../../setup/reverse_proxy.md) for more on using a reverse proxy with Synapse.
Example configuration:
```yaml
diff --git a/docs/workers.md b/docs/workers.md
index c27b3f8bd5..3137ef0981 100644
--- a/docs/workers.md
+++ b/docs/workers.md
@@ -68,7 +68,7 @@ https://hub.docker.com/r/matrixdotorg/synapse/.
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
the correct worker, or to the main synapse instance. See
-[the reverse proxy documentation](reverse_proxy.md) for information on setting up a reverse
+[the reverse proxy documentation](setup/reverse_proxy.md) for information on setting up a reverse
proxy.
When using workers, each worker process has its own configuration file which
|