Files
homelab/tasks/plausible.yml
Alex Frantz 32e50b2307
Some checks failed
Deploy Containers / Prepare (push) Failing after 11s
migrate jackson to traefik
2025-08-03 03:17:48 -04:00

85 lines
2.8 KiB
YAML

---
- name: Create folder structure
file:
path: "{{ item }}"
state: directory
owner: 999
with_items:
- "{{ data_dir }}/plausible"
- "{{ data_dir }}/plausible/app"
- "{{ data_dir }}/plausible/db"
- "{{ data_dir }}/plausible/clickhouse"
- "{{ data_dir }}/plausible/clickhouse/logs"
- "{{ data_dir }}/plausible/clickhouse/data"
- name: Create Metrics Docker Network
docker_network:
name: metrics
- name: Deploy Plausible Database Docker Container
docker_container:
name: metrics_postgres
image: postgres:16-alpine
restart_policy: unless-stopped
recreate: true
volumes:
- "{{ data_dir }}/plausible/db:/var/lib/postgresql/data"
networks:
- name: metrics
env:
POSTGRES_PASSWORD: "postgres"
healthcheck:
test: ["CMD_SHELL", "pg_isready -U postgres"]
start_period: 1m
- name: Deploy Plausible Clickhouse Docker Container
docker_container:
name: metrics_clickhouse
image: clickhouse/clickhouse-server:24.12-alpine
restart_policy: unless-stopped
recreate: true
networks:
- name: metrics
volumes:
- "{{ data_dir }}/plausible/clickhouse/data:/var/lib/clickhouse"
- "{{ data_dir }}/plausible/clickhouse/logs:/var/log/clickhouse"
- "{{ data_dir }}/plausible/clickhouse/ipv4-only.xml:/etc/clickhouse-server/config.d/ipv4-only.xml:ro"
- "{{ data_dir }}/plausible/clickhouse/low-resources.xml:/etc/clickhouse-server/config.d/low-resources.xml:ro"
env:
CLICKHOUSE_SKIP_USER_SETUP: "1"
ulimits: nofile:262144:262144
healthcheck:
test:
[
"CMD_SHELL",
"wget --no-verbose --tries=1 -O - http://127.0.0.1:8123/ping || exit 1",
]
start_period: 1m
- name: Deploy Plausible Docker Container
docker_container:
name: plausible
user: "999:nogroup"
image: ghcr.io/plausible/community-edition:v3.0.1
recreate: true
restart_policy: unless-stopped
command: sh -c "/entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
volumes:
- "{{ data_dir }}/plausible/app:/var/lib/plausible"
networks:
- name: metrics
- name: "{{ docker_network_name }}"
env:
TMPDIR: "/var/lib/plausible/tmp"
DISABLE_REGISTRATION: "true"
DATABASE_URL: "postgres://postgres:postgres@metrics_postgres:5432/plausible_db"
CLICKHOUSE_DATABASE_URL: "http://metrics_clickhouse:8123/plausible_events_db"
BASE_URL: "{{ PLAUSIBLE_BASE_URL }}"
SECRET_KEY_BASE: "{{ PLAUSIBLE_SECRET_KEY_BASE }}"
labels:
traefik.enable: "true"
traefik.http.routers.metrics.rule: Host(`metrics.alexav.gg`)
traefik.http.routers.metrics.entrypoints: webSecure
traefik.http.routers.metrics.tls.certresolver: letsencrypt
traefik.http.services.metrics.loadbalancer.server.port: "8000"