b6ea1bc67a
* Move current work into single branch * Initial massaging of clientapi etc (not working yet) * Interfaces for accounts/devices databases * Duplicate postgres package for sqlite3 (no changes made to it yet) * Some keydb, accountdb, devicedb, common partition fixes, some more syncapi tweaking * Fix accounts DB, device DB * Update naffka dependency for SQLite * Naffka SQLite * Update naffka to latest master * SQLite support for federationsender * Mostly not-bad support for SQLite in syncapi (although there are problems where lots of events get classed incorrectly as backward extremities, probably because of IN/ANY clauses that are badly supported) * Update Dockerfile -> Go 1.13.7, add build-base (as gcc and friends are needed for SQLite) * Implement GET endpoints for account_data in clientapi * Nuke filtering for now... * Revert "Implement GET endpoints for account_data in clientapi" This reverts commit 4d80dff4583d278620d9b3ed437e9fcd8d4674ee. * Implement GET endpoints for account_data in clientapi (#861) * Implement GET endpoints for account_data in clientapi * Fix accountDB parameter * Remove fmt.Println * Fix insertAccountData SQLite query * Fix accountDB storage interfaces * Add empty push rules into account data on account creation (#862) * Put SaveAccountData into the right function this time * Not sure if roomserver is better or worse now * sqlite work * Allow empty last sent ID for the first event * sqlite: room creation works * Support sending messages * Nuke fmt.println * Move QueryVariadic etc into common, other device fixes * Fix some linter issues * Fix bugs * Fix some linting errors * Fix errcheck lint errors * Make naffka use postgres as fallback, fix couple of compile errors * What on earth happened to the /rooms/{roomID}/send/{eventType} routing Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com> |
||
---|---|---|
.. | ||
postgres | ||
services | ||
build.sh | ||
dendrite-docker.yml | ||
docker-compose.yml | ||
Dockerfile | ||
README.md |
Development with Docker
With docker
and docker-compose
you can easily spin up a development environment
and start working on dendrite.
Requirements
- docker
- docker-compose (version 3+)
Configuration
Copy the dendrite-docker.yaml
file to the root of the project and rename it to
dendrite.yaml
. It already contains the defaults used in docker-compose
for
networking so you will only have to change things like the server_name
or to
toggle naffka
.
You can run the following docker-compose
commands either from the top directory
specifying the docker-compose
file
docker-compose -f docker/docker-compose.yml <cmd>
or from within the docker
directory
docker-compose <cmd>
Starting a monolith server
For the monolith server you would need a postgres instance
docker-compose up postgres
and the dendrite component from bin/dendrite-monolith-server
docker-compose up monolith
The monolith will be listening on http://localhost:8008
.
You would also have to make the following adjustments to dendrite.yaml
.
- Set
use_naffka: true
- Uncomment the
database/naffka
postgres url.
Starting a multiprocess server
The multiprocess server requires kafka, zookeeper and postgres
docker-compose up kafka zookeeper postgres
and the following dendrite components
docker-compose up client_api media_api sync_api room_server public_rooms_api typing_server
docker-compose up client_api_proxy
The client-api-proxy
will be listening on http://localhost:8008
.
You would also have to make the following adjustments to dendrite.yaml
.
- Set
use_naffka: false
- Comment out the
database/naffka
postgres url.
Starting federation
docker-compose up federation_api federation_sender
docker-compose up federation_api_proxy
You can point other Matrix servers to http://localhost:8448
.
Creating a new component
You can create a new dendrite component by adding an entry to the docker-compose.yml
file and creating a startup script for the component in docker/services
.
For more information refer to the official docker-compose documentation.
new_component:
container_name: dendrite_room_server
hostname: new_component
# Start up script.
entrypoint: ["bash", "./docker/services/new-component.sh"]
# Use the common Dockerfile for all the dendrite components.
build: ./
volumes:
- ..:/build
depends_on:
- another_component
networks:
- internal