倫理的なウェブサイトとして、私たちはLinuxハンドブックをできるだけ多くのGoogleと追跡を無料に保つように努めています。その点で、ウェブサイトのトラフィック測定にGoogleAnalyticsを使用することは控えています。
代わりに、PlausibleAnalyticsを使用します。これは、Google Analytics(GA)に代わる、シンプルで軽量(<1 KB)のオープンソースでプライバシーに優しい代替手段です。
GAほど多くの詳細は得られないかもしれませんが、バウンス率と訪問時間とともに、Webサイトで得ているトラフィックについてのアイデアを得ることができます。
また、どのページが最も多くの訪問を獲得しているか、どこからWebサイトがトラフィックを獲得しているか、バウンス率、ページの継続時間を確認できます。地理的な地域やデバイスに基づいてトラフィックを測定することもできます。
UkuTahtとMarcoSaricによって設立および開発されたPlausibleは、訪問者のプライバシーを損なうことなくWebサイトのトラフィックを分析できるという考えに大きな力を与えています。
余裕があれば、マネージドホスティングプランを選択してプロジェクトをサポートしてください。 30日間の無料トライアルも提供しています。
トラフィックの多いWebサイトが複数あり、予算から価格が外れている場合は、LinuxハンドブックのようにオープンソースプロジェクトPlausibleをセルフホストできます。
Dockerを使用したセルフホスティングのもっともらしい分析
私が最初にPlausibleの展開に取り組んだとき、プロセスは非常に複雑でした。ありがたいことに、今では自分のサーバーにデプロイするのが非常に便利です。簡単にするために、Plausibleのすばらしい人々は、GitHubに別のホスティングリポジトリを作成して、作業を開始しました。
この詳細なガイドでは、Plausibleインスタンスをデプロイする2つの方法を学習します。
- スタンドアロン方式(単一サーバー、単一サービス):サーバー全体で実行されるのはPlausibleのみ
- リバースプロキシ方式(単一サーバー、複数のサービス):Plausibleを使用してWordPress、Nextcloudなどの複数のWebサービスをデプロイできます。
さらに、Plausibleのすべての機能を楽しむためのオプションであるが便利な手順もいくつか紹介します。
- メールで週次または月次のレポートを受信できるように、PlausibleでSMTPを構成します。
- Plausibleダッシュボードマップに国ごとの統計を表示するようにGeoIPを構成する
Linuxコマンド、docker、docker-composeに関する知識とは別に、必要なものは次のとおりです。
- Linuxサーバー。物理サーバー、仮想マシン、またはクラウドサーバーを使用できます。パートナーのLinodeにサインアップして、100ドルの無料クレジットを獲得できます。
- DockerとDockerComposeがサーバーにインストールされています。
- Plausibleを導入するドメインのDNSへのアクセス。
- 2番目の展開方法を選択する場合は、Nginxリバースプロキシの設定。
ステップ1:[方法1]の展開の準備スタンドアロンでもっともらしい(単一サーバー、単一サービス)
このセクションでは、スタンドアロンサーバーのポート80でドメインを直接ホストすることを想定しています。
まず、最も最低限の必需品を見つけることから始めましょう。事前にdocker-composeが必要であることに注意してください。
もっともらしい展開構成は、基本的に3つの主要コンポーネントで構成されています。
- ユーザーデータ用のPostgresデータベース
- 分析データ用のクリックハウスデータベース
- 2つのデータベースに依存する妥当なもの
PlausibleはDockerを使用して自身をデプロイするため、上記の3つのコンポーネントはすべて独自のコンテナーとしてデプロイされます。
次に、DockerComposeでそれらがどのように構成されているかを1つずつ見ていきます。
Postgresの場合、ここではDockerHubで利用可能な公式のPostgres12イメージを使用する必要があります(このチュートリアルの執筆時点)。 latest
を使用するため、これは絶対に必要です。 この場合のタグはお勧めできません。
plausible_db:
image: postgres:12
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=postgres
ボリューム名を使用するdb-data
ユーザーデータを/var / lib / postgresql / data
に保存します 。 Postgresパスワードを割り当てるための環境変数の設定も必要になります。
Clickhouseの場合は、Yandex Clickhouse Docker Hubイメージを使用します:
plausible_events_db:
image: yandex/clickhouse-server:latest
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
それが何をしているのか説明させてください!ボリューム名event-data
を使用しています 分析データを/var / lib / clickhouse
に保存します 。次に、構成ファイルをマウントしてロギングテーブルを無効にし、長期的にクリックハウスを落ち着かせるなどの問題を回避します。バインドマウントされたXMLファイルに続いて、 ulimit
Clickhouseコンテナ内のリソース使用率を制限するために使用されます。
Plausibleサービス自体には、 latest
のタグが付けられたDockerHubイメージを使用します 安定したリリースとしての開発者による:
plausible:
image: plausible/analytics:latest
command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh db init-admin && /entrypoint.sh run"
depends_on:
- plausible_db
- plausible_events_db
- mail
- geoip
ports:
- 80:8000
env_file:
- plausible-conf.env
最初の実行時に、ユーザーデータ用のPostgresデータベース、分析データ用のClickhouseデータベースを作成し、それらを移行してスキーマを準備し、管理者アカウントを作成します。
ご覧のとおり、このサービスは plausible_db
に依存しています。 およびplausible_events_db
それが機能するために。 メールコード> および
geoip
後で説明する他の2つの追加サービスです。
スタンドアロン方式を使用しているため、ポート80のホスト名を介して使用できるようにコンテナポート8000を直接指定できます。 env_file
について 、このガイドの後半の「環境ファイル」セクションで説明します。
各データベースサービスには、ユーザーデータと分析データを保存するための独自のDockerボリュームがあります。したがって、次の詳細を含むボリュームセクションもdockercomposeファイルに含める必要があります。:
volumes:
db-data:
driver: local
event-data:
driver: local
geoip:
driver: local
これで、基本的なPlausibleデプロイメントに必要なコンポーネントができました。
基本的なPlausibleデプロイメントの3つの基本コンポーネントがわかったので、まだ完全なセットアップではありません。また、完全なWeb分析の展開を実現するために、さらに2つの追加機能を使用して構成する必要があります。
Plausibleが毎週または毎月の分析レポートを送信するために使用するBytemarkSMTPサービスを利用できます。この追加の構成は単純ですが、後でPlausibleサービス構成で指定する必要があります:
mail:
image: bytemark/smtp
restart: always
このガイドの例としてSendGridを使用します。 SendGridにログインすると、ここから無料のAPIキーを作成できます。 SMTP構成のパスワードとして後で必要になるため、69文字の文字列を保存します 。
ダッシュボードマップのGeoIP[オプション]
この部分は、ドメインのPlausibleダッシュボードの世界地図にカーソルを合わせたときに国ごとの訪問者数を表示するために必要です。
このためには、無料のGeoLite2サービスを使用する必要があります。 MaxMindのGeoIP2データベースは、大量の環境にIPインテリジェンスデータを提供します。データベースをセルフホストすることで、ネットワークの遅延とクエリごとの料金を排除できます。 Plausibleは、コンテナとして実装された無料のIPジオロケーションデータベースであるGeoLite2データベースを使用しています。
GeoIPデータベースを設定して自動的に更新するには、MaxMindで無料のアカウントにサインアップする必要があります。サインアップ後、Maxmindアカウントページの左側のパネルから[サービス]>[マイライセンスキー]に移動します。 [新しいライセンスキーを生成する]をクリックし、生成時に1回しか表示できないため、ローカルに保存します 。
plausible_geoip:
image: maxmindinc/geoipupdate
environment:
- GEOIPUPDATE_EDITION_IDS=GeoLite2-Country
- GEOIPUPDATE_FREQUENCY=168 # update every 7 days
env_file:
- geoip-conf.env
volumes:
- geoip:/usr/share/GeoIP
restart: always
上記の2つの環境変数を使用して、エディションIDとデータベースが更新される頻度を設定します。 GeoLite2の国、都市、およびASNデータベースは、毎週火曜日に更新されます。 geoip-conf.env
このガイドの後半で説明するように、上記で説明したライセンスキーを生成した後に取得するすべての資格情報を含める必要があります。
このセクションは、Plausibleインスタンスの上記の5つのコンポーネントが正しく機能するために必要なすべての重要な環境変数をカバーしているため、おそらく最も重要なセクションです。構成全体を通して、直接および環境ファイルを介してそれらを利用します。
もっともらしい構成の環境ファイル
plausible-conf.envファイルには、Plausibleインスタンスをデプロイするための最も重要な環境変数が格納されています。
ADMIN_USER_EMAIL=replace-me
ADMIN_USER_NAME=replace-me
ADMIN_USER_PWD=replace-me
BASE_URL=replace-me
SECRET_KEY_BASE=replace-me
-
ADMIN_USER_EMAIL
ログインしたり、毎週または毎月の分析レポートを受信したりするメールアドレスです。 -
ADMIN_USER_NAME
の場合 、ここで自分の名前を言うことができます。 -
ADMIN_USER_PWD
の値 ログインパスワードです。 -
BASE_URL
次の形式にすることができます:http://plausible.domain.com。 HTTPSを有効にするには、SSL証明書を使用するためにリバースプロキシ方式(このガイドの後半で説明)を使用することをお勧めします。 -
SECRET_KEY_BASE
Plausibleを保護するために使用されるランダムな64文字の秘密鍵です。生成するには、次を使用します:openssl rand -base64 64
Sendgridを使用したもっともらしいSMTP構成の環境ファイル
同じファイルにSMTP環境変数を含めることもできますが、別の環境変数を使用すると、わかりやすくなります。そこで、ここでは plausible-smtp.env
というファイルを使用しました。 同じ目的のために。
以下の構成はSendgridに固有のものですが、別のSMTPサービスが必要な場合は、それに応じて変更できます。
[email protected]
SMTP_HOST_ADDR=smtp.sendgrid.net
SMTP_HOST_PORT=465
SMTP_USER_NAME=apikey
SMTP_USER_PWD=replace-me
SMTP_HOST_SSL_ENABLED=true
SMTP_RETRIES=20
CRON_ENABLED=true
-
MAILER_EMAIL
は、週次または月次のレポートを受信したときに受信トレイに表示される、カスタマイズ可能な「差出人」の電子メールアドレスです。 -
SMTP_HOST_ADDR
SMTPサーバーのホスト名です。 SendGridの場合は、smtp.sendgrid.net
です。 。 - ここでは、
SMTP_HOST_PORT
を介してSMTPホストポート番号に465を使用します 。 -
apikey
特にSendGridのユーザー名クレデンシャルであり、SMTP_USER_NAME
を介して設定されます 。 -
SMTP_USER_PWD
SendGridから取得したパスワードとして使用される69文字のキーです(SMTPセットアップセクションで説明)。 -
SMTP_HOST_SSL_ENABLED
を介してSSLをtrueに有効にしました SendGridの場合。 - メーラーが諦めるまでの再試行回数は、
SMTP_RETRIES
で設定できます。 。
CRON_ENABLED
具体的なSMTP設定ではありません。しかし、これをここに含めたのは、この変数が true
に設定されていないためです。 、電子メールで週次または月次のレポートを受信することはありません。デフォルトでは、この値はfalseですが、ここで説明するように、Plausibleの次のリリースで更新される可能性があります。しかし今のところ、この設定は絶対に重要です。
PlausiblewithGeoIPのグローバル統計の環境ファイル
geoip-conf.env
を使用 、前述のように、MaxMindから取得した重要な資格情報を含めます。
GEOIPUPDATE_ACCOUNT_ID=replace-me
GEOIPUPDATE_LICENSE_KEY=replace-me
Plausibleのあらゆる種類の環境変数の完全なリファレンスについては、こちらのドキュメントページにアクセスしてください。
この時点で、Plausibleのスタンドアロン展開をホストするために必要なすべての詳細を調べました。完全なdockercompose構成は次のようになります:
version: "3.3"
services:
plausible_db:
image: postgres:12
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=postgres
plausible_events_db:
image: yandex/clickhouse-server:latest
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
mail:
image: bytemark/smtp
restart: always
geoip:
image: maxmindinc/geoipupdate
environment:
- GEOIPUPDATE_EDITION_IDS=GeoLite2-Country
- GEOIPUPDATE_FREQUENCY=168 # update every 7 days
env_file:
- geoip-conf.env
volumes:
- geoip:/usr/share/GeoIP
restart: always
plausible:
image: plausible/analytics:latest
command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh db init-admin && /entrypoint.sh run"
depends_on:
- plausible_db
- plausible_events_db
- mail
- geoip
ports:
- 80:8000
env_file:
- plausible-conf.env
volumes:
db-data:
driver: local
event-data:
driver: local
geoip:
driver: local
この方法に従った場合は、次のセクションをスキップしてください。
ステップ1:[方法2]準備Nginxリバースプロキシ(単一サーバー、複数サービス)を使用したPlausibleの展開
これは代替方法であり、前のセクションで説明した方法1では使用できません。ここでリバースプロキシを設定する必要があります。上記のもっともらしい構成をリバースプロキシ設定でも機能させるために必要な修正を簡単に見ていきましょう。以前のNginxDockerの記事の例を使用しています。
Plausibleサービス以外の4つのサービスすべてについて、 plausible
という名前の内部ネットワークを使用します。 Plausibleだけで表示される必要があるためです。
networks:
- plausible
ただし、Plausibleサービスの場合、同じ net
リバースプロキシ構成で使用されるネットワークは、 plausible
とともに指定する必要があります もちろん、ネットワーク。そうして初めて、NginxDockerコンテナで動作させることができます。
networks:
- net
- plausible
また、ポート
を交換する必要があります expose
のパラメータ 現在リバースプロキシを使用しているため、Plausibleサービス内:
expose:
- 8000
構成の最後に、内部ネットワークと外部ネットワークのどちらを指定する必要もあります。
networks:
net:
external: true
plausible:
internal: true
また、 plausible-conf.env
を必ず更新する必要があります。 セットアップが正しく機能するように、次の変数を含むファイル:
VIRTUAL_HOST=plausible.domain.com
LETSENCRYPT_HOST=plausible.domain.com
TRUSTED_PROXIES=172.x.0.0/16
https://
なしでドメイン名を指定してください VIRTUAL_HOST
で およびLETSENCRYPT_HOST
これは、それぞれリバースプロキシとSSL証明書を対象としています。
TRUSTED_PROXIES
を使用 、Plausibleが信頼できるプロキシサーバーを明示的に定義します。正確な値は次の方法で取得できます:
docker inspect -f '{{ json .IPAM.Config }}' net | jq .[].Subnet
上記のコマンドを機能させるには、 jq
が必要です。 ツールはすでにインストールされています。
Ubuntuでは、次のコマンドでインストールできます:
sudo apt -y install jq
CentOSでは、最初にリポジトリを追加する必要があります:
yum install epel-release -y
yum install jq -y
したがって、リバースプロキシ用に改訂された最終的なdocker-compose.ymlファイルは次のとおりです。
version: "3.3"
services:
mail:
image: bytemark/smtp
restart: always
networks:
- plausible
plausible_db:
image: postgres:12
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=postgres
restart: always
networks:
- plausible
plausible_events_db:
image: yandex/clickhouse-server:latest
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
restart: always
networks:
- plausible
geoip:
image: maxmindinc/geoipupdate
environment:
- GEOIPUPDATE_EDITION_IDS=GeoLite2-Country
- GEOIPUPDATE_FREQUENCY=168 # update every 7 days
env_file:
- geoip-conf.env
volumes:
- geoip:/usr/share/GeoIP
restart: always
networks:
- net
- plausible
plausible:
image: plausible/analytics:latest
command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh db init-admin && /entrypoint.sh run"
depends_on:
- plausible_db
- plausible_events_db
- mail
- geoip
expose:
- 8000
env_file:
- plausible-conf.env
- plausible-smtp.env
restart: always
networks:
- net
- plausible
volumes:
db-data:
driver: local
event-data:
driver: local
geoip:
driver: local
networks:
net:
external: true
plausible:
internal: true
ステップ2:もっともらしいアナリティクスのデプロイ
方法1と方法2のどちらを使用したかに関係なく、docker-composeファイルを用意しておく必要があります。そのファイルを使用する時が来ました。
サーバーで、Plausibleホスティングリポジトリのクローンを作成します。
git clone https://github.com/plausible/hosting
ファイルを修正するためのディレクトリに移動します:
cd hosting
次に、docker-composeファイルを編集して、メソッド1またはメソッド2(どちらか選択した方)で見たものと同じコンテンツにします。また、上記の2つの方法のいずれかを使用して説明したように、変更が必要なすべての重要なファイルを修正します。
もっともらしいインスタンスを起動します:
docker-compose up -d
構成で指定したPlausibleドメインにアクセスします。このような画面が表示されます。 plausible-conf.env
で指定した資格情報を使用する ファイル、PlausibleDashboardにログインします。
ステップ3:ウェブサイトにもっともらしい分析を使用する
Plausibleで追跡および分析するWebサイトを追加するときが来ました。 Plausibleインスタンスのダッシュボードにログインしたら、[+Webサイトを追加]をクリックします。
ドメイン名を入力します(たとえば、 domain.com
) www
なし またはhttps://
[スニペットを追加]をクリックします
domain.com
に注意してください 任意のドメインにすることができ、そのサブドメインでPlausibleをホストすることとは何の関係もありません。もっともらしいインスタンスは他のドメイン名でホストできますが、必ずしも分析対象のドメインのサブドメインである必要はありません。
このJavaScriptスニペットをdomain.comWebサイトのヘッダースクリプトに追加する必要があります。 Webサイトにヘッダースクリプトを追加する方法を理解するのはあなた次第です。
Linuxハンドブックでは、Ghost、高速で軽量のCMSを使用しています。
Ghostでは、SETTINGS>コードインジェクション
の下のヘッダーセクションに貼り付ける必要があります [保存]をクリックします:
追加すると、メインパネルでドメインをクリックした直後に、ドメインのWeb分析を確認できるようになります。
WordPressやDiscourseなどの他のウェブアプリについては、公式の統合ガイドを参照することもできます。
Plsuibleを使用して週次または月次レポートを有効にする
domain.com
を想定 分析用に追加したドメインです。domain.com>[設定]>[メールレポート]
にアクセスしてください。 ダッシュボードにログインした後。
必要に応じて、必要なオプションを有効にします。
オタクになりたい場合は、次のURL構文に基づいてメール設定に直接アクセスすることもできます。
https://plausible.domain.com/domain.com/settings#email-reports
ここで、 plausible.domain.com
もっともらしいインスタンスとdomain.com
をホストする場所です 分析したいサイトです。
GeoIPを構成した場合は、ダッシュボードでグローバルマップを表示できます。ここでは、訪問者の国が紫色で網掛けされています。色の濃淡が濃いほど、その国の訪問者数は多くなります。
地図上の国にカーソルを合わせると、ウェブサイトの訪問者数が表示されます。 [もっと見る]をクリックすると、地図から国ごとの訪問者数の完全なリストが表示されます。
コンテナがリアルタイムでデプロイされているときにコンテナのログを確認する場合は、次のコマンドを実行できます。
docker logs -f hosting_plausible_1
インスタンスを停止する場合は、いつでも次を使用できます。
docker-compose down
それでおしまい!ダッシュボードにメールレポートと国別の地図統計を使用して、PlausibleAnalyticsを正常にデプロイしました。
それで、あなたはあなたのサーバーにもっともらしい分析を展開することを学びました。この目的のためにどの方法を選択しましたか?
リバースプロキシ方式を毎回使用することを好みます。これは、他のWebサービスをデプロイするオプションが常に残されているため、サーバーのコストを節約できるためです。
リバースプロキシ方式は、セットアップ全体が将来にわたって利用できるようになるため、単一サーバーの単一サービスモードの操作でも推奨されます。前のセクションで説明した方法で2番目のインスタンスをデプロイする場合は、新しいリバースプロキシ構成を変更して採用するために多くの追加作業が必要になります。したがって、最初から準備しておくことをお勧めします。
さらに、SSL証明書についても心配する必要はありません。
Dockerでライブ復元を有効にしている場合は、再起動ポリシー on-failure
を使用することをお勧めします 常に
の代わりに このガイドに示されています。 Dockerデーモンが再起動された場合に備えて、コンテナーの再起動を回避します。
Google Analyticsの代わりに、Google-freeAnalyticsをお楽しみください:)
エラーが発生したり、問題が発生したり、提案がある場合は、コメントを残してお知らせください。