dendrite/docs/INSTALL.md
Neil Alexander dd1b381789
Updates
2022-05-11 11:56:39 +01:00

2.5 KiB

title has_children nav_order
Installation true 2

Starting a polylith deployment

The following contains scripts which will run all the required processes in order to point a Matrix client at Dendrite.

nginx (or other reverse proxy)

This is what your clients and federated hosts will talk to. It must forward requests onto the correct API server based on URL:

  • /_matrix/client to the client API server
  • /_matrix/federation to the federation API server
  • /_matrix/key to the federation API server
  • /_matrix/media to the media API server

See docs/nginx/polylith-sample.conf for a sample configuration.

Client API server

This is what implements CS API endpoints. Clients talk to this via the proxy in order to send messages, create and join rooms, etc.

./bin/dendrite-polylith-multi --config=dendrite.yaml clientapi

Sync server

This is what implements /sync requests. Clients talk to this via the proxy in order to receive messages.

./bin/dendrite-polylith-multi --config=dendrite.yaml syncapi

Media server

This implements /media requests. Clients talk to this via the proxy in order to upload and retrieve media.

./bin/dendrite-polylith-multi --config=dendrite.yaml mediaapi

Federation API server

This implements the federation API. Servers talk to this via the proxy in order to send transactions. This is only required if you want to support federation.

./bin/dendrite-polylith-multi --config=dendrite.yaml federationapi

Internal components

This refers to components that are not directly spoken to by clients. They are only contacted by other components. This includes the following components.

Room server

This is what implements the room DAG. Clients do not talk to this.

./bin/dendrite-polylith-multi --config=dendrite.yaml roomserver

Appservice server

This sends events from the network to application services running locally. This is only required if you want to support running application services on your homeserver.

./bin/dendrite-polylith-multi --config=dendrite.yaml appservice

Key server

This manages end-to-end encryption keys for users.

./bin/dendrite-polylith-multi --config=dendrite.yaml keyserver

User server

This manages user accounts, device access tokens and user account data, amongst other things.

./bin/dendrite-polylith-multi --config=dendrite.yaml userapi