Ubuntu 22.04にPlausible Analyticsをインストールする方法

導入

Plausible Analyticsは、シンプルさとプライバシーに焦点を当てたオープンソースのセルフホスト型ウェブ解析アプリケーションであり、Elixirで書かれています。このアプリケーションは、ウェブサイトの訪問者に関するデータをPostgreSQLおよびClickHouseデータベースに保存します。

このチュートリアルでは、Docker Composeを使用してPlausibleをインストールし、次にNginxをインストールしてPlausibleアプリケーションのリバースプロキシとして機能させます。最後に、Let’s Encrypt証明書のダウンロードと構成をCertbotを使用して行い、安全なHTTPS接続を有効にします。

前提条件

このチュートリアルを完了するためには、まず以下が必要です:

  • UFWファイアウォールが有効になっているUbuntu 22.04サーバー。これらの要件を設定する詳細については、Ubuntu 22.04での初期サーバー設定をお読みください。
  • Dockerをインストールしました。これを実行するには、Step 1を使用しますUbuntu 22.04にDockerをインストールして使用する方法。オプションで、非rootユーザーがsudoを使用せずにdockerコマンドを実行できるようにするには、そのチュートリアルのStep 2に従うことができます
  • Docker Composeをインストールしました。このソフトウェアをインストールするには、Ubuntu 22.04にDocker Composeをインストールして使用する方法のStep 1に従ってください

注意: これらの前提条件は、DigitalOceanのワンクリックDockerイメージを使用している場合はスキップできます。このイメージには、Docker、Docker Compose、およびUFWがすでにインストールおよび構成されています。

選択した地域に新しいDockerイメージを起動し、次にrootユーザーとしてログインしてチュートリアルを続行します。オプションで、すべてのコマンドのsudo部分を省略することもできますが、必要ありません。

最後に、SSLを有効にするには、ドメイン名をサーバーのパブリックIPアドレスに向ける必要があります。これは、example.comまたはplausible.example.comなどのものである必要があります。DigitalOceanを使用している場合は、コントロールパネルでドメインリソースを作成する方法について、当社のDNSクイックスタートを参照してください。

すべての前提条件を満たしたら、ステップ1に進み、Plausibleソフトウェアをダウンロードして起動します。

ステップ1 – Docker Composeを使用してPlausible Analyticsをインストールする

Plausibleは、ソフトウェアを自己ホストするために必要なすべての構成ファイルを含むGitリポジトリを作成しました。最初のステップは、このリポジトリをサーバーにクローンし、2つの構成ファイルを更新し、Plausibleアプリケーションとデータベースコンテナを起動することです。

今すぐサーバーにログインしてください。

まず、cdコマンドを使用して/optディレクトリに移動します:

  1. cd /opt

次に、gitコマンドを使用して、GitHubからリポジトリを/opt内のplausibleという新しいディレクトリにクローンします:

  1. sudo git clone https://github.com/plausible/hosting plausible

これにより、すべての必要な構成ファイルが/opt/plausibleに取得されます。新しく作成されたディレクトリに移動します:

  1. cd plausible

最初に編集する必要があるファイルはplausible-conf.envです。これは、設定する必要があるいくつかの構成変数を持つファイルです。

ファイルを開いて編集する前に、新しいランダムハッシュを生成します:

  1. openssl rand 64 | base64 -w 0 ; echo

これには、opensslコマンドを使用して64個のランダムな文字を生成し、base64コマンドを使用してそれらをBase64エンコードします。出力をクリップボードにコピーし、次に構成ファイルを開きます:

  1. sudo nano plausible-conf.env

ファイルには、埋める必要がある5つの変数が含まれています。

plausible-conf.env
ADMIN_USER_EMAIL=your_email_here
ADMIN_USER_NAME=admin_username
ADMIN_USER_PWD=admin_password
BASE_URL=https://your_domain_here
SECRET_KEY_BASE=paste_your_random_characters_here

メール、ユーザー名、パスワード、ベースURLを入力し、次にopensslで生成したランダムな文字列を貼り付けてください。

注意:ここで指定するパスワードは、少なくとも6文字の長さである必要があります。ドメイン名ではなく、裸のIPアドレスを使用している場合は、http://を先頭に付けてください。

