From ecc88a6a15211f82cf1332b3bcd78d8b193e914b Mon Sep 17 00:00:00 2001 From: Machiel Date: Mon, 9 Mar 2026 09:39:58 +0100 Subject: [PATCH] Added: Plausible (stats) --- Plausible/.env | 4 ++ Plausible/README.md | 42 +++++++++++++++++++++ Plausible/docker-compose.yml | 72 ++++++++++++++++++++++++++++++++++++ 3 files changed, 118 insertions(+) create mode 100644 Plausible/.env create mode 100644 Plausible/README.md create mode 100644 Plausible/docker-compose.yml diff --git a/Plausible/.env b/Plausible/.env new file mode 100644 index 0000000..7a6608e --- /dev/null +++ b/Plausible/.env @@ -0,0 +1,4 @@ +BASE_URL=https://stats.vanemousmantelzorgwoningen.nl +SECRET_KEY_BASE=OvvDfv0NA//ll147muJUwW0LaRRdPVOq+ITOhDOdkNtRq2T0YnCABo9AtjkVwd/ll1P3tYprQuhF0DbyER86lw== +DATABASE_URL=postgres://postgres:postgres@db:5432/plausible_db +CLICKHOUSE_DATABASE_URL=http://events_db:8123/plausible_events_db \ No newline at end of file diff --git a/Plausible/README.md b/Plausible/README.md new file mode 100644 index 0000000..05b24f7 --- /dev/null +++ b/Plausible/README.md @@ -0,0 +1,42 @@ +# 📊 Plausible Analytics Setup + +Deze repository bevat de configuratie voor de zelf-gehoste Plausible Analytics stack voor **vanemousmantelzorgwoningen.nl**. + +## 🛠️ Voorbereiding + +Voordat je de containers start, moeten er twee zaken geregeld zijn: + +1. **Omgevingsvariabelen:** Maak een `.env` bestand aan in dezelfde map als de `docker-compose.yml`. +2. **Caddy Netwerk:** Zorg dat het externe netwerk `caddy_ntwk` actief is. + +### .env template +```env +BASE_URL=[https://stats.vanemousmantelzorgwoningen.nl](https://stats.vanemousmantelzorgwoningen.nl) +# Genereer een veilige key met: openssl rand -base64 48 +SECRET_KEY_BASE=jouw_gegeneerde_key_hier +``` + +## 🚀 Installatie & Start + +De Plausible container is geconfigureerd om bij de eerste start automatisch de database aan te maken en migraties uit te voeren via het commando: +`sh -c "/entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run` + +### Stap-voor-stap: + +1. **Configuratiebestanden controleren:** Zorg dat de map `./clickhouse/` aanwezig is met de volgende bestanden voor resource-beheer: + - logs.xml + - ipv4-only.xml + - low-resources.xml + - default-profile-low-resources-overrides.xml +2. **Containers opstarten:** `docker compose up -d` +3. **Logs monitoren (optioneel):** `docker compose logs -f plausible` + +## 🌐 Netwerkstructuur +- **Internal Netwerk**: Gebruikt voor de communicatie tussen Plausible, PostgreSQL en Clickhouse. +- **Caddy_ntwk:** Extern netwerk waarmee de plausible service verbonden is voor de reverse proxy. + +## Volumes & Backups +De data wordt persistent opgeslagen in de volgende Docker volumes: +- db-data: PostgreSQL metadata en gebruikers. +- event-data: Clickhouse analytics data (deze wordt snel groot). +- plausible-data: Tijdelijke bestanden en uploads. \ No newline at end of file diff --git a/Plausible/docker-compose.yml b/Plausible/docker-compose.yml new file mode 100644 index 0000000..94aface --- /dev/null +++ b/Plausible/docker-compose.yml @@ -0,0 +1,72 @@ +services: + plausible_db: + image: postgres:16-alpine + restart: always + volumes: + - db-data:/var/lib/postgresql/data + environment: + - POSTGRES_PASSWORD=postgres + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + start_period: 1m + networks: + - internal + + plausible_events_db: + image: clickhouse/clickhouse-server:24.12-alpine + restart: always + volumes: + - event-data:/var/lib/clickhouse + - event-logs:/var/log/clickhouse-server + - ./clickhouse/logs.xml:/etc/clickhouse-server/config.d/logs.xml:ro + - ./clickhouse/ipv4-only.xml:/etc/clickhouse-server/config.d/ipv4-only.xml:ro + - ./clickhouse/low-resources.xml:/etc/clickhouse-server/config.d/low-resources.xml:ro + - ./clickhouse/default-profile-low-resources-overrides.xml:/etc/clickhouse-server/users.d/default-profile-low-resources-overrides.xml:ro + ulimits: + nofile: + soft: 262144 + hard: 262144 + environment: + - CLICKHOUSE_SKIP_USER_SETUP=1 + healthcheck: + test: ["CMD-SHELL", "wget --no-verbose --tries=1 -O - http://127.0.0.1:8123/ping || exit 1"] + start_period: 1m + networks: + - internal + + plausible: + image: ghcr.io/plausible/community-edition:v3.2.0 + restart: always + command: sh -c "/entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run" + depends_on: + plausible_db: + condition: service_healthy + plausible_events_db: + condition: service_healthy + volumes: + - plausible-data:/var/lib/plausible + ulimits: + nofile: + soft: 65535 + hard: 65535 + environment: + - TMPDIR=/var/lib/plausible/tmp + - BASE_URL=${BASE_URL} + - SECRET_KEY_BASE=${SECRET_KEY_BASE} + - DATABASE_URL=postgres://postgres:postgres@plausible_db:5432/plausible_db + - CLICKHOUSE_DATABASE_URL=http://plausible_events_db:8123/plausible_events_db + networks: + - internal + - caddy_ntwk + +networks: + caddy_ntwk: + external: true + internal: + driver: bridge + +volumes: + db-data: + event-data: + event-logs: + plausible-data: