Documentation how to use Postgresql
parent
7809d1373a
commit
55cf328ce2
@ -0,0 +1,77 @@
|
||||
Changing the database back-end
|
||||
==============================
|
||||
|
||||
By default Mailu uses a SQLite database. Recently, we have changed the internals of Mailu
|
||||
to enable the support of alternative database solutions. At this moment we have only included
|
||||
the possibility to use a Postgresql database. This functionality should still be considered
|
||||
experimental!
|
||||
|
||||
Mailu Postgresql
|
||||
----------------
|
||||
|
||||
Mailu optionally comes with a pre-configured Postgresql image.
|
||||
This images has the following features:
|
||||
|
||||
- Automatic creation of users, db, extensions and password;
|
||||
- TCP connections are only allowed from the mailu `SUBNET`;
|
||||
- Automatic minutely *wal archiving* and weekly `pg_basebackup`;
|
||||
- Automatic cleaning of *wal archives* and *base backups*;
|
||||
Two versions always remain available;
|
||||
- When `/data` is empty and backups are present, the backups are restored automatically;
|
||||
Useful in swarm environments, since the /data directory should not be on any network
|
||||
filesystem (performance).
|
||||
|
||||
To make use of this functionality, just select *Postgresql* as database flavor.
|
||||
Don't select the usage of an external database. The ``docker-compose.yml`` and ``mailu.env``
|
||||
will pull in ``mailu/postgresql``. This image and ``mailu/admin`` contain all the scripts
|
||||
to automatically setup the database.
|
||||
|
||||
After bring up the service, it might be useful to check the logs with:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
docker-compose logs -f admin database
|
||||
|
||||
External Postgresql
|
||||
-------------------
|
||||
|
||||
It is also possible to use a Postgresql database server, hosted elsewhere.
|
||||
In this case you'll have to take to create an empty database for Mailu, corresponding user,
|
||||
password and sufficient privileges on the database to ``CREATE TABLE``, ``DROP`` etc.
|
||||
Usually making the user owner of the database would be the easiest thing to do.
|
||||
Don't forget to set ``pg_hba.conf`` accordingly.
|
||||
|
||||
The database will also need the Citext extension installed.
|
||||
This is usually included in a package called "postgresql-contrib".
|
||||
The exact name may vary between distributions.
|
||||
|
||||
The following commands can serve as an example on how to set up postgresql for Mailu usage.
|
||||
Adjust this to your own liking.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ sudo su - postgres
|
||||
$ psql
|
||||
psql (10.6)
|
||||
Type "help" for help.
|
||||
|
||||
postgres=# create user mailu;
|
||||
CREATE ROLE
|
||||
postgres=# alter user mailu password 'my_secure_pass';
|
||||
ALTER ROLE
|
||||
postgres=# create database mailu owner mailu;
|
||||
CREATE DATABASE
|
||||
postgres=# \c mailu
|
||||
You are now connected to database "mailu" as user "postgres".
|
||||
mailu=# create extension citext;
|
||||
CREATE EXTENSION
|
||||
mailu=# \q
|
||||
|
||||
In ``pg_hba.conf`` there should be a line like this:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
host mailu mailu <mailu_host>/32 md5
|
||||
|
||||
Note that this example is the bare-minimum to get Mailu working. It goes without saying that
|
||||
the database admin will have to setup his own means of backups and TLS encrypted connections.
|
Loading…
Reference in New Issue