mirror of
https://github.com/1f349/dendrite.git
synced 2024-11-24 04:31:39 +00:00
f956a8c1d9
Needs to be merged into `gh-pages` later on.
88 lines
3.4 KiB
Markdown
88 lines
3.4 KiB
Markdown
---
|
|
title: Preparing database storage
|
|
parent: Installation
|
|
nav_order: 2
|
|
parent: Manual
|
|
grand_parent: Installation
|
|
permalink: /installation/manual/database
|
|
---
|
|
|
|
# Preparing database storage
|
|
|
|
Dendrite uses SQL databases to store data. Depending on the database engine being used, you
|
|
may need to perform some manual steps outlined below.
|
|
|
|
## PostgreSQL
|
|
|
|
Dendrite can automatically populate the database with the relevant tables and indexes, but
|
|
it is not capable of creating the database itself. You will need to create the database
|
|
manually.
|
|
|
|
The database **must** be created with UTF-8 encoding configured, or you will likely run into problems
|
|
with your Dendrite deployment.
|
|
|
|
You will need to create a single PostgreSQL database. Deployments
|
|
can use a single global connection pool, which makes updating the configuration file much easier.
|
|
Only one database connection string to manage and likely simpler to back up the database. All
|
|
components will be sharing the same database resources (CPU, RAM, storage).
|
|
|
|
You will most likely want to:
|
|
|
|
1. Configure a role (with a username and password) which Dendrite can use to connect to the
|
|
database;
|
|
2. Create the database itself, ensuring that the Dendrite role has privileges over them.
|
|
As Dendrite will create and manage the database tables, indexes and sequences by itself, the
|
|
Dendrite role must have suitable privileges over the database.
|
|
|
|
### Connection strings
|
|
|
|
The format of connection strings for PostgreSQL databases is described in the [PostgreSQL libpq manual](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING). Note that Dendrite only
|
|
supports the "Connection URIs" format and **will not** work with the "Keyword/Value Connection
|
|
string" format.
|
|
|
|
Example supported connection strings take the format:
|
|
|
|
* `postgresql://user:pass@hostname/database?options=...`
|
|
* `postgres://user:pass@hostname/database?options=...`
|
|
|
|
If you need to disable SSL/TLS on the database connection, you may need to append `?sslmode=disable` to the end of the connection string.
|
|
|
|
### Role creation
|
|
|
|
Create a role which Dendrite can use to connect to the database, choosing a new password when
|
|
prompted. On macOS, you may need to omit the `sudo -u postgres` from the below instructions.
|
|
|
|
```bash
|
|
sudo -u postgres createuser -P dendrite
|
|
```
|
|
|
|
### Single database creation
|
|
|
|
Create the database itself, using the `dendrite` role from above:
|
|
|
|
```bash
|
|
sudo -u postgres createdb -O dendrite -E UTF-8 dendrite
|
|
```
|
|
|
|
## SQLite
|
|
|
|
**WARNING:** The Dendrite SQLite backend is slower, less reliable and not recommended for
|
|
production usage. You should use PostgreSQL instead. We may not be able to provide support if
|
|
you run into issues with your deployment while using the SQLite backend.
|
|
|
|
SQLite deployments do not require manual database creation. Simply configure the database
|
|
filenames in the Dendrite configuration file and start Dendrite. The databases will be created
|
|
and populated automatically.
|
|
|
|
Note that Dendrite **cannot share a single SQLite database across multiple components**. Each
|
|
component must be configured with its own SQLite database filename. You will have to remove
|
|
the `global.database` section from your Dendrite config and add it to each individual section
|
|
instead in order to use SQLite.
|
|
|
|
### Connection strings
|
|
|
|
Connection strings for SQLite databases take the following forms:
|
|
|
|
* Current working directory path: `file:dendrite_component.db`
|
|
* Full specified path: `file:///path/to/dendrite_component.db`
|