GNU/Linux >> Linux の 問題 >  >> Linux

自己ホスティングのもっともらしい[プライバシーにやさしいGoogleAnalyticsの代替案]の完全ガイド

倫理的なウェブサイトとして、私たちは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つの追加機能を使用して構成する必要があります。

電子メールレポートのSMTPセットアップ[オプション]

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
上記の構成ファイルで、さらにDISABLE_REGISTRATION変数をtrueに設定することもできます。この構成は、Plausibleインスタンスが起動して実行された後、新しいユーザーの登録を許可したくない場合に意味があります。ただし、管理者の資格情報は適切にバックアップしておいてください。

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をお楽しみください:)

エラーが発生したり、問題が発生したり、提案がある場合は、コメントを残してお知らせください。


Linux
  1. Void Linuxのインストール方法:完全なステップバイステップガイド

  2. セルフホスティングRocket.ChatとDockerの完全ガイド

  3. Ubuntu Server 16.04 LTS に Zabbix をインストールする - 完全ガイド

  1. Grep正規表現:完全ガイド

  2. 電子メールサーバーを構成するためのシステム管理者ガイド

  3. LinuxでAsciiDocを使用するための完全ガイド

  1. Linuxコマンド-完全ガイド

  2. ChromebookにLinuxをインストールするための完全ガイド

  3. LinuxのOnePlusOneにOxygenOSをインストールするための完全ガイド