This repository has been archived on 2024-11-13. You can view files and clone it, but cannot push or open issues or pull requests.
matrix/postgresql
2024-11-04 16:39:42 +01:00
..
README.md First bit of documentation for PostgreSQL added. 2024-11-04 16:39:42 +01:00

Table of Contents

Installing PostgreSQL and creating database and user

Installing PostgreSQL on Debian is very easy:

apt install postgresql python3-psycopg

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:

listen_addresses =

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.