Add documentation.

Better configuration.
Expose DB port.
This commit is contained in:
Laur Ivan 2022-09-23 12:50:15 +02:00
parent a0a0755bb4
commit ec75520bd4
6 changed files with 136 additions and 31 deletions

135
README.md
View File

@ -1,38 +1,127 @@
Role Name
=========
# laurivan.plausible
A brief description of the role goes here.
THis is a role to install [Plausible](https://plausible.io/) via Docker.
Requirements
------------
## Requirements
Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
You need a machine with Docker installed.
Role Variables
--------------
## Role Variables
A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.
Plausible depends on several components (SMTP, Clickhouse, PostgreSQL) and this role is designed to install them as a package. All variables are listed below (see also `defaults/main.yml`).
Dependencies
------------
# Plausible parameters
A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.
`plausible_port` defined the exposed port for the web site (including JS delivery and API):
Example Playbook
----------------
```yaml
plausible_port: 8000
```
You need an admin user to be able to access the site:
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
```yaml
plausible_admin_user_email: changeme@example.com
plausible_admin_user_name: change-me
plausible_admin_user_pwd: change-me
```
- hosts: servers
The hosting URL of the server, used for URL generation must be specified:
```yaml
plausible_base_url: change-me
```
Please define a long (>= 64 characters) secret key, which will be used by your instance to encrypt data:
```yaml
plausible_secret_key_base: change-me
```
# Email
Plausible can send various emails; for this it needs a SMTP relay. Following variables define the SMTP account from which emails will be sent:
```yaml
plausible_smtp_host:
plausible_smtp_port: 587
plausible_smtp_username:
plausible_smtp_password:
```
If you don't define any, no emails will be sent and you'll need to look through the logs :)
The email on behalf of which messages are sent is defined by:
```yaml
plausible_smtp_email: "changeme@example.com"
```
## Database
Plausible depends on PostgreSQL and Clickhouse.
For PostgreSQL, you need to specify following variables:
```yaml
plausible_db_host: "plausible_db"
plausible_db: "plausible"
plausible_db_password: "change_me"
```
If you want to expose the database port outside (e.g. for backup), please define `plausible_db_port`
For Clickhouse, you only need to define the version used:
```yaml
plausible_clickhouse_version: "21.3.2.5"
```
### Volumes
The role will create following paths used by the docker containers as volumes:
```yaml
plausible_volume_base: "/mnt/plausible"
plausible_volume_config: "{{ plausible_volume_base }}/config"
plausible_volume_db: "{{ plausible_volume_base }}/db_data"
plausible_volume_events: "{{ plausible_volume_base }}/event_data"
plausible_volume_geoip: "{{ plausible_volume_base }}/geoip_data"
```
The `plausible_volume_geoip` is necessary to access MaxMind GeoIP data (see below).
### GeoIP
Plausible defaults to DBIP, but can be configured to use MaxMind GeoIP. If you want to use MaxMind, you need to define:
```yaml
plausible_geoip_db: "GeoLite2-Country.mmdb"
```
## Dependencies
None
## Example Playbook
```yaml
---
- name: Create unifi volume
hosts: services
vars:
plausible_port: "8100"
plausible_base_url: "https://metrics.example.com"
plausible_admin_user_email: "admin@example.com"
plausible_admin_user_name: "admin"
plausible_admin_user_pwd: "change-me"
roles:
- { role: username.rolename, x: 42 }
- 'laurivan.plausible'
```
License
-------
## License
BSD
MIT
Author Information
------------------
## Author Information
An optional section for the role authors to include contact information, or a website (HTML is not allowed).
This role was created in 2022 by [Laur Ivan](https://www.laurivan.com).

View File

@ -1,6 +1,9 @@
---
# defaults file for plausible
# Plausible
plausible_version: "latest"
# Email
plausible_smtp_host:
plausible_smtp_port: 587
@ -19,9 +22,13 @@ plausible_secret_key_base: change-me
plausible_smtp_email: "changeme@example.com"
# Database
plausible_db_port:
plausible_db_host: "plausible_db"
plausible_db: "plausible_db"
plausible_db_password: "change_me"
plausible_clickhouse_version: "21.3.2.5"
plausible_version: "latest"
plausible_pg_password: "change_me"
# Volumes
plausible_volume_base: "/mnt/plausible"

View File

@ -42,6 +42,7 @@
loop:
- "env.plausible.conf"
- "env.mail.conf"
- "env.db.conf"
tags:
- configuration

View File

@ -13,8 +13,12 @@ services:
restart: always
volumes:
- {{ plausible_volume_db }}:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD={{ plausible_pg_password }}
{% if plausible_db_port %}
ports:
- {{ plausible_db_port }}:5432
{% endif %}
env_file:
- {{ plausible_volume_config }}/env.db.conf
networks:
- plausible
@ -44,7 +48,7 @@ services:
- {{ plausible_port }}:8000
env_file:
- {{ plausible_volume_config }}/env.plausible.conf
{% if plausible_geoip_stat.stat.exists %}
{% if plausible_volume_geoip and plausible_geoip_db and plausible_geoip_stat.stat.exists %}
volumes:
- {{ plausible_volume_geoip }}/{{ plausible_geoip_db }}:/geoip:ro
{% else %}

4
templates/env.db.conf.j2 Normal file
View File

@ -0,0 +1,4 @@
POSTGRES_USER=postgres
POSTGRES_PASSWORD={{ plausible_db_password }}
POSTGRES_DB={{ plausible_db }}

View File

@ -4,12 +4,12 @@ ADMIN_USER_PWD={{ plausible_admin_user_pwd }}
BASE_URL={{ plausible_base_url }}
SECRET_KEY_BASE={{ plausible_secret_key_base }}
{% if plausible_geoip_stat.stat.exists %}
{% if plausible_volume_geoip and plausible_geoip_db and plausible_geoip_stat.stat.exists %}
GEOLITE2_COUNTRY_DB={{ plausible_volume_geoip }}/{{ plausible_geoip_db }}
{% endif %}
# DB and events
DATABASE_URL=postgres://postgres:{{ plausible_pg_password }}@plausible_db:5432/plausible_db
DATABASE_URL=postgres://postgres:{{ plausible_db_password }}@{{ plausible_db_host }}:5432/{{ plausible_db }}
CLICKHOUSE_DATABASE_URL=http://plausible_events_db:8123/plausible_events_db
#SMTP