Ubuntu20.04にFathomAnalyticsをインストールする方法
序章
Fathom Analytics は、シンプルさとプライバシーに重点を置いた、オープンソースの自己ホスト型Web分析アプリケーションです。 Goで記述され、単一のバイナリファイルとして出荷されるため、インストールは比較的簡単です。
このチュートリアルでは、Fathomをインストールして構成してから、Fathomアプリのリバースプロキシとして機能するようにNginxをインストールします。 最後に、Certbotを使用してLet’s Encrypt認証局からSSL証明書をダウンロードして構成することにより、安全なHTTPS接続を有効にします。
前提条件
このチュートリアルを完了するには、最初に次のものが必要です。
- Ubuntu 20.04サーバー、UFWファイアウォールが有効になっていて、root以外のユーザーが
sudo
構成された特権。 これらの要件の設定の詳細については、 Ubuntu20.04を使用した初期サーバー設定をお読みください。 - サーバーのパブリックIPアドレスを指すドメイン名。 これは次のようなものでなければなりません
example.com
またfathom.example.com
、 例えば。 DigitalOceanを使用している場合は、コントロールパネルでドメインリソースを作成する方法について、DNSクイックスタートを参照してください。
すべての前提条件を満たしたら、ステップ1 に進み、Fathomをダウンロードしてインストールします。
ステップ1—Fathomをダウンロードする
Fathomソフトウェアをインストールするには、最初に最新のリリースをダウンロードしてから、実行可能ファイルをに抽出します。 /usr/local/bin
ディレクトリ。
まず、書き込み可能なディレクトリに移動します。 The /tmp
ディレクトリは良い選択です:
- cd /tmp
Webブラウザーで、 Fathomの最新ソフトウェアリリースのGitHubページにアクセスし、次のような名前のファイルを見つけます。 fathom_1.2.1_linux_amd64.tar.gz
. バージョン番号は異なる場合があります。
ファイルへのリンクを右クリックし、[リンクのコピー](またはブラウザによっては同様のもの)を選択します。
使用 curl
コピーしたリンクからファイルをダウンロードするコマンド:
- curl -L -O https://github.com/usefathom/fathom/releases/download/v1.2.1/fathom_1.2.1_linux_amd64.tar.gz
これで、 fathom_1.2.1_linux_amd64.tar.gz
あなたのファイル /tmp
ディレクトリ。 使用 tar
を抽出するコマンド fathom
実行可能ファイルに移動します /usr/local/bin
:
- sudo tar -C /usr/local/bin/ -xzf fathom*.tar.gz fathom
The sudo
コマンドが必要なのは /usr/local/bin
は保護されたディレクトリであるため、書き込むにはスーパーユーザー権限が必要です。
今すぐ使用 sudo
と chmod
の権限を更新するには fathom
バイナリ:
- sudo chmod +x /usr/local/bin/fathom
これにより fathom
実行可能。 テストするには、次を実行します fathom --version
:
- fathom --version
OutputFathom version 1.2.1, commit 8f7c6d2e45ebb28651208e2a7320e29948ecdb2c, built at 2018-11-30T09:21:37Z
このコマンドは、Fathomのバージョン番号といくつかの追加の詳細を出力します。 これで、Fathomバイナリが正常にダウンロードおよびインストールされました。 次に、Fathomを初めて構成して実行します。
ステップ2—Fathomの構成と実行
Fathomを構成する前に、システム上に新しいfathomユーザーを作成します。 この新しいユーザーアカウントは、Fathomサーバーを実行するために使用されます。これは、サービスの分離と保護に役立ちます。
fathomという名前の新しいユーザーを adduser
指図:
- sudo adduser --system --group --home /opt/fathom fathom
これは特別なものを作成します --system
ユーザー。つまり、パスワードがなく、通常のユーザーのようにログインできません。 また、fathomグループを使用して --group
フラグ、およびホームディレクトリ /opt/fathom
.
今すぐfathomユーザーのホームディレクトリに移動します。
- cd /opt/fathom
次に、fathomユーザーとして実行する必要のあるいくつかのコマンドを実行する必要があります。 これを行うには、 bash
fathomユーザーとしてのシェル sudo
:
- sudo -u fathom bash
プロンプトが次のように変わります fathom@host:~$
. 私たちまで exit
このシェルでは、実行するすべてのコマンドがfathomユーザーとして実行されます。
これで、Fathomの構成ファイルを設定する準備が整いました。 この構成ファイルで必要な項目の1つは、Fathomが署名と暗号化の目的で使用するランダムな文字列です。 使用 openssl
今すぐランダムな文字列を生成するコマンド:
- openssl rand --base64 32
OutputiKo/rYHFa2hDINjgCcIeeCe9pNglQreQrzrs+qK5tYg=
文字列をクリップボードにコピーするか、ある種の一時的なスクラッチドキュメントに書き留めてから、新しい文字列を開きます .env
構成用のファイル:
- nano /opt/fathom/.env
これにより、新しい空のファイルが開きます。 nano
テキストエディタ。 代わりに、お好きなエディタを自由に使用してください。
以下をファイルに貼り付け、ランダムな文字列を以前に生成したものに更新してください。
FATHOM_SERVER_ADDR="127.0.0.1:8080"
FATHOM_DATABASE_DRIVER="sqlite3"
FATHOM_DATABASE_NAME="fathom.db"
FATHOM_SECRET="your_random_string_here"
この構成では、最初にサーバーが localhost (127.0.0.1
) ポート 8080
、およびと呼ばれるSQLiteデータベースファイルを使用する必要があること fathom.db
.
ファイルを保存して閉じます。 の nano
あなたは押すことができます CTRL+O
それから ENTER
保存するには、を押します CTRL+X
出る。
データベースが構成されたので、最初のユーザーをFathomインスタンスに追加できます。
- fathom user add --email="your_email" --password="your_password"
初めて走るので fathom
データベースを構成すると、最初のデータベース移行が発生していることに気付くはずです。
OutputINFO[0000] Fathom version 1.2.1, commit 8f7c6d2e45ebb28651208e2a7320e29948ecdb2c, built at 2018-11-30T09:21:37Z
INFO[0000] Configuration file: /opt/fathom/.env
INFO[0000] Connected to sqlite3 database: /opt/fathom/fathom.db
INFO[0000] Applied 26 database migrations!
INFO[0000] Created user [email protected]
君の fathom.db
これでデータベースファイルが作成され、ユーザーが追加されます。
今すぐFathomサーバーを起動して、テストします。
- fathom server
OutputINFO[0000] Fathom version 1.2.1, commit 8f7c6d2e45ebb28651208e2a7320e29948ecdb2c, built at 2018-11-30T09:21:37Z
INFO[0000] Configuration file: /opt/fathom/.env
INFO[0000] Connected to sqlite3 database: /opt/fathom/fathom.db
サーバーに接続されている2番目の端末で、を使用してFathomインスタンスのホームページを取得します curl
:
- curl localhost:8080
Output<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Fathom - simple website analytics</title>
<link href="assets/css/styles.css?t=1543569696966" rel="stylesheet">
. . .
画面に数行のHTMLコードが印刷されているはずです。 これは、サーバーが稼働していて、localhostの要求に応答していることを示しています。
最初のターミナルに戻り、終了します fathom server
を押して処理する CTRL+C
.
fathom ユーザーとしてコマンドの実行がすべて完了したので、 exit
そのセッションも:
- exit
シェルプロンプトが通常に戻るはずです。
これでFathomが完全に構成され、コマンドラインから手動で正常に実行できました。 次に、FathomをSystemdサービスとして実行するように設定します。
ステップ3—FathomをSystemdサービスとして設定する
走る fathom serve
サーバーにログインしていない場合でも、Systemdを使用してサービスとしてサーバーを設定します。 Systemdは、Ubuntuおよび他の多くのLinuxディストリビューションでのサービスの開始、停止、および再起動を処理するサービスマネージャーです。
The fathom.service
作成するファイルには、Systemdがサーバーを適切に実行するために必要なすべての構成の詳細が含まれます。 今すぐ新しいファイルを開きます。
- sudo nano /etc/systemd/system/fathom.service
以下をファイルに追加します。
[Unit]
Description=Fathom Analytics server
Requires=network.target
After=network.target
[Service]
Type=simple
User=fathom
Group=fathom
Restart=always
RestartSec=3
WorkingDirectory=/opt/fathom
ExecStart=/usr/local/bin/fathom server
[Install]
WantedBy=multi-user.target
このファイルは、サービスをいつ起動するかを指定します(After=network.target
、つまりネットワークが起動した後)、 fathom ユーザーおよびグループとして実行する必要があり、Systemdはプロセスが終了した場合は常にプロセスの再起動を試みる必要があります(Restart=always
)、から実行する必要があること /opt/fathom
ディレクトリ、およびサーバーを実行するために使用するコマンド(ExecStart=/usr/local/bin/fathom server
).
ファイルを保存して閉じます。 Systemd構成をリロードします。
- sudo systemctl daemon-reload
サービスを有効にします。
- sudo systemctl enable fathom.service
サービスを有効にすると、Systemdはシステムの起動時にサービスを自動的に開始します。 また、サービスを手動で開始する必要があります。これは1回だけです。
- sudo systemctl start fathom
前のコマンドでは、省略できることに注意してください .service
サービス名の一部。 最後に、サービスのステータスをチェックして、実行されていることを確認します。
- sudo systemctl status fathom
Output● fathom.service - Fathom Analytics server
Loaded: loaded (/etc/systemd/system/fathom.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-11-03 15:32:45 UTC; 13s ago
Main PID: 3748 (fathom)
Tasks: 5 (limit: 1136)
Memory: 10.3M
CGroup: /system.slice/fathom.service
└─3748 /usr/local/bin/fathom server
Nov 03 15:32:45 ubuntu-fathom systemd[1]: Started Fathom Analytics server.
Nov 03 15:32:46 ubuntu-fathom fathom[3748]: time="2021-11-03T15:32:46Z" level=info msg="Fathom version 1.2.1, commit 8f>
Nov 03 15:32:46 ubuntu-fathom fathom[3748]: time="2021-11-03T15:32:46Z" level=info msg="Configuration file: /opt/fathom>
Nov 03 15:32:46 ubuntu-fathom fathom[3748]: time="2021-11-03T15:32:46Z" level=info msg="Connected to sqlite3 database: >
サービスはlocalhostポートで再び稼働しています 8080
. 次に、Nginxをリバースプロキシとして設定して、Fathomサービスを外部に公開します。
ステップ4—Nginxのインストールと構成
NginxなどのWebサーバーをアプリケーションサーバーの前に配置すると、キャッシュ、圧縮、静的ファイルの提供をより効率的なプロセスにオフロードすることで、パフォーマンスを向上させることができます。 Nginxをインストールし、Fathomへのリバースプロキシリクエストを構成します。つまり、ユーザーからFathomへのリクエストの受け渡しとそのやり直しを処理します。
まず、パッケージリストを更新してから、を使用して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
ディレクトリ。 私たちは私たちと呼びます fathom.conf
ただし、別の名前を使用することもできます。
- sudo nano /etc/nginx/sites-available/fathom.conf
以下を新しい構成ファイルに貼り付けます。必ず置き換えてください。 your_domain_here
Fathomサーバーを指すように構成したドメインを使用します。 これは次のようなものでなければなりません fathom.example.com
、 例えば:
server {
listen 80;
listen [::]:80;
server_name your_domain_here;
access_log /var/log/nginx/fathom.access.log;
error_log /var/log/nginx/fathom.error.log;
location / {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
}
}
現在、この構成はHTTPのみです。 次のステップでは、CertbotにSSLの構成を任せます。 残りの構成では、ログの場所を設定してから、すべてのトラフィックを次の場所にあるFathomサーバーに渡します。 http://localhost:8080
、途中でいくつかの重要なプロキシ転送ヘッダーを追加します。
ファイルを保存して閉じ、にリンクして構成を有効にします /etc/nginx/sites-enabled/
:
- sudo ln -s /etc/nginx/sites-available/fathom.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
これで、FathomサイトがプレーンHTTPで利用できるようになります。 ロード http://your_domain_here
そしてそれはこのようになります:
サイトがHTTP経由で稼働しているので、CertbotおよびLet’sEncrypt証明書を使用して接続を保護します。
ステップ5—CertbotのインストールとSSL証明書の設定
CertbotとLet’sEncryptの無料認証局のおかげで、Fathomアプリに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://Fathom.example.com
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=Fathom.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/Fathom.example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/Fathom.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に切り替わります。
これでサイトは安全になり、ステップ2で設定したユーザーの詳細を使用して安全にログインできます。
ログインに成功すると、Fathomで最初のWebサイトをセットアップするためのプロンプトが表示されます。
それが完了すると、設定したサイトの(現在は空の)ダッシュボードが表示されます。
これで、Fathom分析ソフトウェアが正常にインストールおよび保護されました。
結論
このチュートリアルでは、Fathom Analyticsアプリをダウンロード、インストール、構成してから、Nginxリバースプロキシを設定し、Let’sEncryptSSL証明書を使用して保護しました。
これで、Fathom Analyticsトラッキングスクリプトを追加して、Webサイトの設定を完了する準備が整いました。 ソフトウェアの使用とサイトの設定の詳細については、公式のFathomAnalyticsドキュメントを参照してください。