Matrix is an open standard and communication protocol for real-time communication. It aims to make real-time communication work seamlessly between different service providers, in the way that standard [Simple Mail Transfer Protocol](../../internet/SMTP.md) [email](../../internet/eMail.md) currently does for store-and-forward [email](../../internet/eMail.md) service, by allowing users with accounts at one communications service provider to communicate with users of a different service provider via online chat, voice over IP, and videotelephony. It therefore serves a similar purpose to protocols like XMPP, but is not based on any existing communication protocol.
By default matrix is federated and every user is located at a home server (`@user:matrix.example.org`) and can communicate with other users or join rooms.
## Setup
To setup a matrix server using dendrite follow these steps. As prerequisites you need a valid [domain](../../internet/Domain.md) name.
### Generate a key
```shell
mkdir -p ./config
docker run --rm --entrypoint="/usr/bin/generate-keys" -v $(pwd)/config:/mnt matrixdotorg/dendrite-monolith:latest -private-key /mnt/matrix_key.pem