Skip to content

Ansible

Ansible playbook is available at papermerge/ansible.

Playbook will install web app, two workers, database, Redis and Solr search engine on target host. All services will be deployed as docker containers. All services will be placed behind traefik, reverse proxy which will take care of TLS certficates.

Choose one of following options:

  • option 1: install Papermerge with PostgreSQL database
  • option 2: install Papermerge with PostgreSQL + PgBouncer
  • option 3: install Papermerge with MariaDB as database

Secrets

Ansible repository does not include secrets file. Secrets file contains all sensitive (paswords, api tokens) information.

You need to create secrets filein group_vars folder:

$ touch groups_vars/secrets

Place following content:

secret_key: ...
superuser_password: ...
database_url: ...
db_pass: ...
cloudflare_api_key: ...
traefik_api_password: ...

Of course you need to replace dots with correct passwords, secret_key etc. database_url is in secrets file because it includes password.

Option 1 / PostgreSQL

Make sure database_url in your secrets files matches database related options in group_vars/all (db_user, db_name). Also port number database_url should match the one in db_postgres/vars/main.yml.

database_url should have following format:

postgresql://<user>:<pass>@db:5432/<dbname>

Install Papermerge DMS with PostgreSQL:

$ ansible-playbook install_1.yml -i inventory --extra-vars "@group_vars/secrets"

Application will be accessible via https:// acme_domain is variable you set in group_vars/all e.g. trusel.net

Option 2 / PostgreSQL + PgBouncer

In this setup application will connect to the database via pgbouncer, this means that database_url should point to pgbouncer.

Your database_url should look like:

postgresql://<user>:<pass>@pgbouncer:6432/<dbname>

Install Papermerge DMS with PostgreSQL and PgBouncer:

$ ansible-playbook install_2.yml -i inventory --extra-vars "@group_vars/secrets"

Application will be accessible via https:// acme_domain is variable you set in group_vars/all e.g. trusel.net

Option 3 / MariaDB

For Mysql/MariaDB database_url should have following format:

mysql://<user>:<pass>@db:3306/<dbname>

Install Papermerge DMS with MariaDB:

$ ansible-playbook install_3.yml -i inventory --extra-vars "@group_vars/secrets"

Backup

In order to create a backup:

$ ansible-playbook backup.yml

Restore

In order to restore the backup:

ansible-playbook restore.yml --extra-vars "backup_file=/backup/backup_20_11_2023-07_33_03.tar.gz"

The backup file path is the one from inside docker container.

Contribute

papermerge/ansible assumes Debian12/Ubuntu 22.04 host.

We are happy to accept your pull requests for other hosts.