Ubuntu20.04にUmamiWebAnalyticsソフトウェアをインストールする方法
序章
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以外のユーザーが
sudo
を使用せずにdocker
コマンドを実行できるようにする場合は、そのチュートリアルのステップ2に従うことができます。 - DockerComposeがインストールされています。 このソフトウェアをインストールするには、 Ubuntu20.04にDockerComposeをインストールして使用する方法のステップ1に従ってください。
注:DigitalOceanの1-ClickDocker Image を使用している場合、これらの前提条件の手順はスキップできます。 このイメージには、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
コマンドを使用して、ここに移動します。
- cd /opt
次に、git
コマンドを使用して、GitHubからリポジトリのクローンを作成します。
- sudo git clone https://github.com/mikecao/umami.git
これにより、すべてのソフトウェアと構成ファイルが/opt/umami
にプルされます。 新しく作成したumami
ディレクトリに移動します。
- cd umami
次に、プロジェクトのdocker-compose.yml
ファイルを更新する必要があります。 このファイルは、docker-compose
コマンドが複数のDockerコンテナーを一度に構成して起動するために使用するものです。 このファイルの2つのオプションを変更する必要があります。UmamiがバインドするIPと、データベース内のものを暗号化するときにソルトとして使用されるランダムハッシュです。
docker-compose.yml
を開いて編集する前に、ファイルに貼り付ける新しいランダムハッシュを生成しましょう。
- openssl rand -base64 32
OutputtCgKyCWc/3C9VH+Ex0TysXsGEKQklQXm0H3nSnlR48g=
これは、openssl
コマンドを使用して、32個のランダムな文字を生成します。 出力をクリップボードにコピーしてから、構成ファイルを開きます。
- sudo nano docker-compose.yml
HASH_SALT
オプションを見つけ、プレースホルダーテキストを削除して、生成したランダムハッシュを貼り付けます。
. . .
HASH_SALT: replace-me-with-a-random-string
. . .
次に、構成のports:
部分を見つけます。
. . .
ports:
- "127.0.0.1:3000:3000"
. . .
"3000:3000"
の値を更新します。 これにより、Umamiは localhost インターフェースでのみリッスンし、公開されなくなります。 UFWファイアウォールを設定していても、Dockerネットワークの動作にいくつかの癖があるため、この手順を実行しなかった場合、Umamiコンテナはポート3000
で一般にアクセス可能になります。
これらの構成変更が完了したら、ファイルを保存し(CTRL+O
次にENTER
をnano
に)、エディターを閉じます(CTRL+X
)。
次に、docker-compose
を使用して、2つのコンテナーを起動します。
- sudo docker-compose up --detach
--detach
フラグは、docker-compose
に、ターミナルセッションから切り離されたバックグラウンドでコンテナを作成するように指示します。
Output. . .
Creating umami_db_1 ... done
Creating umami_umami_1 ... done
UmamiとPostgreSQLが実行されています。 これを確認するには、curl
コマンドを使用して、localhostで実行されている新しいUmamiコンテナのホームページを取得します。
- 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へのリクエストの受け渡しとそのやり直しを処理します。
まず、パッケージリストを更新してから、apt
を使用してNginxをインストールします。
- sudo apt update
- sudo apt install nginx
「NginxFull」UFWアプリケーションプロファイルを使用して、ポート80
および443
(HTTPおよびHTTPS)へのパブリックトラフィックを許可します。
- sudo ufw allow "Nginx Full"
OutputRule added
Rule added (v6)
次に、/etc/nginx/sites-available
ディレクトリにある新しいNginx構成ファイルを開きます。 umami.conf
と呼びますが、別の名前を使用することもできます。
- sudo nano /etc/nginx/sites-available/umami.conf
以下を新しい構成ファイルに貼り付けます。必ずyour_domain_here
を、Umamiサーバーを指すように構成したドメインに置き換えてください。 これは、たとえばumami.example.com
のようになります。
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/
にリンクして構成を有効にします。
- sudo ln -s /etc/nginx/sites-available/umami.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
これで、うま味サイトがプレーンHTTPで利用できるようになります。 http://your_domain_here
をロードすると、次のようになります。
サイトがHTTP経由で稼働しているので、CertbotおよびLet’sEncrypt証明書を使用して接続を保護します。
ステップ3—CertbotのインストールとSSL証明書の設定
CertbotとLet’sEncryptの無料認証局のおかげで、UmamiアプリにSSL暗号化を追加するのに必要なコマンドは2つだけです。
まず、CertbotとそのNginxプラグインをインストールします。
- sudo apt install certbot python3-certbot-nginx
次に、certbot
を--nginx
モードで実行し、Nginxserver_name
構成で使用したものと同じドメインを指定します。
- sudo certbot --nginx -d your_domain_here
Let’s Encryptの利用規約に同意し、メールアドレスを入力するよう求められます。
その後、すべてのHTTPトラフィックをHTTPSにリダイレクトするかどうかを尋ねられます。 それはあなた次第ですが、これは一般的に推奨され、安全に行うことができます。
その後、Let’s Encryptがリクエストを確認し、Certbotが証明書をダウンロードします。
OutputCongratulations! 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証明書を使用して保護しました。
また、にログインし、デフォルトのパスワードを更新しておく必要があります。 そうでない場合は、今それを行います。
その後、公式ドキュメントを続けてウェブサイトをうま味に追加する方法を学び、ウェブサイトにトラッキングコードをインストールしてデータ収集を開始します。