序章
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
ディレクトリに解凍します。
まず、書き込み可能なディレクトリに移動します。 /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
これで、/tmp
ディレクトリにfathom_1.2.1_linux_amd64.tar.gz
ファイルが作成されます。 tar
コマンドを使用して、fathom
実行可能ファイルを抽出し、/usr/local/bin
に移動します。
- sudo tar -C /usr/local/bin/ -xzf fathom*.tar.gz fathom
/usr/local/bin
は保護されたディレクトリであるため、sudo
コマンドが必要です。そのため、このディレクトリに書き込むにはスーパーユーザー権限が必要です。
次に、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サーバーを実行するために使用されます。これは、サービスの分離と保護に役立ちます。
adduser
コマンドを使用して、fathomという名前の新しいユーザーを作成します。
- sudo adduser --system --group --home /opt/fathom fathom
これにより、特別な--system
ユーザーが作成されます。つまり、パスワードがなく、通常のユーザーのようにログインできません。 また、--group
フラグを使用して、 fathom グループを作成し、/opt/fathom
にホームディレクトリを作成します。
今すぐfathomユーザーのホームディレクトリに移動します。
- cd /opt/fathom
次に、fathomユーザーとして実行する必要のあるいくつかのコマンドを実行する必要があります。 これを行うには、sudo
を使用して、fathomユーザーとしてbash
シェルを開きます。
- 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
でのみリッスンする必要があり、fathom.db
というSQLiteデータベースファイルを使用する必要があることを最初に指定します。 。
ファイルを保存して閉じます。 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 sammy@example.com
これで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番目の端末で、curl
を使用してFathomインスタンスのホームページを取得します。
- 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の要求に応答していることを示しています。
最初のターミナルに戻り、CTRL+C
を押してfathom server
プロセスを終了します。
fathom ユーザーとしてコマンドの実行がすべて完了したので、そのセッションもexit
します。
- exit
シェルプロンプトが通常に戻るはずです。
これでFathomが完全に構成され、コマンドラインから手動で正常に実行できました。 次に、FathomをSystemdサービスとして実行するように設定します。
ステップ3—FathomをSystemdサービスとして設定する
サーバーにログインしていない場合でも、常にfathom serve
を実行するには、Systemdでサービスとしてセットアップします。 Systemdは、Ubuntuおよび他の多くのLinuxディストリビューションでのサービスの開始、停止、および再起動を処理するサービスマネージャーです。
作成する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へのリクエストの受け渡しとそのやり直しを処理します。
まず、パッケージリストを更新してから、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構成ファイルを開きます。 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の構成を任せます。 残りの構成では、ログの場所を設定し、すべてのトラフィックをhttp://localhost:8080
のFathomサーバーに渡し、途中でいくつかの重要なプロキシ転送ヘッダーを追加します。
ファイルを保存して閉じ、/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
モードで実行し、Nginxserver_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ドキュメントを参照してください。