Direkt zum Hauptinhalt

Installation

Die Installation kann ganz einfach mit einem Docker Image vom Hersteller vorgenommen werden. Hierzu gibt es eine Anleitung in der offiziellen Dokumentation: Plausible GitHub

Im folgenden wird auf Basis dieser Anleitung die Docker Compose Datei zusammengestellt.

Basis Konfiguration

Zuerst erstellen wir einen Ordner, in den wir dann die benötigten Konfigurationsdateien laden. Diese werden freundlicherweise vom Hersteller über das GitHub Repository bereitgestellt. Außerdem löschen wir einige Dateien und Ordner, die wir für die Bereitstellung nicht benötigen.

# Neues Verzeichnis im aktuellen Ordner erstellen
mkdir plausible-analytics
# In den neuen Ordner wechseln
cd plausible-analytics
# GitHub Repository in das akteuelle Verzeichnis klonen
git clone https://github.com/plausible/community-edition .
# Einige der Dateien und Ordner sind nicht notwendig, also löschen
sudo rm -R README.md reverse-proxy/ upgrade/ .git/ .github/ images/

Nun wird die Datei plausible-conf.env bearbeitet. In dieser werden einige wichtige Einstellungen vorgenommen. Die Datei sieht zur Zeit wie folgt aus.

BASE_URL=replace-me
SECRET_KEY_BASE=replace-me

Beide Zeilen müssen angepasst werden.

BASE_URL: Dies ist der Link, unter dem die Seite von Plausible erreichbar sein wird. Beispiel: http://beispiel.de

SECRET_KEY_BASE: Dies ist ein Base64 String, welcher für einige Sicherheitsfunktionen benötigt wird. Dieser lässt sich mit openssl rand -base64 48 generieren. Die so erzeugte Zeichenkette wird eingetragen.

Nachdem die Werte angepasst wurden, könnte die Datei z. B. wie folgt aussehen.

BASE_URL=http://beispiel.de/
SECRET_KEY_BASE=r3vcAJI/8Dv6IA7/MziKPxEP851eO4n03CHsdhqBtymVVCOrztHP83GSMWmmEzAd

Im Prinzip ist die Einrichtung damit abgeschlossen, jedoch wäre die Seite so nicht ausreichend geschützt, da sie keine Verschlüsselung hat. Hier empfiehlt sich der Einsatz eines Reverse Proxy.

Anpassung für Reverse Proxy

In diesem Beispiel wird die Anpassung der Docker Konfiguration für den Reverse Proxy Traefik gezeigt. Um Plausible bei Traefik bekannt zu machen und damit dieser als Dienst angeboten wird, müssen lediglich die folgenden Label beim Container plausible in der originalen Konfiguration ergänzt werden. Zusätzlich muss ggf. das Netzwerk von Traefik angegeben werden, damit die Container miteinander über das Docker Netzwerk kommunizieren können.

services:
  plausible:
    labels:
      traefik.enable: "true"
      traefik.http.routers.plausible.rule: "Host(`beispiel.de`)" # Link anpassen, unter dem Plausible erreichbar sein soll
      traefik.http.routers.plausible.entrypoints: "websecure" # Ebenfalls an die eigene Umgebung anpassen
      traefik.http.services.plausible.loadbalancer.server.port: "8000"
# Wenn Traefik ein eigenes Netzwerk hat, dieses hier angeben, damit der Dienst auch erreichbar ist
    networks:
      traefik
networks:
  traefik:
    external: true

Wenn der Dienst plausible in das Netzwerk von Traefik gepackt wird, muss zusätzlich ein eigenes Netzwerk für das Backend erstellt werden, damit plausible weiterhin mit den anderen Containern kommunizieren kann.

Die angepasste Compose Konfiguration sieht dann wie folgt aus.

services:
  mail:
    image: bytemark/smtp
    restart: always
    networks:
      - backend

  plausible_db:
    # Plausible v2.0.0 was tested against PostgreSQL versions 12, 13, and 14
    # https://github.com/plausible/analytics/blob/v2.0.0/.github/workflows/elixir.yml#L16
    image: postgres:14-alpine
    restart: always
    volumes:
      - ./db-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=postgres
    networks:
      - backend

  plausible_events_db:
    image: clickhouse/clickhouse-server:23.3.7.5-alpine
    restart: always
    volumes:
      - ./event-data:/var/lib/clickhouse
      - ./clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro
      - ./clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro
    ulimits:
      nofile:
        soft: 262144
        hard: 262144
    networks:
      - backend

  plausible:
    image: plausible/analytics:v2.0
    restart: always
    command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
    depends_on:
      - plausible_db
      - plausible_events_db
      - mail
    env_file:
      - plausible-conf.env
    labels:
      traefik.enable: "true"
      traefik.http.routers.plausible.rule: "Host(`beispiel.de`)" # Link anpassen, unter dem Plausible erreichbar sein soll
      traefik.http.routers.plausible.entrypoints: "websecure" # Ebenfalls an die eigene Umgebung anpassen
      traefik.http.services.plausible.loadbalancer.server.port: "8000"
# Wenn Traefik ein eigenes Netzwerk hat, dieses hier angeben, damit der Dienst auch erreichbar ist
    networks:
      - backend
      - traefik
      
networks:
  backend:
    driver: bridge
  traefik:
    external: true

Um die Docker Compose Konfiguration auszuführen, kann am besten in das Verzeichnis der YAML Datei gewechselt werden. Danach wird je nach nach gewählter Installation sudo docker-compose up -d oder sudo docker compose up -d (keine Bindestrich zwischen docker und compose) eingegeben, um die Standard Konfiguration docker-compose.yml zu starten. Compose erstellt dann die gewünschten Container mit den angegeben Optionen. Sollten die Container bereits mit dieser Compose Konfiguration erstellt worden sein, so werden die Container in dieser neu erstellt, dessen Konfiguration geändert wurde.