開発者ドキュメント

Ubuntu20.04にPlausibleAnalyticsをインストールする方法

序章

Plausible Analytics は、シンプルさとプライバシーに重点を置いたElixirで記述されたオープンソースのセルフホストWeb分析アプリケーションです。 Webサイトの訪問者に関するデータをPostgreSQLおよびClickHouseデータベースに保存します。

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

前提条件

このチュートリアルを完了するには、最初に次のものが必要です。

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

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

最後に、SSLを有効にするには、サーバーのパブリックIPアドレスを指すドメイン名が必要です。 たとえば、example.complausible.example.comのようになります。 DigitalOceanを使用している場合は、コントロールパネルでドメインリソースを作成する方法について、DNSクイックスタートを参照してください。

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

ステップ1-DockerComposeを使用したPlausibleAnalyticsのインストール

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つの変数が含まれています。

もっともらしい-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文字以上である必要があることに注意してください。

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

このファイルに追加できる構成オプションは他にもありますが、この最小限のセットで稼働させることができます。 plausible-conf.envを介したPlausibleの構成の詳細については、PlausibleAnalyticsの公式セルフホスティングドキュメントを参照してください。

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

  1. sudo nano docker-compose.yml

もっともらしいコンテナを定義するセクションを見つけます。 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コマンドを使用して、localhostで実行されている新しいPlausibleコンテナのホームページを取得します。

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

一部のHTMLが端末に出力されている場合は、サーバーが稼働していることがわかります。

次に、Nginxをリバースプロキシに設定します。localhost:8000から一般に公開されます。

ステップ2—Nginxのインストールと構成

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

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

  1. sudo apt update
  2. sudo apt install nginx

「NginxFull」UFWアプリケーションプロファイルを使用して、ポート80および443(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

以下を新しい構成ファイルに貼り付けます。必ずyour_domain_hereを、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;
  }
}

次のステップでCertbotにSSLの構成を任せるため、この構成は現時点ではHTTPのみです。 残りの構成では、ログの場所を設定してから、すべてのトラフィックをhttp://localhost:8000に渡します。これは、前の手順で起動したPlausibleインスタンスです。

ファイルを保存して閉じ、/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

これで、PlausibleサイトがプレーンHTTPで利用できるようになります。 http://your_domain_hereをロードすると、次のようになります。

サイトがHTTP経由で稼働しているので、CertbotおよびLet’sEncrypt証明書を使用して接続を保護します。

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

CertbotとLet’sEncryptの無料認証局のおかげで、PlausibleアプリにSSL暗号化を追加するのに必要なコマンドは2つだけです。

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

  1. sudo apt install certbot python3-certbot-nginx

次に、certbot--nginxモードで実行し、Nginxserver_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 2021-12-06. 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セルフホスティングドキュメントを参照してください。

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

これで、Plausible Analyticsソフトウェアが正常にインストールされ、保護されました。

結論

このチュートリアルでは、DockerComposeを使用してPlausibleAnalyticsアプリとそれに関連するヘルパーコンテナーを起動し、Nginxリバースプロキシをセットアップして、Let’sEncryptSSL証明書を使用して保護しました。

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

モバイルバージョンを終了