mirror of
https://github.com/hoernschen/dendrite.git
synced 2024-12-27 23:48:27 +00:00
Version 0.1.0
Beta README (#1466) * Beta docs * More tweaks * More docs * Update README.md (#1497) * Call out missing features * Add CHANGES * Call out CHANGES * Update INSTALL.md * Update README.md Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
This commit is contained in:
parent
b12b7abcc0
commit
009401ad4d
3 changed files with 139 additions and 9 deletions
89
CHANGES.md
Normal file
89
CHANGES.md
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
# Dendrite 0.1.0 (2020-10-08)
|
||||||
|
|
||||||
|
First versioned release of Dendrite.
|
||||||
|
|
||||||
|
## Client-Server API Features
|
||||||
|
|
||||||
|
### Account registration and management
|
||||||
|
- Registration: By password only.
|
||||||
|
- Login: By password only. No fallback.
|
||||||
|
- Logout: Yes.
|
||||||
|
- Change password: Yes.
|
||||||
|
- Link email/msisdn to account: No.
|
||||||
|
- Deactivate account: Yes.
|
||||||
|
- Check if username is available: Yes.
|
||||||
|
- Account data: Yes.
|
||||||
|
- OpenID: No.
|
||||||
|
|
||||||
|
### Rooms
|
||||||
|
- Room creation: Yes, including presets.
|
||||||
|
- Joining rooms: Yes, including by alias or `?server_name=`.
|
||||||
|
- Event sending: Yes, including transaction IDs.
|
||||||
|
- Aliases: Yes.
|
||||||
|
- Published room directory: Yes.
|
||||||
|
- Kicking users: Yes.
|
||||||
|
- Banning users: Yes.
|
||||||
|
- Inviting users: Yes, but not third-party invites.
|
||||||
|
- Forgetting rooms: No.
|
||||||
|
- Room versions: All (v1 - v6)
|
||||||
|
- Tagging: Yes.
|
||||||
|
|
||||||
|
### User management
|
||||||
|
- User directory: Basic support.
|
||||||
|
- Ignoring users: No.
|
||||||
|
- Groups/Communities: No.
|
||||||
|
|
||||||
|
### Device management
|
||||||
|
- Creating devices: Yes.
|
||||||
|
- Deleting devices: Yes.
|
||||||
|
- Send-to-device messaging: Yes.
|
||||||
|
|
||||||
|
### Sync
|
||||||
|
- Filters: Timeline limit only. Rest unimplemented.
|
||||||
|
- Deprecated `/events` and `/initialSync`: No.
|
||||||
|
|
||||||
|
### Room events
|
||||||
|
- Typing: Yes.
|
||||||
|
- Receipts: No.
|
||||||
|
- Read Markers: No.
|
||||||
|
- Presence: No.
|
||||||
|
- Content repository (attachments): Yes.
|
||||||
|
- History visibility: No, defaults to `joined`.
|
||||||
|
- Push notifications: No.
|
||||||
|
- Event context: No.
|
||||||
|
- Reporting content: No.
|
||||||
|
|
||||||
|
### End-to-End Encryption
|
||||||
|
- Uploading device keys: Yes.
|
||||||
|
- Downloading device keys: Yes.
|
||||||
|
- Claiming one-time keys: Yes.
|
||||||
|
- Querying key changes: Yes.
|
||||||
|
- Cross-Signing: No.
|
||||||
|
|
||||||
|
### Misc
|
||||||
|
- Server-side search: No.
|
||||||
|
- Guest access: Partial.
|
||||||
|
- Room previews: No, partial support for Peeking via MSC2753.
|
||||||
|
- Third-Party networks: No.
|
||||||
|
- Server notices: No.
|
||||||
|
- Policy lists: No.
|
||||||
|
|
||||||
|
## Federation Features
|
||||||
|
- Querying keys (incl. notary): Yes.
|
||||||
|
- Server ACLs: Yes.
|
||||||
|
- Sending transactions: Yes.
|
||||||
|
- Joining rooms: Yes.
|
||||||
|
- Inviting to rooms: Yes, but not third-party invites.
|
||||||
|
- Leaving rooms: Yes.
|
||||||
|
- Content repository: Yes.
|
||||||
|
- Backfilling / get_missing_events: Yes.
|
||||||
|
- Retrieving state of the room (`/state` and `/state_ids`): Yes.
|
||||||
|
- Public rooms: Yes.
|
||||||
|
- Querying profile data: Yes.
|
||||||
|
- Device management: Yes.
|
||||||
|
- Send-to-Device messaging: Yes.
|
||||||
|
- Querying/Claiming E2E Keys: Yes.
|
||||||
|
- Typing: Yes.
|
||||||
|
- Presence: No.
|
||||||
|
- Receipts: No.
|
||||||
|
- OpenID: No.
|
50
README.md
50
README.md
|
@ -1,6 +1,28 @@
|
||||||
# Dendrite [![Build Status](https://badge.buildkite.com/4be40938ab19f2bbc4a6c6724517353ee3ec1422e279faf374.svg?branch=master)](https://buildkite.com/matrix-dot-org/dendrite) [![Dendrite](https://img.shields.io/matrix/dendrite:matrix.org.svg?label=%23dendrite%3Amatrix.org&logo=matrix&server_fqdn=matrix.org)](https://matrix.to/#/#dendrite:matrix.org) [![Dendrite Dev](https://img.shields.io/matrix/dendrite-dev:matrix.org.svg?label=%23dendrite-dev%3Amatrix.org&logo=matrix&server_fqdn=matrix.org)](https://matrix.to/#/#dendrite-dev:matrix.org)
|
# Dendrite [![Build Status](https://badge.buildkite.com/4be40938ab19f2bbc4a6c6724517353ee3ec1422e279faf374.svg?branch=master)](https://buildkite.com/matrix-dot-org/dendrite) [![Dendrite](https://img.shields.io/matrix/dendrite:matrix.org.svg?label=%23dendrite%3Amatrix.org&logo=matrix&server_fqdn=matrix.org)](https://matrix.to/#/#dendrite:matrix.org) [![Dendrite Dev](https://img.shields.io/matrix/dendrite-dev:matrix.org.svg?label=%23dendrite-dev%3Amatrix.org&logo=matrix&server_fqdn=matrix.org)](https://matrix.to/#/#dendrite-dev:matrix.org)
|
||||||
|
|
||||||
Dendrite is a second-generation Matrix homeserver written in Go!
|
Dendrite is a second-generation Matrix homeserver written in Go.
|
||||||
|
It intends to provide an **efficient**, **reliable** and **scalable** alternative to Synapse:
|
||||||
|
- Efficient: A small memory footprint with better baseline performance than an out-of-the-box Synapse.
|
||||||
|
- Reliable: Implements the Matrix specification as written, using the
|
||||||
|
[same test suite](https://github.com/matrix-org/sytest) as Synapse as well as
|
||||||
|
a [brand new Go test suite](https://github.com/matrix-org/complement).
|
||||||
|
- Scalable: can run on multiple machines and eventually scale to massive homeserver deployments.
|
||||||
|
|
||||||
|
|
||||||
|
As of October 2020, Dendrite has now entered **beta** which means:
|
||||||
|
- Dendrite is ready for early adopters. We recommend running in Monolith mode with a PostgreSQL database.
|
||||||
|
- Dendrite has periodic semver releases. We intend to release new versions as we land significant features.
|
||||||
|
- Dendrite supports database schema upgrades between releases. This means you should never lose your messages when upgrading Dendrite.
|
||||||
|
- Breaking changes will not occur on minor releases. This means you can safely upgrade Dendrite without modifying your database or config file.
|
||||||
|
|
||||||
|
This does not mean:
|
||||||
|
- Dendrite is bug-free. It has not yet been battle-tested in the real world and so will be error prone initially.
|
||||||
|
- All of the CS/Federation APIs are implemented. We are tracking progress via a script called 'Are We Synapse Yet?'. In particular,
|
||||||
|
read receipts, presence and push notifications are entirely missing from Dendrite. See [CHANGES.md](CHANGES.md) for updates.
|
||||||
|
- Dendrite is ready for massive homeserver deployments. You cannot shard each microservice, only run each one on a different machine.
|
||||||
|
|
||||||
|
Currently, we expect Dendrite to function well for small (10s/100s of users) homeserver deployments as well as P2P Matrix nodes in-browser or on mobile devices.
|
||||||
|
In the future, we will be able to scale up to gigantic servers (equivalent to matrix.org) via polylith mode.
|
||||||
|
|
||||||
Join us in:
|
Join us in:
|
||||||
|
|
||||||
|
@ -8,9 +30,26 @@ Join us in:
|
||||||
- **[#dendrite-dev:matrix.org](https://matrix.to/#/#dendrite-dev:matrix.org)** - The place for developers, where all Dendrite development discussion happens
|
- **[#dendrite-dev:matrix.org](https://matrix.to/#/#dendrite-dev:matrix.org)** - The place for developers, where all Dendrite development discussion happens
|
||||||
- **[#dendrite-alerts:matrix.org](https://matrix.to/#/#dendrite-alerts:matrix.org)** - Release notifications and important info, highly recommended for all Dendrite server admins
|
- **[#dendrite-alerts:matrix.org](https://matrix.to/#/#dendrite-alerts:matrix.org)** - Release notifications and important info, highly recommended for all Dendrite server admins
|
||||||
|
|
||||||
## Quick start
|
## Requirements
|
||||||
|
|
||||||
Requires Go 1.13+ and SQLite3 (Postgres is also supported):
|
To build Dendrite, you will need Go 1.13 or later.
|
||||||
|
|
||||||
|
For a usable federating Dendrite deployment, you will also need:
|
||||||
|
- A domain name (or subdomain)
|
||||||
|
- A valid TLS certificate issued by a trusted authority for that domain
|
||||||
|
- SRV records or a well-known file pointing to your deployment
|
||||||
|
|
||||||
|
Also recommended are:
|
||||||
|
- A PostgreSQL database engine, which will perform better than SQLite with many users and/or larger rooms
|
||||||
|
- A reverse proxy server, such as nginx, configured [like this sample](https://github.com/matrix-org/dendrite/blob/master/docs/nginx/monolith-sample.conf)
|
||||||
|
|
||||||
|
The [Federation Tester](https://federationtester.matrix.org) can be used to verify your deployment.
|
||||||
|
|
||||||
|
## Get started
|
||||||
|
|
||||||
|
If you wish to build a fully-federating Dendrite instance, see [INSTALL.md](docs/INSTALL.md). For running in Docker, see [build/docker](build/docker).
|
||||||
|
|
||||||
|
The following instructions are enough to get Dendrite started as a non-federating test deployment using self-signed certificates and SQLite databases:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ git clone https://github.com/matrix-org/dendrite
|
$ git clone https://github.com/matrix-org/dendrite
|
||||||
|
@ -30,14 +69,13 @@ $ go build ./cmd/dendrite-monolith-server
|
||||||
$ ./dendrite-monolith-server --tls-cert server.crt --tls-key server.key --config dendrite.yaml
|
$ ./dendrite-monolith-server --tls-cert server.crt --tls-key server.key --config dendrite.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
Then point your favourite Matrix client at `http://localhost:8008`. For full installation information, see
|
Then point your favourite Matrix client at `http://localhost:8008`.
|
||||||
[INSTALL.md](docs/INSTALL.md). For running in Docker, see [build/docker](build/docker).
|
|
||||||
|
|
||||||
## Progress
|
## Progress
|
||||||
|
|
||||||
We use a script called Are We Synapse Yet which checks Sytest compliance rates. Sytest is a black-box homeserver
|
We use a script called Are We Synapse Yet which checks Sytest compliance rates. Sytest is a black-box homeserver
|
||||||
test rig with around 900 tests. The script works out how many of these tests are passing on Dendrite and it
|
test rig with around 900 tests. The script works out how many of these tests are passing on Dendrite and it
|
||||||
updates with CI. As of August 2020 we're at around 52% CS API coverage and 65% Federation coverage, though check
|
updates with CI. As of October 2020 we're at around 56% CS API coverage and 77% Federation coverage, though check
|
||||||
CI for the latest numbers. In practice, this means you can communicate locally and via federation with Synapse
|
CI for the latest numbers. In practice, this means you can communicate locally and via federation with Synapse
|
||||||
servers such as matrix.org reasonably well. There's a long list of features that are not implemented, notably:
|
servers such as matrix.org reasonably well. There's a long list of features that are not implemented, notably:
|
||||||
- Receipts
|
- Receipts
|
||||||
|
|
|
@ -120,7 +120,10 @@ Assuming that Postgres 9.5 (or later) is installed:
|
||||||
|
|
||||||
Each Dendrite server requires unique server keys.
|
Each Dendrite server requires unique server keys.
|
||||||
|
|
||||||
Generate the self-signed SSL certificate for federation and the server signing key:
|
In order for an instance to federate correctly, you should have a valid
|
||||||
|
certificate issued by a trusted authority, and private key to match. If you
|
||||||
|
don't and just want to test locally, generate the self-signed SSL certificate
|
||||||
|
for federation and the server signing key:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./bin/generate-keys --private-key matrix_key.pem --tls-cert server.crt --tls-key server.key
|
./bin/generate-keys --private-key matrix_key.pem --tls-cert server.crt --tls-key server.key
|
||||||
|
@ -267,12 +270,12 @@ This manages end-to-end encryption keys for users.
|
||||||
./bin/dendrite-key-server --config dendrite.yaml
|
./bin/dendrite-key-server --config dendrite.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Server Key server
|
#### Signing key server
|
||||||
|
|
||||||
This manages signing keys for servers.
|
This manages signing keys for servers.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./bin/dendrite-server-key-api-server --config dendrite.yaml
|
./bin/dendrite-signing-key-server --config dendrite.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
#### EDU server
|
#### EDU server
|
||||||
|
|
Loading…
Reference in a new issue