序章

Umami は、Node.jsで記述されたオープンソースの自己ホスト型Web分析アプリケーションです。 それは、シンプルで、うまく設計され、高速で、プライバシーに重点を置いていることに焦点を当てています。 それはあなたのウェブサイトの訪問者に関するデータをMySQLまたはPostgreSQLデータベースのいずれかに保存することができます。

このチュートリアルでは、Docker Composeを使用してUmamiとPostgreSQLデータベースをインストールしてから、NginxをインストールしてUmamiのリバースプロキシとして機能させます。 最後に、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の1-DockerImage をクリックする場合は、これらの前提条件の手順をスキップできます。 このイメージには、Docker、Docker Compose、およびUFWがすでにインストールおよび構成されています。

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

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

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

ステップ1—DockerComposeを使用したUmamiとPostgreSQLのインストール

最初のステップは、Umami Gitリポジトリのクローンを作成し、 docker-compose.yml 設定ファイルを作成し、UmamiコンテナとPostgreSQLコンテナを起動します。

リポジトリをにダウンロードします /opt ディレクトリ。 使用 cd 今そこに行くコマンド:

  1. cd /opt

次に、 git GitHubからリポジトリのクローンを作成するコマンド:

  1. sudo git clone https://github.com/mikecao/umami.git

これにより、すべてのソフトウェアと構成ファイルがにプルされます /opt/umami. 新しく作成されたものに移動します umami 今すぐディレクトリ:

  1. cd umami

次に、プロジェクトを更新する必要があります docker-compose.yml ファイル。 このファイルは何ですか docker-compose コマンドは、複数のDockerコンテナを一度に構成して起動するために使用します。 このファイルの2つのオプションを変更する必要があります。UmamiがバインドするIPと、データベース内のものを暗号化するときにソルトとして使用されるランダムハッシュです。

開く前に docker-compose.yml 編集するには、ファイルに貼り付ける新しいランダムハッシュを生成しましょう。

  1. openssl rand -base64 32
Output
tCgKyCWc/3C9VH+Ex0TysXsGEKQklQXm0H3nSnlR48g=

これは openssl 32個のランダムな文字を生成するコマンド。 出力をクリップボードにコピーしてから、構成ファイルを開きます。

  1. sudo nano docker-compose.yml

を見つける HASH_SALT オプションで、プレースホルダーテキストを削除し、生成したランダムハッシュを貼り付けます。

docker-compose.yml
. . .
      HASH_SALT: replace-me-with-a-random-string
. . .

次に、 ports: 構成の一部:

docker-compose.yml
. . .
    ports:
      - "127.0.0.1:3000:3000"
. . .

を更新します "3000:3000" 付加による価値 127.0.0.1: それに。 これにより、Umamiは localhost インターフェースでのみリッスンし、公開されなくなります。 UFWファイアウォールを設定していても、Dockerネットワークの動作にいくつかの癖があるため、この手順を実行しなかった場合、Umamiコンテナはポートで一般にアクセス可能になります。 3000.

これらの構成変更が完了したら、ファイルを保存します(CTRL+O それから ENTERnano)そしてエディタを閉じます(CTRL+X).

今、使用します docker-compose 2つのコンテナを起動するには:

  1. sudo docker-compose up --detach

The --detach フラグが伝えます docker-compose ターミナルセッションから切り離して、バックグラウンドでコンテナを作成するには:

Output
. . . Creating umami_db_1 ... done Creating umami_umami_1 ... done

UmamiとPostgreSQLが実行されています。 これを確認するには、 curl localhostで実行されている新しいUmamiコンテナのホームページを取得するコマンド:

  1. curl localhost:3000
Output
<!DOCTYPE html><html><head><meta charSet="utf-8"/> . . .

HTMLの大きなチャンクがターミナルに出力される場合は、Umamiサーバーが稼働していることがわかります。

次に、Nginxをリバースプロキシうま味に設定します。 localhost:3000 一般に。

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

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

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

  1. sudo apt update
  2. sudo apt install nginx

ポートへのパブリックトラフィックを許可する 80443 (HTTPおよびHTTPS)「NginxFull」UFWアプリケーションプロファイルの使用:

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

次に、で新しいNginx構成ファイルを開きます /etc/nginx/sites-available ディレクトリ。 私たちは私たちと呼びます umami.conf ただし、別の名前を使用することもできます。

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

以下を新しい構成ファイルに貼り付けます。必ず置き換えてください。 your_domain_here Umamiサーバーを指すように構成したドメインを使用します。 これは次のようになります umami.example.com、 例えば:

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

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

    location / {
      proxy_pass http://localhost:3000;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

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

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

  1. sudo ln -s /etc/nginx/sites-available/umami.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’sEncrypt証明書を使用して接続を保護します。

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

CertbotとLet’sEncryptの無料認証局のおかげで、Umamiアプリに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://umami.example.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=umami.example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/umami.example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/umami.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に切り替わります。

これでサイトは安全になり、デフォルトのユーザーadminとパスワードで安全にログインできます。 umami. すぐにこれを行い、公式の初回ログインドキュメントに従ってログインし、adminパスワードをより安全なものに変更してください。

最初にログインすると、ややむき出しのダッシュボードが表示されます。

これで、うま味分析ソフトウェアが正常にインストールされ、保護されました。 このチュートリアルの最後に、サイトをUmamiに追加し、Umamiトラッキングスニペットをサイトに追加するためのドキュメントへのリンクがあります。

結論

このチュートリアルでは、Docker Composeを使用してUmamiアプリとPostgreSQLデータベースを起動し、Nginxリバースプロキシを設定して、Let’sEncryptSSL証明書を使用して保護しました。

また、にログインし、デフォルトのパスワードを更新しておく必要があります。 そうでない場合は、今それを行います。

その後、公式ドキュメントに進み、ウェブサイトをうま味に追加する方法を学びます。次に、ウェブサイトにトラッキングコードをインストールして、データ収集を開始します。