Add documentation.
Better configuration. Expose DB port.
This commit is contained in:
parent
a0a0755bb4
commit
ec75520bd4
137
README.md
137
README.md
@ -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
|
||||
roles:
|
||||
- { role: username.rolename, x: 42 }
|
||||
The hosting URL of the server, used for URL generation must be specified:
|
||||
|
||||
License
|
||||
-------
|
||||
```yaml
|
||||
plausible_base_url: change-me
|
||||
```
|
||||
|
||||
BSD
|
||||
Please define a long (>= 64 characters) secret key, which will be used by your instance to encrypt data:
|
||||
|
||||
Author Information
|
||||
------------------
|
||||
```yaml
|
||||
plausible_secret_key_base: change-me
|
||||
```
|
||||
|
||||
An optional section for the role authors to include contact information, or a website (HTML is not allowed).
|
||||
# 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:
|
||||
- 'laurivan.plausible'
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
|
||||
## Author Information
|
||||
|
||||
This role was created in 2022 by [Laur Ivan](https://www.laurivan.com).
|
||||
|
@ -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"
|
||||
|
@ -42,6 +42,7 @@
|
||||
loop:
|
||||
- "env.plausible.conf"
|
||||
- "env.mail.conf"
|
||||
- "env.db.conf"
|
||||
tags:
|
||||
- configuration
|
||||
|
||||
|
@ -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
4
templates/env.db.conf.j2
Normal file
@ -0,0 +1,4 @@
|
||||
POSTGRES_USER=postgres
|
||||
POSTGRES_PASSWORD={{ plausible_db_password }}
|
||||
|
||||
POSTGRES_DB={{ plausible_db }}
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user