2024-11-04 15:25:28 +01:00
|
|
|
---
|
|
|
|
gitea: none
|
|
|
|
include_toc: true
|
|
|
|
---
|
|
|
|
|
2024-11-04 16:39:42 +01:00
|
|
|
# Installing PostgreSQL and creating database and user
|
2024-11-04 15:25:28 +01:00
|
|
|
|
2024-11-04 16:39:42 +01:00
|
|
|
Installing [PostgreSQL](https://www.postgresql.org/) on Debian is very easy:
|
2024-11-04 15:25:28 +01:00
|
|
|
|
2024-11-04 16:39:42 +01:00
|
|
|
```
|
|
|
|
apt install postgresql python3-psycopg
|
2024-11-04 15:25:28 +01:00
|
|
|
|
2024-11-04 16:39:42 +01:00
|
|
|
sudo -u postgres bash
|
|
|
|
|
|
|
|
createuser --pwprompt synapse
|
|
|
|
createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse synapse
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
After this, PostgreSQL is installed, the database `synapse` exists and so does
|
|
|
|
the database user `synapse`. Make sure you choose a strong password.
|
|
|
|
|
|
|
|
|
|
|
|
# Configuring access
|
|
|
|
|
|
|
|
After a clean installation, PostgreSQL will listen on localhost, both IPv4 and
|
|
|
|
IPv6 (if available). In many cases, this is exactly what you want.
|
|
|
|
|
|
|
|
## Network
|
|
|
|
|
|
|
|
PostgreSQL will listen on localhost, this is configured in
|
|
|
|
`/etc/postgresql/<version>/main/postgresql.conf`:
|
|
|
|
|
|
|
|
```
|
|
|
|
listen_addresses = 'localhost'
|
|
|
|
```
|
|
|
|
|
|
|
|
This line is usually commented out, but as it is the default, it's really
|
|
|
|
there.
|
|
|
|
|
|
|
|
|
|
|
|
## UNIX socket
|
|
|
|
|
|
|
|
If you want PostgreSQL to listen only to a local UNIX socket (more efficient
|
|
|
|
than network and -depending on the configuration of the rest of you system-
|
|
|
|
easier to protect), make the aforementioned option explicitly empty and
|
|
|
|
uncomment it:
|
|
|
|
|
|
|
|
```
|
2024-11-04 16:49:15 +01:00
|
|
|
listen_addresses = ''
|
2024-11-04 16:39:42 +01:00
|
|
|
```
|
|
|
|
|
|
|
|
Check these options to make sure the socket is placed in the right spot and
|
|
|
|
given the correct permissions:
|
|
|
|
|
|
|
|
```
|
|
|
|
unix_socket_directories = '/var/run/postgresql'
|
|
|
|
#unix_socket_group = ''
|
|
|
|
#unix_socket_permissions = 0777
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Permissions
|
|
|
|
|
|
|
|
Add permission for the user to connect to the database from localhost (if
|
|
|
|
PostgreSQL listens on localhost), or the socket (if you use that). This is
|
|
|
|
configured in `/etc/postgresql/<version>/main/pg_hba.conf`:
|
|
|
|
|
|
|
|
```
|
|
|
|
local synapse synapse password # for use with UNIX sockets
|
|
|
|
host synapse synapse localhost md5 # for use with localhost network
|
|
|
|
```
|
|
|
|
|
|
|
|
Make sure you add these lines under the one that gives access to the postgres
|
|
|
|
superuser, the first line.
|
2024-11-04 15:25:28 +01:00
|
|
|
|
2024-11-04 17:33:39 +01:00
|
|
|
|
2024-11-04 17:34:21 +01:00
|
|
|
# Tuning
|
2024-11-04 17:33:39 +01:00
|
|
|
|
|
|
|
This is for later, check [Tuning your PostgreSQL Server](https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server)
|
|
|
|
on the PostgreSQL wiki.
|
|
|
|
|