Plausible Analyticsのセルフホスト:Dockerで行うプライバシー重視のガイド

HomeLab tutorial - IT technology blog
HomeLab tutorial - IT technology blog

Google Analyticsから移行すべき理由

Google Analytics 4(GA4)は、個人ブログのトラッキングをするだけなのに、まるでボーイング747を操縦しようとしているかのように感じることがよくあります。その複雑さは悪名高く、また、すべての訪問者のデータを世界的な広告巨人に渡すことのプライバシーへの影響を正当化することは難しくなっています。私が自分のプロジェクトの代替案を探したとき、選択肢は2つありました。プライバシー重視のSaaSに料金を支払うか、自分でホストするかです。

FathomやPlausibleのマネージド版のようなSaaSオプションは素晴らしいですが、複数の小さなサイトを管理している場合、月額9ドルからのスターター料金は積み重なると大きな出費になります。Dockerを介したPlausibleのセルフホストは、完璧な中間地点です。有料版と同じ軽量でクッキーレスなトラッキングが可能でありながら、自分のハードウェアで動作します。データを所有し、プライバシーを制御でき、Plausibleは個人識別子を追跡しないため、煩わしいGDPRの同意バナーをようやく削除することができます。

セルフホストの現実

インフラを移行する前に、メリットとデメリットを比較検討する価値があります。私はこのセットアップを本番環境で1年以上運用してきました。非常に安定していますが、無視できない技術的な要件があります。

メリット

  • 圧倒的なパフォーマンス: Plausibleのスクリプトは1KB未満です。Google Analyticsはしばしばその40倍以上のサイズになります。この交換により、Core Web VitalsとPageSpeedのスコアを即座に向上させることができます。
  • コンプライアンス対応が容易に: クッキーを使用せず、個人を特定できる情報(PII)を収集しないため、基本的にはそのままでGDPR、CCPA、PECRに準拠できます。
  • データ主権: トラフィックパターンは自分のサーバー内に留まります。第三者が広告プロファイルを作成するためにオーディエンスデータをマイニングすることはありません。
  • ミニマリストなUI: ダッシュボードは非常にシンプルです。ネストされたメニューを掘り下げることなく、訪問者、ソース、目標を1ページで確認できます。

課題

  • RAM要件: PlausibleはデータストレージにClickHouseを使用します。ClickHouseは分析において電光石火の速さを誇りますが、メモリを大量に消費します。LinuxのOOM(Out of Memory)killerによってデータベースがクラッシュするのを防ぐには、少なくとも4GBのRAMが必要です。
  • 手動メンテナンス: あなたがシステム管理者になります。午前2時にサーバーがダウンすれば、復旧するまでトラッキングデータは失われます。また、バックアップやセキュリティパッチの適用も自分で行う必要があります。

推奨ハードウェアとスタック

スムーズな運用のために、少なくとも2 vCPUと4GBのRAMを備えたVPSまたはホームサーバーを推奨します。Raspberry Pi 5やIntel NUCを使用する場合は、必ずSSDを使用してください。ClickHouseは激しいディスクI/Oを行うため、安価なSDカードでは負荷に耐えられず故障します。

構成スタックは、主に次の5つのコンポーネントで構成されます。

  • Docker & Docker Compose: コンテナオーケストレーション用。
  • PostgreSQL 14: ユーザーアカウントやサイト設定などのメタデータを保存するため。
  • ClickHouse: 生の分析データ用の高性能エンジン。
  • Redis: キャッシュおよび一時的なタスク処理用。
  • Nginx Proxy Manager: SSL証明書の管理とダッシュボードの安全な公開用。

ステップバイステップのインストール手順

Plausibleを手動で設定するのは骨が折れますが、Docker Composeを使えば管理しやすくなります。以下は、私が自身のデプロイに使用している設定です。

1. 環境の準備

まず、専用のディレクトリを作成します。Dockerボリュームを整理しておくことで、後のバックアップが非常に楽になります。

mkdir ~/plausible
cd ~/plausible

2. セキュリティキーの設定

Plausibleは、セッションデータを暗号化するためにいくつかの秘密鍵を必要とします。次のコマンドを使用して、ランダムな64文字の文字列を生成します。

openssl rand -base64 48

plausible-conf.envという名前のファイルを作成します。以下を貼り付け、プレースホルダーを実際の詳細情報に置き換えてください。

[email protected]
ADMIN_USER_NAME=admin
ADMIN_USER_PWD=your_secure_password
BASE_URL=https://analytics.yourdomain.com
SECRET_KEY_BASE=your_generated_64_char_string
TOTP_VAULT_KEY=another_random_string

# データベース接続設定
DATABASE_URL=postgres://postgres:password@plausible_db:5432/plausible_db
CLICKHOUSE_DATABASE_URL=http://plausible_events_db:8123/plausible_events_db

3. Docker Composeファイルの作成

docker-compose.ymlを作成します。このファイルは、アプリケーションをデータベースにリンクする方法をDockerに指示します。ClickHouseのulimitsセクションに注目してください。これは大規模なデータセットを扱うために不可欠です。

version: "3.3"
services:
  plausible_db:
    image: postgres:14-alpine
    restart: always
    volumes:
      - db-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=plausible_db

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

  plausible:
    image: plausible/analytics:latest
    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
    ports:
      - "8000:8000"
    env_file:
      - plausible-conf.env

volumes:
  db-data:
  event-data:

4. 起動と確認

開始する前に、Plausibleの公式リポジトリから必要なclickhouse-config.xmlファイルがフォルダ内にあることを確認してください。その後、スタックを起動します。

docker-compose up -d

データベースの初期化には通常約60秒かかります。ログを追跡することで進捗を確認できます。

docker-compose logs -f plausible

5. リバースプロキシの設定

HTTPS経由でダッシュボードにアクセスするには、Nginx Proxy ManagerまたはTraefikを使用します。analytics.yourdomain.comをサーバーのIPのポート8000に向けます。ログイン資格情報を暗号化するために、常に「Force SSL」を有効にしてください。

ウェブサイトへの接続

ログインしたら、ダッシュボードにドメインを追加します。Plausibleは小さなコードスニペットを提供します。それは次のようになります。

<script defer data-domain="yourdomain.com" src="https://analytics.yourdomain.com/js/script.js"></script>

これをサイトの<head>内に配置します。GA4とは異なり、イベントのタグ付けに何時間も費やす必要はありません。Plausibleは基本的なページビューとリファラーを自動的に追跡します。

メンテナンスの最終アドバイス

ディスク容量の監視が最大の優先事項です。サイトの月間訪問者が10万人に達すると、ClickHouseেরログは急速に増加します。Postgresデータベースを毎週バックアップするcronジョブを設定することをお勧めします。これらの手順を踏むことで、ユーザーを尊重し、データを完全に制御できるプロフェッショナルグレードの分析エンジンを構築できたことになります。

Share: