セルフホストできる Google アナリティクスの代替:Umami と Plausible の選び方とデプロイ

オープンソースで Cookie を使わないアクセス解析ツール、Umami と Plausible を比較し、Zenavo で自分のサーバーにデプロイします。最初のアカウントの保護、トラッキングスクリプトの設置、データの確認、バックアップまで説明します。

この記事は English、简体中文、繁體中文、Español、Bahasa Indonesia でもお読みいただけます。

多くのサイトが知りたいのは、今日の訪問者数、どこから来たのか、どのページが読まれたのか、といったいくつかのことです。Google アナリティクスでも分かりますが、設定が複雑で、データは第三者のもとに置かれ、たいてい Cookie バナーも必要になります。

Umami と Plausible は、すっきりしたダッシュボードを備えたオープンソースのアクセス解析ツールです。デフォルトでは Cookie を使わず、データは自分のデータベースに保存されます。Zenavo にはそれぞれのテンプレートがあり、レンタルまたは所有しているサーバーで数分のうちに動かせます。

どちらを選ぶか

Umami Plausible Community Edition
サービス Umami + PostgreSQL Plausible + PostgreSQL + ClickHouse
メモリ 少なめ。小さなサーバーをほかのアプリと共有できます テンプレートの要求は約 2 GB
向いている用途 個人サイト、複数の小規模サイト、手間を最小限にしたい場合 アクセスが多い場合、または Plausible のレポートが気に入っている場合
最初のサインイン デフォルトの管理者アカウント。すぐにパスワードを変更します 最初のアカウントを登録します
メール 不要 招待とパスワードリセットに必要(SMTP)

迷ったら Umami から始めてください。軽量で、バックアップや移行の対象も PostgreSQL 1つだけです。アクセスが PostgreSQL の手に負えなくなったら、ClickHouse ベースの Plausible を検討しましょう。

どちらも Cookie を使いませんが、それでもプライバシーに関する告知や同意が必要かどうかは、お住まいの地域の法律と収集する内容によって異なります。ご自身で確認してください。また、広告ブロッカーの中にはこれらのスクリプトもブロックするものがあるため、計測値は実際の訪問数より少し少なくなります。

Umami をデプロイする

Zenavo に Linux サーバーを接続し、Umami テンプレートを開いて、サーバーを選んでデプロイします。次の2つのサービスが作成されます。

  • postgresql:PostgreSQL 17。データは /var/lib/postgresql/data ボリュームに保存され、パスワードは自動生成されます。
  • umami:ghcr.io/umami-software/umami:postgresql-latest。HTTP ポートは 3000 で、DATABASE_URL で接続し、APP_SECRET は自動生成されます。

umami サービスの Networking タブで、stats.example.com などのドメインをポート 3000 に割り当て、DNS を設定して HTTPS が有効になるのを待ちます(ドメインと HTTPS)。

ドメインにアクセスできるようになったら、すぐにサインインしてください。 Umami のデフォルトの管理者はユーザー名 admin、パスワード umami です。すぐに Settings → Profile でパスワードを変更し、Security で二要素認証をオンにしてください。それまでは、アドレスを見つけた人なら誰でもデフォルトのパスワードでサインインできてしまいます。

続いて Settings → Websites でサイトを追加し、表示されたトラッキングコードをコピーします。

Plausible をデプロイする

Plausible テンプレートを開きます。デプロイの前に Site URL の入力を求められます。これは Plausible を開くときの完全なアドレスで、https://stats.example.com のような形式です。次の3つのサービスが作成されます。

  • postgresql:アカウントとサイトの設定を保存します。
  • clickhouse:訪問イベントを保存します。小さなサーバー向けに、スレッド数とログを抑えてあります。
  • plausible:Community Edition v3.1.0。HTTP ポートは 8000 で、起動時にデータベースの作成とマイグレーションを行います。

デプロイ後、plausible サービスに 同じ ドメインを割り当ててください。Site URL とドメインが異なると、サインインとスクリプトのアドレスが正しく動作しません。アドレスを変更するには、BASE_URL 変数を編集して再デプロイします。

ClickHouse には、SSE 4.2(x86)または NEON(ARM)に対応した CPU が必要です。一般的なクラウドサーバーなら対応していますが、非常に古いマシンでは起動に失敗することがあります。

サイトを開き、最初のアカウントを登録します。Plausible CE のデフォルトは DISABLE_REGISTRATION=invite_only で、最初のアカウント以降は招待された人だけが参加できます。

招待とパスワードリセットにはメールが必要です。plausible サービスの Variables に MAILER_EMAIL、SMTP_HOST_ADDR、SMTP_HOST_PORT、SMTP_USER_NAME、SMTP_USER_PWD などの SMTP 設定を追加し、再デプロイします。各項目の説明は Plausible の設定ページにあります。SMTP のパスワードは変数にだけ保存し、リポジトリには決して置かないでください。

サインインしたら Add a website をクリックし、計測するドメインを入力して、表示されたトラッキングコードをコピーします。

スクリプトを設置して動作を確認する

コピーした <script> を、すべてのページの <head> に設置します。Next.js や Vue などのフレームワークでは共通のレイアウトに追加し、WordPress や Ghost などの CMS では、テーマまたはサイトのヘッダーコードの設定を使います。

スマートフォンやプライベートウィンドウで自分のサイトを開きます。数秒以内に、Umami の Realtime ビューや Plausible の現在の訪問者数に訪問が表示されるはずです。何も表示されない場合は、次を確認してください。

  • ブラウザの開発者ツールの Network パネルで、スクリプトのリクエストが 200 を返しているか
  • 広告ブロッカーをオフにして、もう一度試す
  • サイトのドメインが、Umami または Plausible に追加したウェブサイトと一致しているか

バックアップ

統計データはすべてデータベースにあります。Umami の場合は postgresql サービスをバックアップします。Plausible の場合、アカウントは postgresql に、訪問イベントは clickhouse のボリュームにあるため、両方を保管してください。

PostgreSQL は、データベースサービスの Backup & Restore タブから直接バックアップできます。ClickHouse はボリュームなので、バックアップ中はプロジェクトを停止してください。重要なデータは、バックアップをダウンロードして手元に保管し、一度新しいプロジェクトに復元して、正しく動作することを確かめておきましょう。詳しくはバックアップと復元をご覧ください。

よくある質問

Google アナリティクスの過去のデータをインポートできますか? Plausible CE では、Google Cloud で OAuth 認証情報を作成し、plausible サービスの変数に GOOGLE_CLIENT_ID と GOOGLE_CLIENT_SECRET を追加すれば、Google アナリティクス 4 の過去のデータをインポートできます。Plausible のインポートガイドをご覧ください。Umami については、最新のドキュメントを確認してください。

1つの Umami で複数のサイトを計測できますか? はい。Websites で各サイトを追加すると、それぞれに専用のトラッキングコードが発行されます。

アクセス解析が停止したら、サイトも動かなくなりますか? いいえ。スクリプトの読み込みに失敗してもページの表示は止まりません。その間の訪問が計測されないだけです。

Plausible の起動がいつまでも終わらない場合は? clickhouse と plausible の各サービスのログを確認してください。たいていは、サーバーのメモリが不足しているか、CPU が ClickHouse に必要な命令に対応していないことが原因です。

まずは Umami テンプレートまたは Plausible テンプレートから始めましょう。最初に管理者アカウントを保護し、続いてスクリプトを設置し、データが届くことを確認してから、バックアップを取ってください。