ファイルを保存します(nanoCTRL+OENTER、エディターを閉じます(CTRL+X

このファイルに追加できる設定オプションがもっとありますが、この最小限の設定で動作を開始できます。Plausibleをplausible-conf.envを介して構成する詳細情報は、公式Plausible Analyticsセルフホスティングドキュメントで確認できます。

次に、docker-compose.ymlファイルを更新する必要があります。このファイルは、docker-composeコマンドが複数のDockerコンテナを構成および起動するために使用します。このファイルの中で1つのオプションを変更する必要があります:PlausibleがバインドするIPアドレスです。

  1. sudo nano docker-compose.yml

Plausibleコンテナを定義するセクションを見つけます。これはplausible:で始まります。そのセクションでports:の定義を見つけ、それを次のように更新してください:

docker-compose.yml
    ports:
      - 127.0.0.1:8000:8000

これにより、Plausibleがlocalhostインターフェースのみにリスニングされ、一般には利用できなくなります。UFWファイアウォールが設定されていても、Dockerネットワーキングの仕組みに関するいくつかの不具合があるため、この手順を実行しないと、Plausibleコンテナがポート8000で一般にアクセス可能になりますが、次の手順で設定するNginxプロキシを介してのみアクセスできるようにしたいです。

docker-compose.ymlファイルを保存して閉じたら、docker-composeを使用してコンテナをダウンロード、設定、起動します。

  1. sudo docker compose up --detach

--detachフラグは、docker-composeにコンテナをバックグラウンドで作成し、ターミナルセッションから切り離すように指示します。

Output
. . . Starting plausible_plausible_events_db_1 ... done Starting plausible_plausible_db_1 ... done Starting plausible_mail_1 ... done Starting plausible_plausible_1 ... done

アプリケーションコンテナとそのサポートメールおよびデータベースコンテナが今実行されているはずです。これを確認するには、curlコマンドを使用して新しいPlausibleコンテナのホームページを取得します。localhostで実行中:

  1. curl http://localhost:8000
Output
<html><body>You are being <a href="/login">redirected</a>.</body></html>

いくつかのHTMLがターミナルに出力された場合、サーバーが起動して実行されていることがわかります。

次に、Nginxを設定して、Plausibleをlocalhost:8000から公開に逆プロキシします。

ステップ2 — Nginxのインストールと設定

Webサーバー(例えばNginx)をElixirサーバーの前に配置すると、キャッシュ、圧縮、静的ファイルの提供などをより効率的なプロセスにオフロードすることで、パフォーマンスを向上させることができます。Nginxをインストールし、Plausibleへのリクエストをリバースプロキシするように構成します。つまり、ユーザーからPlausibleへのリクエストとその逆を処理することになります。

まず、パッケージリストを更新し、aptを使用してNginxをインストールします:

  1. sudo apt update
  2. sudo apt install nginx

「Nginx Full」UFWアプリケーションプロファイルを使用して、ポート80443(HTTPとHTTPS)へのパブリックトラフィックを許可します:

  1. sudo ufw allow "Nginx Full"
Output
Rule added Rule added (v6)

次に、/etc/nginx/sites-availableディレクトリに新しいNginx構成ファイルを開きます。ここではplausible.confと呼びますが、異なる名前を使用することもできます:

  1. sudo nano /etc/nginx/sites-available/plausible.conf

以下の内容を新しい構成ファイルに貼り付けます。ドメインは、Plausibleサーバーを指すように構成されたものに置き換えてください。plausible.example.comのようなものになります:

/etc/nginx/sites-available/plausible.conf
server {
    listen       80;
    listen       [::]:80;
    server_name  your_domain_here;

    access_log  /var/log/nginx/plausible.access.log;
    error_log   /var/log/nginx/plausible.error.log;

    location / {
      proxy_pass http://localhost:8000;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

この構成は現時点ではHTTPのみです。次の手順ではCertbotがSSLを構成するため、残りの構成ではログの場所を設定し、すべてのトラフィックをhttp://localhost:8000に渡します。

ファイルを保存して閉じ、その後、構成を/etc/nginx/sites-enabled/にリンクして有効にします:

  1. sudo ln -s /etc/nginx/sites-available/plausible.conf /etc/nginx/sites-enabled/

構成ファイルの構文が正しいかどうかを確認するためにnginx -tを使用します:

  1. sudo nginx -t
Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

最後に、新しい構成を読み込むためにnginxサービスをリロードします。

  1. sudo systemctl reload nginx

プラウジブルサイトは今、プレーンなHTTPで利用可能になっています。以下のようにhttp://your_domain_hereをロードすると、次のようになります:

サイトがHTTPで稼働しているので、次は接続をCertbotとLet’s Encrypt証明書で安全にする時です。

ステップ3 — CertbotのインストールとSSL証明書の設定

CertbotとLet’s Encryptの無料証明書機関のおかげで、PlausibleアプリにSSL暗号化を追加するのはたったの2つのコマンドだけです。

まず、CertbotとそのNginxプラグインをインストールします:

  1. sudo apt install certbot python3-certbot-nginx

次に、certbot--nginxモードで実行し、Nginxのserver_name構成で使用した同じドメインを指定します:

  1. sudo certbot --nginx -d your_domain_here

Let’s Encryptの利用規約に同意し、メールアドレスを入力するよう求められます。

その後、すべてのHTTPトラフィックをHTTPSにリダイレクトするかどうかを尋ねられます。選択はあなた次第ですが、一般的にはこれが推奨されており、安全です。

その後、Let’s Encryptがリクエストを確認し、Certbotが証明書をダウンロードします:

Output
Congratulations! You have successfully enabled https://plausible.example.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=plausible.example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/plausible.example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/plausible.example.com/privkey.pem Your cert will expire on 2022-12-05. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

Certbotは新しい構成と証明書を反映するためにNginxを自動的にリロードします。サイトをリロードすると、リダイレクトオプションを選択した場合、自動的にHTTPSに切り替わるはずです。

サイトは現在安全であり、ステップ1で設定したデフォルトのユーザー詳細を使用してログインしても安全です。その後、登録を確認するよう求められ、構成したアドレスに確認コードがメールで送信されます。

デフォルトでは、このメールはサーバーから直接送信されますが、さまざまなスパム防止措置によって問題が発生する可能性があります。メールを受信しない場合は、スパムフォルダーを確認してください。それでもメールがない場合は、plausible-conf.envファイルで適切なSMTPの詳細を設定する必要があるかもしれません。公式の Plausible 自己ホストドキュメントを参照してメールの構成の詳細を確認してください。

ログインに成功すると、Plausible の最初のウェブサイトを設定するプロンプトが表示されます。

Plausible アナリティクスソフトウェアをインストールしてセキュリティを確保しました。

結論

このチュートリアルでは、Docker Compose を使用して Plausible Analytics アプリケーションと関連するヘルパーコンテナーを起動し、Nginx リバースプロキシを設定し、Let’s Encrypt SSL 証明書を使用してセキュリティを確保しました。

これで、ウェブサイトを設定し、Plausible Analytics トラッキングスクリプトを追加する準備が整いました。ソフトウェアの使用方法やサイトの設定についての詳細については、公式の Plausible Analytics ドキュメントを参照してください。

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-plausible-analytics-on-ubuntu-22-04