mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-25 15:53:09 -06:00
Merge branch 'master' into v0.2.0
This commit is contained in:
commit
e5ad378df6
|
|
@ -6,6 +6,7 @@ ARG component=monolith
|
||||||
ENV entrypoint=${component}
|
ENV entrypoint=${component}
|
||||||
|
|
||||||
COPY --from=base /build/bin/${component} /usr/bin
|
COPY --from=base /build/bin/${component} /usr/bin
|
||||||
|
COPY --from=base /build/bin/goose /usr/bin
|
||||||
|
|
||||||
VOLUME /etc/dendrite
|
VOLUME /etc/dendrite
|
||||||
WORKDIR /etc/dendrite
|
WORKDIR /etc/dendrite
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ version: "3.4"
|
||||||
services:
|
services:
|
||||||
monolith:
|
monolith:
|
||||||
hostname: monolith
|
hostname: monolith
|
||||||
image: matrixdotorg/dendrite:monolith
|
image: matrixdotorg/dendrite-monolith:latest
|
||||||
command: [
|
command: [
|
||||||
"--config=dendrite.yaml",
|
"--config=dendrite.yaml",
|
||||||
"--tls-cert=server.crt",
|
"--tls-cert=server.crt",
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,8 @@
|
||||||
version: "3.4"
|
version: "3.4"
|
||||||
services:
|
services:
|
||||||
client_api_proxy:
|
|
||||||
hostname: client_api_proxy
|
|
||||||
image: matrixdotorg/dendrite:clientproxy
|
|
||||||
command: [
|
|
||||||
"--bind-address=:8008",
|
|
||||||
"--client-api-server-url=http://client_api:8071",
|
|
||||||
"--sync-api-server-url=http://sync_api:8073",
|
|
||||||
"--media-api-server-url=http://media_api:8074"
|
|
||||||
]
|
|
||||||
volumes:
|
|
||||||
- ./config:/etc/dendrite
|
|
||||||
networks:
|
|
||||||
- internal
|
|
||||||
depends_on:
|
|
||||||
- sync_api
|
|
||||||
- client_api
|
|
||||||
- media_api
|
|
||||||
ports:
|
|
||||||
- "8008:8008"
|
|
||||||
|
|
||||||
client_api:
|
client_api:
|
||||||
hostname: client_api
|
hostname: client_api
|
||||||
image: matrixdotorg/dendrite:clientapi
|
image: matrixdotorg/dendrite-clientapi:latest
|
||||||
command: [
|
command: [
|
||||||
"--config=dendrite.yaml"
|
"--config=dendrite.yaml"
|
||||||
]
|
]
|
||||||
|
|
@ -34,7 +14,7 @@ services:
|
||||||
|
|
||||||
media_api:
|
media_api:
|
||||||
hostname: media_api
|
hostname: media_api
|
||||||
image: matrixdotorg/dendrite:mediaapi
|
image: matrixdotorg/dendrite-mediaapi:latest
|
||||||
command: [
|
command: [
|
||||||
"--config=dendrite.yaml"
|
"--config=dendrite.yaml"
|
||||||
]
|
]
|
||||||
|
|
@ -45,7 +25,7 @@ services:
|
||||||
|
|
||||||
sync_api:
|
sync_api:
|
||||||
hostname: sync_api
|
hostname: sync_api
|
||||||
image: matrixdotorg/dendrite:syncapi
|
image: matrixdotorg/dendrite-syncapi:latest
|
||||||
command: [
|
command: [
|
||||||
"--config=dendrite.yaml"
|
"--config=dendrite.yaml"
|
||||||
]
|
]
|
||||||
|
|
@ -56,7 +36,7 @@ services:
|
||||||
|
|
||||||
room_server:
|
room_server:
|
||||||
hostname: room_server
|
hostname: room_server
|
||||||
image: matrixdotorg/dendrite:roomserver
|
image: matrixdotorg/dendrite-roomserver:latest
|
||||||
command: [
|
command: [
|
||||||
"--config=dendrite.yaml"
|
"--config=dendrite.yaml"
|
||||||
]
|
]
|
||||||
|
|
@ -67,7 +47,7 @@ services:
|
||||||
|
|
||||||
edu_server:
|
edu_server:
|
||||||
hostname: edu_server
|
hostname: edu_server
|
||||||
image: matrixdotorg/dendrite:eduserver
|
image: matrixdotorg/dendrite-eduserver:latest
|
||||||
command: [
|
command: [
|
||||||
"--config=dendrite.yaml"
|
"--config=dendrite.yaml"
|
||||||
]
|
]
|
||||||
|
|
@ -76,28 +56,9 @@ services:
|
||||||
networks:
|
networks:
|
||||||
- internal
|
- internal
|
||||||
|
|
||||||
federation_api_proxy:
|
|
||||||
hostname: federation_api_proxy
|
|
||||||
image: matrixdotorg/dendrite:federationproxy
|
|
||||||
command: [
|
|
||||||
"--bind-address=:8448",
|
|
||||||
"--federation-api-url=http://federation_api:8072",
|
|
||||||
"--media-api-server-url=http://media_api:8074"
|
|
||||||
]
|
|
||||||
volumes:
|
|
||||||
- ./config:/etc/dendrite
|
|
||||||
depends_on:
|
|
||||||
- federation_api
|
|
||||||
- federation_sender
|
|
||||||
- media_api
|
|
||||||
networks:
|
|
||||||
- internal
|
|
||||||
ports:
|
|
||||||
- "8448:8448"
|
|
||||||
|
|
||||||
federation_api:
|
federation_api:
|
||||||
hostname: federation_api
|
hostname: federation_api
|
||||||
image: matrixdotorg/dendrite:federationapi
|
image: matrixdotorg/dendrite-federationapi:latest
|
||||||
command: [
|
command: [
|
||||||
"--config=dendrite.yaml"
|
"--config=dendrite.yaml"
|
||||||
]
|
]
|
||||||
|
|
@ -108,7 +69,7 @@ services:
|
||||||
|
|
||||||
federation_sender:
|
federation_sender:
|
||||||
hostname: federation_sender
|
hostname: federation_sender
|
||||||
image: matrixdotorg/dendrite:federationsender
|
image: matrixdotorg/dendrite-federationsender:latest
|
||||||
command: [
|
command: [
|
||||||
"--config=dendrite.yaml"
|
"--config=dendrite.yaml"
|
||||||
]
|
]
|
||||||
|
|
@ -119,7 +80,7 @@ services:
|
||||||
|
|
||||||
key_server:
|
key_server:
|
||||||
hostname: key_server
|
hostname: key_server
|
||||||
image: matrixdotorg/dendrite:keyserver
|
image: matrixdotorg/dendrite-keyserver:latest
|
||||||
command: [
|
command: [
|
||||||
"--config=dendrite.yaml"
|
"--config=dendrite.yaml"
|
||||||
]
|
]
|
||||||
|
|
@ -130,7 +91,7 @@ services:
|
||||||
|
|
||||||
signing_key_server:
|
signing_key_server:
|
||||||
hostname: signing_key_server
|
hostname: signing_key_server
|
||||||
image: matrixdotorg/dendrite:signingkeyserver
|
image: matrixdotorg/dendrite-signingkeyserver:latest
|
||||||
command: [
|
command: [
|
||||||
"--config=dendrite.yaml"
|
"--config=dendrite.yaml"
|
||||||
]
|
]
|
||||||
|
|
@ -141,7 +102,7 @@ services:
|
||||||
|
|
||||||
user_api:
|
user_api:
|
||||||
hostname: user_api
|
hostname: user_api
|
||||||
image: matrixdotorg/dendrite:userapi
|
image: matrixdotorg/dendrite-userapi:latest
|
||||||
command: [
|
command: [
|
||||||
"--config=dendrite.yaml"
|
"--config=dendrite.yaml"
|
||||||
]
|
]
|
||||||
|
|
@ -152,7 +113,7 @@ services:
|
||||||
|
|
||||||
appservice_api:
|
appservice_api:
|
||||||
hostname: appservice_api
|
hostname: appservice_api
|
||||||
image: matrixdotorg/dendrite:appservice
|
image: matrixdotorg/dendrite-appservice:latest
|
||||||
command: [
|
command: [
|
||||||
"--config=dendrite.yaml"
|
"--config=dendrite.yaml"
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -2,20 +2,22 @@
|
||||||
|
|
||||||
cd $(git rev-parse --show-toplevel)
|
cd $(git rev-parse --show-toplevel)
|
||||||
|
|
||||||
docker build -f build/docker/Dockerfile -t matrixdotorg/dendrite:latest .
|
TAG=${1:-latest}
|
||||||
|
|
||||||
docker build -t matrixdotorg/dendrite:monolith --build-arg component=dendrite-monolith-server -f build/docker/Dockerfile.component .
|
echo "Building tag '${TAG}'"
|
||||||
|
|
||||||
docker build -t matrixdotorg/dendrite:appservice --build-arg component=dendrite-appservice-server -f build/docker/Dockerfile.component .
|
docker build -f build/docker/Dockerfile -t matrixdotorg/dendrite:${TAG} .
|
||||||
docker build -t matrixdotorg/dendrite:clientapi --build-arg component=dendrite-client-api-server -f build/docker/Dockerfile.component .
|
|
||||||
docker build -t matrixdotorg/dendrite:clientproxy --build-arg component=client-api-proxy -f build/docker/Dockerfile.component .
|
docker build -t matrixdotorg/dendrite-monolith:${TAG} --build-arg component=dendrite-monolith-server -f build/docker/Dockerfile.component .
|
||||||
docker build -t matrixdotorg/dendrite:eduserver --build-arg component=dendrite-edu-server -f build/docker/Dockerfile.component .
|
|
||||||
docker build -t matrixdotorg/dendrite:federationapi --build-arg component=dendrite-federation-api-server -f build/docker/Dockerfile.component .
|
docker build -t matrixdotorg/dendrite-appservice:${TAG} --build-arg component=dendrite-appservice-server -f build/docker/Dockerfile.component .
|
||||||
docker build -t matrixdotorg/dendrite:federationsender --build-arg component=dendrite-federation-sender-server -f build/docker/Dockerfile.component .
|
docker build -t matrixdotorg/dendrite-clientapi:${TAG} --build-arg component=dendrite-client-api-server -f build/docker/Dockerfile.component .
|
||||||
docker build -t matrixdotorg/dendrite:federationproxy --build-arg component=federation-api-proxy -f build/docker/Dockerfile.component .
|
docker build -t matrixdotorg/dendrite-eduserver:${TAG} --build-arg component=dendrite-edu-server -f build/docker/Dockerfile.component .
|
||||||
docker build -t matrixdotorg/dendrite:keyserver --build-arg component=dendrite-key-server -f build/docker/Dockerfile.component .
|
docker build -t matrixdotorg/dendrite-federationapi:${TAG} --build-arg component=dendrite-federation-api-server -f build/docker/Dockerfile.component .
|
||||||
docker build -t matrixdotorg/dendrite:mediaapi --build-arg component=dendrite-media-api-server -f build/docker/Dockerfile.component .
|
docker build -t matrixdotorg/dendrite-federationsender:${TAG} --build-arg component=dendrite-federation-sender-server -f build/docker/Dockerfile.component .
|
||||||
docker build -t matrixdotorg/dendrite:roomserver --build-arg component=dendrite-room-server -f build/docker/Dockerfile.component .
|
docker build -t matrixdotorg/dendrite-keyserver:${TAG} --build-arg component=dendrite-key-server -f build/docker/Dockerfile.component .
|
||||||
docker build -t matrixdotorg/dendrite:syncapi --build-arg component=dendrite-sync-api-server -f build/docker/Dockerfile.component .
|
docker build -t matrixdotorg/dendrite-mediaapi:${TAG} --build-arg component=dendrite-media-api-server -f build/docker/Dockerfile.component .
|
||||||
docker build -t matrixdotorg/dendrite:signingkeyserver --build-arg component=dendrite-signing-key-server -f build/docker/Dockerfile.component .
|
docker build -t matrixdotorg/dendrite-roomserver:${TAG} --build-arg component=dendrite-room-server -f build/docker/Dockerfile.component .
|
||||||
docker build -t matrixdotorg/dendrite:userapi --build-arg component=dendrite-user-api-server -f build/docker/Dockerfile.component .
|
docker build -t matrixdotorg/dendrite-syncapi:${TAG} --build-arg component=dendrite-sync-api-server -f build/docker/Dockerfile.component .
|
||||||
|
docker build -t matrixdotorg/dendrite-signingkeyserver:${TAG} --build-arg component=dendrite-signing-key-server -f build/docker/Dockerfile.component .
|
||||||
|
docker build -t matrixdotorg/dendrite-userapi:${TAG} --build-arg component=dendrite-user-api-server -f build/docker/Dockerfile.component .
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,19 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
docker pull matrixdotorg/dendrite:monolith
|
TAG=${1:-latest}
|
||||||
|
|
||||||
docker pull matrixdotorg/dendrite:appservice
|
echo "Pulling tag '${TAG}'"
|
||||||
docker pull matrixdotorg/dendrite:clientapi
|
|
||||||
docker pull matrixdotorg/dendrite:clientproxy
|
docker pull matrixdotorg/dendrite-monolith:${TAG}
|
||||||
docker pull matrixdotorg/dendrite:eduserver
|
|
||||||
docker pull matrixdotorg/dendrite:federationapi
|
docker pull matrixdotorg/dendrite-appservice:${TAG}
|
||||||
docker pull matrixdotorg/dendrite:federationsender
|
docker pull matrixdotorg/dendrite-clientapi:${TAG}
|
||||||
docker pull matrixdotorg/dendrite:federationproxy
|
docker pull matrixdotorg/dendrite-eduserver:${TAG}
|
||||||
docker pull matrixdotorg/dendrite:keyserver
|
docker pull matrixdotorg/dendrite-federationapi:${TAG}
|
||||||
docker pull matrixdotorg/dendrite:mediaapi
|
docker pull matrixdotorg/dendrite-federationsender:${TAG}
|
||||||
docker pull matrixdotorg/dendrite:roomserver
|
docker pull matrixdotorg/dendrite-keyserver:${TAG}
|
||||||
docker pull matrixdotorg/dendrite:syncapi
|
docker pull matrixdotorg/dendrite-mediaapi:${TAG}
|
||||||
docker pull matrixdotorg/dendrite:signingkeyserver
|
docker pull matrixdotorg/dendrite-roomserver:${TAG}
|
||||||
docker pull matrixdotorg/dendrite:userapi
|
docker pull matrixdotorg/dendrite-syncapi:${TAG}
|
||||||
|
docker pull matrixdotorg/dendrite-signingkeyserver:${TAG}
|
||||||
|
docker pull matrixdotorg/dendrite-userapi:${TAG}
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,19 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
docker push matrixdotorg/dendrite:monolith
|
TAG=${1:-latest}
|
||||||
|
|
||||||
docker push matrixdotorg/dendrite:appservice
|
echo "Pushing tag '${TAG}'"
|
||||||
docker push matrixdotorg/dendrite:clientapi
|
|
||||||
docker push matrixdotorg/dendrite:clientproxy
|
docker push matrixdotorg/dendrite-monolith:${TAG}
|
||||||
docker push matrixdotorg/dendrite:eduserver
|
|
||||||
docker push matrixdotorg/dendrite:federationapi
|
docker push matrixdotorg/dendrite-appservice:${TAG}
|
||||||
docker push matrixdotorg/dendrite:federationsender
|
docker push matrixdotorg/dendrite-clientapi:${TAG}
|
||||||
docker push matrixdotorg/dendrite:federationproxy
|
docker push matrixdotorg/dendrite-eduserver:${TAG}
|
||||||
docker push matrixdotorg/dendrite:keyserver
|
docker push matrixdotorg/dendrite-federationapi:${TAG}
|
||||||
docker push matrixdotorg/dendrite:mediaapi
|
docker push matrixdotorg/dendrite-federationsender:${TAG}
|
||||||
docker push matrixdotorg/dendrite:roomserver
|
docker push matrixdotorg/dendrite-keyserver:${TAG}
|
||||||
docker push matrixdotorg/dendrite:syncapi
|
docker push matrixdotorg/dendrite-mediaapi:${TAG}
|
||||||
docker push matrixdotorg/dendrite:signingkeyserver
|
docker push matrixdotorg/dendrite-roomserver:${TAG}
|
||||||
docker push matrixdotorg/dendrite:userapi
|
docker push matrixdotorg/dendrite-syncapi:${TAG}
|
||||||
|
docker push matrixdotorg/dendrite-signingkeyserver:${TAG}
|
||||||
|
docker push matrixdotorg/dendrite-userapi:${TAG}
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ brew services start kafka
|
||||||
### SQLite database setup
|
### SQLite database setup
|
||||||
|
|
||||||
Dendrite can use the built-in SQLite database engine for small setups.
|
Dendrite can use the built-in SQLite database engine for small setups.
|
||||||
The SQLite databases do not need to be preconfigured - Dendrite will
|
The SQLite databases do not need to be pre-built - Dendrite will
|
||||||
create them automatically at startup.
|
create them automatically at startup.
|
||||||
|
|
||||||
### Postgres database setup
|
### Postgres database setup
|
||||||
|
|
@ -109,7 +109,7 @@ Assuming that Postgres 9.5 (or later) is installed:
|
||||||
* Create the component databases:
|
* Create the component databases:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
for i in account device mediaapi syncapi roomserver signingkeyserver federationsender appservice e2ekey naffka; do
|
for i in mediaapi syncapi roomserver signingkeyserver federationsender appservice keyserver userapi_account userapi_device naffka; do
|
||||||
sudo -u postgres createdb -O dendrite dendrite_$i
|
sudo -u postgres createdb -O dendrite dendrite_$i
|
||||||
done
|
done
|
||||||
```
|
```
|
||||||
|
|
@ -135,8 +135,8 @@ Create config file, based on `dendrite-config.yaml`. Call it `dendrite.yaml`. Th
|
||||||
|
|
||||||
* The `server_name` entry to reflect the hostname of your Dendrite server
|
* The `server_name` entry to reflect the hostname of your Dendrite server
|
||||||
* The `database` lines with an updated connection string based on your
|
* The `database` lines with an updated connection string based on your
|
||||||
desired setup, e.g. replacing `component` with the name of the component:
|
desired setup, e.g. replacing `database` with the name of the database:
|
||||||
* For Postgres: `postgres://dendrite:password@localhost/component`
|
* For Postgres: `postgres://dendrite:password@localhost/database`
|
||||||
* For SQLite on disk: `file:component.db` or `file:///path/to/component.db`
|
* For SQLite on disk: `file:component.db` or `file:///path/to/component.db`
|
||||||
* Postgres and SQLite can be mixed and matched.
|
* Postgres and SQLite can be mixed and matched.
|
||||||
* The `use_naffka` option if using Naffka in a monolith deployment
|
* The `use_naffka` option if using Naffka in a monolith deployment
|
||||||
|
|
@ -147,6 +147,10 @@ then configuring `key_perspectives` (like `matrix.org` in the sample) can
|
||||||
help to improve reliability considerably by allowing your homeserver to fetch
|
help to improve reliability considerably by allowing your homeserver to fetch
|
||||||
public keys for dead homeservers from somewhere else.
|
public keys for dead homeservers from somewhere else.
|
||||||
|
|
||||||
|
**WARNING:** Dendrite supports running all components from the same database in
|
||||||
|
Postgres mode, but this is **NOT** a supported configuration with SQLite. When
|
||||||
|
using SQLite, all components **MUST** use their own database file.
|
||||||
|
|
||||||
## Starting a monolith server
|
## Starting a monolith server
|
||||||
|
|
||||||
It is possible to use Naffka as an in-process replacement to Kafka when using
|
It is possible to use Naffka as an in-process replacement to Kafka when using
|
||||||
|
|
@ -167,30 +171,17 @@ as shown below, it will also listen for HTTPS connections on port 8448.
|
||||||
|
|
||||||
The following contains scripts which will run all the required processes in order to point a Matrix client at Dendrite.
|
The following contains scripts which will run all the required processes in order to point a Matrix client at Dendrite.
|
||||||
|
|
||||||
### Client proxy
|
### nginx (or other reverse proxy)
|
||||||
|
|
||||||
This is what Matrix clients will talk to. If you use the script below, point
|
This is what your clients and federated hosts will talk to. It must forward
|
||||||
your client at `http://localhost:8008`.
|
requests onto the correct API server based on URL:
|
||||||
|
|
||||||
```bash
|
* `/_matrix/client` to the client API server
|
||||||
./bin/client-api-proxy \
|
* `/_matrix/federation` to the federation API server
|
||||||
--bind-address ":8008" \
|
* `/_matrix/key` to the federation API server
|
||||||
--client-api-server-url "http://localhost:7771" \
|
* `/_matrix/media` to the media API server
|
||||||
--sync-api-server-url "http://localhost:7773" \
|
|
||||||
--media-api-server-url "http://localhost:7774" \
|
|
||||||
```
|
|
||||||
|
|
||||||
### Federation proxy
|
See `docs/nginx/polylith-sample.conf` for a sample configuration.
|
||||||
|
|
||||||
This is what Matrix servers will talk to. This is only required if you want
|
|
||||||
to support federation.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
./bin/federation-api-proxy \
|
|
||||||
--bind-address ":8448" \
|
|
||||||
--federation-api-url "http://localhost:7772" \
|
|
||||||
--media-api-server-url "http://localhost:7774" \
|
|
||||||
```
|
|
||||||
|
|
||||||
### Client API server
|
### Client API server
|
||||||
|
|
||||||
|
|
@ -198,7 +189,7 @@ This is what implements CS API endpoints. Clients talk to this via the proxy in
|
||||||
order to send messages, create and join rooms, etc.
|
order to send messages, create and join rooms, etc.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./bin/dendrite-client-api-server --config=dendrite.yaml
|
./bin/dendrite-client-api-server --config dendrite.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
### Sync server
|
### Sync server
|
||||||
|
|
@ -239,7 +230,7 @@ contacted by other components. This includes the following components.
|
||||||
This is what implements the room DAG. Clients do not talk to this.
|
This is what implements the room DAG. Clients do not talk to this.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./bin/dendrite-room-server --config=dendrite.yaml
|
./bin/dendrite-room-server --config dendrite.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Federation sender
|
#### Federation sender
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue