序章

Fathom Analytics は、シンプルさとプライバシーに重点を置いた、オープンソースのセルフホスト型Web分析アプリケーションです。 Goで記述され、単一のバイナリファイルとして出荷されるため、インストールは比較的簡単です。

このチュートリアルでは、Fathomをインストールして構成してから、Fathomアプリのリバースプロキシとして機能するようにNginxをインストールします。 最後に、Certbotを使用してLet’s Encrypt認証局からSSL証明書をダウンロードして構成することにより、安全なHTTPS接続を有効にします。

前提条件

このチュートリアルを完了するには、最初に次のものが必要です。

  • Ubuntu 20.04サーバー。UFWファイアウォールが有効になっており、root以外のユーザーにsudo権限が設定されています。 これらの要件の設定の詳細については、 Ubuntu20.04を使用した初期サーバー設定をお読みください。
  • サーバーのパブリックIPアドレスを指すドメイン名。 たとえば、example.comfathom.example.comのようになります。 DigitalOceanを使用している場合は、コントロールパネルでドメインリソースを作成する方法について、DNSクイックスタートを参照してください。

すべての前提条件を満たしたら、ステップ1 に進み、Fathomをダウンロードしてインストールします。

ステップ1—Fathomをダウンロードする

Fathomソフトウェアをインストールするには、最初に最新のリリースをダウンロードしてから、実行可能ファイルを/usr/local/binディレクトリに解凍します。

まず、書き込み可能なディレクトリに移動します。 /tmpディレクトリは良い選択です:

  1. cd /tmp

Webブラウザーで、 Fathomの最新ソフトウェアリリースのGitHubページにアクセスし、fathom_1.2.1_linux_amd64.tar.gzのような名前のファイルを見つけます。 バージョン番号は異なる場合があります。

ファイルへのリンクを右クリックし、[リンクのコピー](またはブラウザによっては同様のもの)を選択します。

curlコマンドを使用して、コピーしたリンクからファイルをダウンロードします。

  1. 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に移動します。

  1. sudo tar -C /usr/local/bin/ -xzf fathom*.tar.gz fathom

/usr/local/binは保護されたディレクトリであるため、sudoコマンドが必要です。そのため、このディレクトリに書き込むにはスーパーユーザー権限が必要です。

次に、sudoおよびchmodを使用して、fathomバイナリの権限を更新します。

  1. sudo chmod +x /usr/local/bin/fathom

これにより、fathomが実行可能になります。 テストするには、fathom --versionを実行します。

  1. fathom --version
Output
Fathom version 1.2.1, commit 8f7c6d2e45ebb28651208e2a7320e29948ecdb2c, built at 2018-11-30T09:21:37Z

このコマンドは、Fathomのバージョン番号といくつかの追加の詳細を出力します。 これで、Fathomバイナリが正常にダウンロードおよびインストールされました。 次に、Fathomを初めて構成して実行します。

ステップ2—Fathomの構成と実行

Fathomを構成する前に、システム上に新しいfathomユーザーを作成します。 この新しいユーザーアカウントは、Fathomサーバーを実行するために使用されます。これは、サービスの分離と保護に役立ちます。

adduserコマンドを使用して、fathomという名前の新しいユーザーを作成します。

  1. sudo adduser --system --group --home /opt/fathom fathom

これにより、特別な--systemユーザーが作成されます。つまり、パスワードがなく、通常のユーザーのようにログインできません。 また、--groupフラグを使用して、 fathom グループを作成し、/opt/fathomにホームディレクトリを作成します。

今すぐfathomユーザーのホームディレクトリに移動します。

  1. cd /opt/fathom

次に、fathomユーザーとして実行する必要のあるいくつかのコマンドを実行する必要があります。 これを行うには、sudoを使用して、fathomユーザーとしてbashシェルを開きます。

  1. sudo -u fathom bash

プロンプトが[email protected]:~$のように変わります。 このシェルをexitするまで、実行するすべてのコマンドはfathomユーザーとして実行されます。

これで、Fathomの構成ファイルを設定する準備が整いました。 この構成ファイルで必要な項目の1つは、Fathomが署名と暗号化の目的で使用するランダムな文字列です。 opensslコマンドを使用して、ランダムな文字列を今すぐ生成します。

  1. openssl rand --base64 32
Output
iKo/rYHFa2hDINjgCcIeeCe9pNglQreQrzrs+qK5tYg=

文字列をクリップボードにコピーするか、ある種の一時的なスクラッチドキュメントに書き留めてから、構成用の新しい.envファイルを開きます。

  1. nano /opt/fathom/.env

これにより、nanoテキストエディタで新しい空白のファイルが開きます。 代わりに、お好きなエディタを自由に使用してください。

以下をファイルに貼り付け、ランダムな文字列を以前に生成したものに更新してください。

/opt/fathom/.env
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+OENTERの順に押して保存し、CTRL+Xを押して終了します。

データベースが構成されたので、最初のユーザーをFathomインスタンスに追加できます。

  1. fathom user add --email="your_email" --password="your_password"

データベースを構成してfathomを実行するのはこれが初めてなので、最初のデータベース移行が発生していることに気付くはずです。

Output
INFO[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サーバーを起動して、テストします。

  1. fathom server
Output
INFO[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インスタンスのホームページを取得します。

  1. 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します。

  1. exit

シェルプロンプトが通常に戻るはずです。

これでFathomが完全に構成され、コマンドラインから手動で正常に実行できました。 次に、FathomをSystemdサービスとして実行するように設定します。

ステップ3—FathomをSystemdサービスとして設定する

サーバーにログインしていない場合でも、常にfathom serveを実行するには、Systemdでサービスとしてセットアップします。 Systemdは、Ubuntuおよび他の多くのLinuxディストリビューションでのサービスの開始、停止、および再起動を処理するサービスマネージャーです。

作成するfathom.serviceファイルには、Systemdがサーバーを適切に実行するために必要なすべての構成の詳細が含まれています。 今すぐ新しいファイルを開きます。

  1. sudo nano /etc/systemd/system/fathom.service

以下をファイルに追加します。

/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構成をリロードします。

  1. sudo systemctl daemon-reload

サービスを有効にします。

  1. sudo systemctl enable fathom.service

サービスを有効にすると、Systemdはシステムの起動時にサービスを自動的に開始します。 また、サービスを手動で開始する必要があります。これは1回だけです。

  1. sudo systemctl start fathom

前のコマンドでは、サービス名の.service部分を省略できることに注意してください。 最後に、サービスのステータスをチェックして、実行されていることを確認します。

  1. 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をインストールします。

  1. sudo apt update
  2. sudo apt install nginx

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

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

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

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

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

/etc/nginx/sites-available/fathom.conf
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/にリンクして構成を有効にします。

  1. sudo ln -s /etc/nginx/sites-available/fathom.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

これで、FathomサイトがプレーンHTTPで利用できるようになります。 http://your_domain_hereをロードすると、次のようになります。

A screenshot of the Fathom login page, with 'Email' and 'Password' textboxes

サイトがHTTP経由で稼働しているので、CertbotおよびLet’sEncrypt証明書を使用して接続を保護します。

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

CertbotとLet’sEncryptの無料認証局のおかげで、FathomアプリにSSL暗号化を追加するのに必要なコマンドは2つだけです。

まず、CertbotとそのNginxプラグインをインストールします。

  1. sudo apt install certbot python3-certbot-nginx

次に、certbot--nginxモードで実行し、Nginxserver_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://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サイトをセットアップするためのプロンプトが表示されます。

A screenshot of the Fathom initial setup workflow, asking for the domain of your website

それが完了すると、設定したサイトの(現在は空の)ダッシュボードが表示されます。

A screenshot of the Fathom dashboard, showing no data yet

これで、Fathom分析ソフトウェアが正常にインストールおよび保護されました。

結論

このチュートリアルでは、Fathom Analyticsアプリをダウンロード、インストール、構成してから、Nginxリバースプロキシを設定し、Let’sEncryptSSL証明書を使用して保護しました。

これで、Fathom Analyticsトラッキングスクリプトを追加して、Webサイトの設定を完了する準備が整いました。 ソフトウェアの使用とサイトの設定の詳細については、公式のFathomAnalyticsドキュメントを参照してください。