Ubuntu20.04にMatomoWebAnalyticsをインストールする方法
序章
Matomo は、PHPで記述されたオープンソースのセルフホストWeb分析アプリケーションです。
このチュートリアルでは、Docker Composeを使用してMatomoとMariaDBデータベースをインストールしてから、NginxをインストールしてMatomoアプリのリバースプロキシとして機能させます。 最後に、Certbotを使用してLet’s Encrypt認証局からSSL証明書をダウンロードして構成することにより、安全なHTTPS接続を有効にします。
前提条件
このチュートリアルを完了するには、最初に次のものが必要です。
- UFWファイアウォールが有効になっているUbuntu20.04サーバー。 これらの要件の設定の詳細については、 Ubuntu20.04を使用した初期サーバー設定をお読みください。
- Dockerがインストールされています。 これを行うには、 Ubuntu20.04にDockerをインストールして使用する方法のステップ1を使用できます。 root 以外のユーザーが実行できるようにする場合は、オプションで、そのチュートリアルのステップ2に従うことができます。
docker
使用せずにコマンドsudo
- DockerComposeがインストールされています。 このソフトウェアをインストールするには、 Ubuntu20.04にDockerComposeをインストールして使用する方法のステップ1に従ってください。
注: DigitalOceanのワンクリックDockerイメージを使用している場合、これらの前提条件の手順はスキップできます。 このイメージには、Docker、Docker Compose、およびUFWがすでにインストールおよび構成されています。
選択したリージョンで新しいDockerイメージを起動し、 root ユーザーとしてログインして、チュートリアルを続行します。 root ユーザーを使用するため、 sudo
以下のすべてのコマンドの一部ですが、必須ではありません。
最後に、SSLを有効にするには、サーバーのパブリックIPアドレスを指すドメイン名が必要です。 これは次のようなものでなければなりません example.com
また matomo.example.com
、 例えば。 DigitalOceanを使用している場合は、コントロールパネルでドメインリソースを作成する方法について、DNSクイックスタートを参照してください。
すべての前提条件を満たしたら、ステップ1 に進み、Matomoソフトウェアをダウンロードして起動します。
ステップ1—DockerComposeでMatomoとMariaDBを実行する
最初のステップは、MatomoアプリとMariaDBデータベースの両方のコンテナーを起動するDockerCompose構成を作成することです。
このチュートリアルでは、構成を matomo
ホームディレクトリのディレクトリ。 また、で働くことを選択することができます /opt/matomo
ディレクトリまたは選択した他のディレクトリ。
まず、ホームディレクトリにいることを確認します。
- cd ~
次に、を作成します matomo
ディレクトリと cd
それに:
- mkdir matomo
- cd matomo
次に、という新しい空のYAMLファイルを開きます docker-compose.yml
:
- nano docker-compose.yml
これは、 docker-compose
コンテナを起動すると、ソフトウェアが読み取ります。 以下をファイルに貼り付けます。
version: "3"
services:
db:
image: mariadb
command: --max-allowed-packet=64MB
restart: always
environment:
- MARIADB_DATABASE=matomo
- MARIADB_USER
- MARIADB_PASSWORD
- MARIADB_ROOT_PASSWORD
volumes:
- ./db:/var/lib/mysql
app:
image: matomo
restart: always
volumes:
- ./matomo:/var/www/html
ports:
- 127.0.0.1:8080:80
ファイルは2つを定義します services
、 1 db
MariaDBコンテナであるサービス、および app
Matomoソフトウェアを実行するサービス。 どちらのサービスも、データを格納する名前付きボリュームを参照し、 app
サービスもポートを開きます 8080
ループバックで(127.0.0.1
)インターフェース。 localhost
.
ファイルを保存し、テキストエディタを終了して続行します。 の nano
、 押す CTRL+O
それから ENTER
保存してから CTRL+X
出る。
MariaDBコンテナーが機能するには、環境変数を介してコンテナーに渡される構成が必要です。 The docker-compose.yml
ファイルにはこれらの環境変数がリストされていますが、すべてに値が関連付けられているわけではありません。 これは、パスワードを自分のパスワードから遠ざけることをお勧めするためです。 docker-compose.yml
ファイル、特にGitリポジトリまたは他のソース管理システムにコミットする場合。
代わりに、必要な情報を .env
同じディレクトリ内のファイル。 docker-compose
コンテナを起動すると、コマンドが自動的に読み込まれます。
新しいを開く .env
とファイル nano
:
- nano .env
ユーザー名とパスワード、およびMariaDB rootスーパーユーザーアカウントの強力なパスワードを入力する必要があります。
MARIADB_USER=matomo
MARIADB_PASSWORD=a_strong_password_for_user
MARIADB_ROOT_PASSWORD=a_strong_password_for_root
強力なパスワードを生成する1つの方法は、 openssl
コマンド。ほとんどのオペレーティングシステムで使用できます。 次のコマンドは、パスワードとして使用できるランダムな30文字のハッシュを出力します。
- openssl rand 30 | base64 -w 0 ; echo
あなたがあなたの情報を記入し終えたら .env
ファイルを保存し、テキストエディタを終了します。
これで、2つのコンテナを次のように表示する準備ができました。 docker-compose
:
- sudo docker-compose up -d
The up
サブコマンドは docker-compose
で定義されたコンテナ(およびボリュームとネットワーク)を開始するには docker-compose.yml
ファイル、および -d
フラグは、コマンドが端末を引き継がないように、バックグラウンドで実行するように指示します(「デーモン化」)。 docker-compose
コンテナを起動すると、簡単な出力が出力されます。
OutputCreating matomo_db_1 ... done
Creating matomo_app_1 ... done
それが完了すると、Matomoが実行されているはずです。 Webサーバーがで実行されていることをテストできます localhost:8080
を使用してホームページを取得する curl
指図:
- curl --head http://localhost:8080
これにより、応答からHTTPヘッダーのみが出力されます。
OutputHTTP/1.1 200 OK
Date: Tue, 25 Jan 2022 19:56:16 GMT
Server: Apache/2.4.51 (Debian)
X-Powered-By: PHP/8.0.14
X-Matomo-Request-Id: 1e953
Cache-Control: no-store, must-revalidate
Referrer-Policy: same-origin
Content-Security-Policy: default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' 'unsafe-inline' 'unsafe-eval' data:;
Set-Cookie: MATOMO_SESSID=dde7d477b0822e166ed90448964ec1e7; path=/; HttpOnly; SameSite=Lax
Content-Type: text/html; charset=utf-8
The 200 OK
応答は、Matomoサーバーが稼働していることを意味しますが、 localhost
. 強調表示 X-Matomo-Request-Id
ヘッダーは、サーバーがMatomoであり、ポート8080でリッスンするように構成されている可能性のある他のものではないことを示します。 次に、パブリックトラフィックをMatomoコンテナにプロキシするようにNginxを設定します。
ステップ2—Nginxのインストールと構成
NginxなどのWebサーバーをMatomoサーバーの前に配置すると、キャッシュ、圧縮、静的ファイルの提供をより効率的なプロセスにオフロードすることで、パフォーマンスを向上させることができます。 Nginxをインストールし、Matomoへのリバースプロキシリクエストを構成します。つまり、ユーザーからMatomoへのリクエストの受け渡しとそのやり直しを処理します。 コンテナ化されていないNginxを使用すると、次のステップでLet’sEncryptSSL証明書を簡単に追加することもできます。
まず、パッケージリストを更新してから、を使用してNginxをインストールします apt
:
- sudo apt update
- sudo apt install nginx
ポートへのパブリックトラフィックを許可する 80
と 443
(HTTPおよびHTTPS)「NginxFull」UFWアプリケーションプロファイルの使用:
- sudo ufw allow "Nginx Full"
OutputRule added
Rule added (v6)
次に、で新しいNginx構成ファイルを開きます /etc/nginx/sites-available
ディレクトリ。 私たちは私たちと呼びます matomo.conf
ただし、別の名前を使用することもできます。
- sudo nano /etc/nginx/sites-available/matomo.conf
以下を新しい構成ファイルに貼り付けます。必ず置き換えてください。 your_domain_here
Matomoサーバーを指すように構成したドメインを使用します。 これは次のようなものでなければなりません matomo.example.com
、 例えば:
server {
listen 80;
listen [::]:80;
server_name your_domain_here;
access_log /var/log/nginx/matomo.access.log;
error_log /var/log/nginx/matomo.error.log;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto https;
proxy_pass http://localhost:8080;
}
}
次のステップでCertbotにSSLの構成を任せるため、この構成は現時点ではHTTPのみです。 残りの構成では、ログの場所を設定してから、すべてのトラフィックといくつかの重要なプロキシヘッダーを http://localhost:8080
、前のステップで起動したMatomoコンテナ。
ファイルを保存して閉じ、にリンクして構成を有効にします /etc/nginx/sites-enabled/
:
- sudo ln -s /etc/nginx/sites-available/matomo.conf /etc/nginx/sites-enabled/
使用する nginx -t
構成ファイルの構文が正しいことを確認するには、次のようにします。
- sudo nginx -t
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
そして最後に、 nginx
新しい構成を取得するサービス:
- sudo systemctl reload nginx
これで、MatomoサイトがプレーンHTTPで利用できるようになります。 ロード http://your_domain_here
(セキュリティ警告をクリックする必要があるかもしれません)そしてそれは次のようになります:
サイトがHTTP経由で稼働しているので、CertbotおよびLet’sEncrypt証明書を使用して接続を保護します。 これは、MatomoのWebベースのセットアップ手順を実行する前に実行する必要があります。
ステップ3—CertbotのインストールとSSL証明書の設定
CertbotとLet’sEncryptの無料認証局のおかげで、MatomoアプリにSSL暗号化を追加するのに必要なコマンドは2つだけです。
まず、CertbotとそのNginxプラグインをインストールします。
- sudo apt install certbot python3-certbot-nginx
次に、実行します certbot
の --nginx
モードにし、Nginxで使用したのと同じドメインを指定します server_name
構成:
- sudo certbot --nginx -d your_domain_here
Let’s Encryptの利用規約に同意し、メールアドレスを入力するよう求められます。
その後、すべてのHTTPトラフィックをHTTPSにリダイレクトするかどうかを尋ねられます。 それはあなた次第ですが、これは一般的に推奨され、安全に行うことができます。
その後、Let’s Encryptがリクエストを確認し、Certbotが証明書をダウンロードします。
OutputCongratulations! You have successfully enabled https://matomo.example.com
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=matomo.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/matomo.example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/matomo.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に切り替わります。
これでサイトは安全になり、Webベースのセットアップ手順を安全に続行できます。
ステップ4—Matomoをセットアップする
Webブラウザーに戻ると、Matomoの Welcome!ページが安全な方法で開かれているはずです。 https://
繋がり。 これで、ユーザー名とパスワードを安全に入力して、インストールプロセスを完了することができます。
次へボタンをクリックします。 システムチェックの手順に進みます。
これはMatomoが実行されているシステムの概要であり、すべてが問題がないことを示す緑色のチェックマークである必要があります。 一番下までスクロールして、次へボタンをクリックします。
これで、データベース設定ページが表示されます。
このページに入力する情報は、MatomoアプリケーションにMariaDBデータベースへの接続方法を指示します。 あなたが必要になります MARIADB_USER
と MARIADB_PASSWORD
手順1で選択したもの。 あなたはあなたからそれらをコピーすることができます .env
必要に応じてファイルします。
最初の4つのフィールドに入力します。
- データベースサーバー: db
- ログイン:で設定したユーザー名
MARIADB_USER
環境変数 - パスワード:で設定したパスワード
MARIADB_PASSWORD
環境変数 - データベース名: matomo
残りの2つのフィールドでは、デフォルトで問題ありません。
もう一度次へをクリックします。 データベースが正しく設定されたことを確認するメッセージが表示されます。 もう一度次へをクリックします。 次に、管理者ユーザーを設定する必要があります。最後に、分析を収集する最初のWebサイトに関する情報を設定します。
その後、おめでとうございますページのステップ8に進む必要があります。 ほぼすべて完了です。 下にスクロールしてMatomoに進むボタンをクリックすると、ホームページに移動します。
ページの上部に大きな警告が表示されます。 このプロセスを完了するには、Matomoの構成ファイルに対して行う必要のある小さな更新があります。
コマンドラインに戻り、テキストエディタで構成ファイルを開きます。
- sudo nano matomo/config/config.ini.php
上部の近くにあるはずです [General]
セクション。 そのセクションの最後に、以下で強調表示されている最後の3行を追加します。
[General]
proxy_client_headers[] = "HTTP_X_FORWARDED_FOR"
proxy_host_headers[] = "HTTP_X_FORWARDED_HOST"
salt = "e0a81d6e54d6d2200efd0f0ef6ef8563"
trusted_hosts[] = "localhost"
trusted_hosts[] = "example.com"
trusted_hosts[] = "localhost:8080"
assume_secure_protocol = 1
force_ssl = 1
これらのオプションは、Matomoにポートを安全に使用できることを知らせます 8080
、そしてそれは常に安全な接続を介してアクセスされていると想定する必要があります。
構成ファイルを保存して閉じてから、ブラウザーに戻ってページをリロードします。 エラーは解消され、ログインプロンプトが表示されます。
セットアップ中に作成した管理者アカウントでログインすると、ダッシュボードが表示されます。
トラッキングコードをまだ設定していない可能性があるため、ダッシュボードにはデータが記録されていないことが示されます。 指示に従って、WebサイトでのJavaScriptコードの設定を完了し、分析データの受信を開始します。
結論
このチュートリアルでは、Docker Composeを使用してMatamo分析アプリとMariaDBデータベースを起動し、Nginxリバースプロキシを設定して、Let’sEncryptSSL証明書を使用して保護しました。
これで、Webサイトをセットアップし、Matomo分析追跡スクリプトを追加する準備が整いました。 Matomoソフトウェアの操作の詳細については、公式のMatomoドキュメントを参照してください。