ウェブサイト検索

Debian 11 に Fathom Privacy-Focused Website Analytics をインストールする方法


このページでは

  1. 前提条件
  2. PostgreSQL サーバーのインストール
  3. PostgreSQL データベースとユーザーの設定
  4. Fathom Binary のダウンロード
  5. Fathom Web Analytics の設定
  6. Fathom Admin ユーザーの作成
  7. リバース プロキシとしての Nginx のインストールと構成
  8. ファイアウォールでファトムを保護する
  9. SSL/TLS Letsencrypt による Fathom Web Analytics の保護
  10. Fathom Website Analytics へのログイン
  11. 結論

Fathom は、Web サイトに関するクリーンで簡潔なデータを提供する、プライバシーに重点を置いた Web 分析です。サイトに関する洞察に満ちたレポートと指標を提供するシンプルなウェブサイト分析ソフトウェアです。 Fathom は Google アナリティクスの代替として作成されましたが、ユーザーのプライバシーを侵害したり、訪問者のデータを侵害したりしません。 GDPR に準拠しており、Cookie バナーは必要ありません。

Fathom には、サーバーにインストールできるオープンソース バージョンと、Fathom の公式 Web サイトから購入できるプロ バージョンの 2 つのバージョンがあります。著名な Fathom Web サイト分析ユーザーは、IBM、Laravel、GitHub、Hoshicord、BOSCH、McLaren、VueJS などです。

このチュートリアルでは、Fathom Privacy-Focused Website Analytics を Debian 11 サーバーにインストールする方法を示します。データベースとして PostgreSQL、リバース プロキシとして Nginx Web サーバーを使用して Fathom のインストールを実行し、Certbot および Letsencrypt を介して SSL/TLS 証明書を使用して Fathom を保護します。

その過程で、PostgreSQL で認証を設定する方法、データベースとユーザーを作成する方法、Linux システムに systemd サービスを追加する方法も学びます。

前提条件

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

  • Debian 11 サーバー - この例では、ホスト名が fathome-server の Debian サーバーを使用しています。
  • sudo/root 管理者権限を持つ root 以外のユーザー。
  • サーバーの IP アドレスを指すドメイン名 - この例では、サブドメインの fathom.hwdomain.io を使用しています。

それでおしまい。 Fathom のインストールを開始しましょう。

PostgreSQL サーバーのインストール

Fathom は、Golang Preact で構築された、プライバシーに重点を置いたシンプルな Web 分析です。デフォルトのインストールでは、Fathom はデータベースとして SQLite を使用しますが、MySQL/MariaDB や PostgreSQL などの RDBMS を使用することもできます。

この例では、PostgreSQL で Fathom を実行します。そのため、Debian サーバーに PostgreSQL をインストールして構成します。

開始するには、以下の apt コマンドを実行して、Debian パッケージ インデックスを更新および更新します。

sudo apt update

以下の apt コマンドを使用して PostgreSQL パッケージをインストールします。これにより、デフォルトの PostgreSQL サーバー パッケージが Debian 11 リポジトリ (PostgreSQL 13) からインストールされます。

sudo apt install postgresql

プロンプトが表示されたら、y を入力して確認し、ENTER を押して続行します。

PostgreSQL をインストールしたら、サーバーの認証を設定する必要があります。これを実現するには、/etc/postgresql/13/main/ ディレクトリ (Debian のデフォルトの PostgreSQL) で利用可能な PostgreSQL 構成ファイルを変更する必要があります。

好みのテキスト/コード エディターを使用して、/etc/postgresql/13/main/postgresql.conf ファイルを開きます。この例では、デフォルトのエディターとして nano を使用しています。

sudo nano /etc/postgresql/13/main/postgresql.conf

password_encryption パラメータのコメントを外し、デフォルト値を scram-sha-256 に変更します。

password_encryption = scram-sha-256

終了したら、 /etc/postgresql/13/main/postgresql.conf ファイルを保存して閉じます。 nano ユーザーの場合は、Ctrl+x を押してから y を押し、ENTER を押します。

次に、次の nao エディターを使用して、PostgreSQL 認証構成ファイル /etc/postgresql/13/main/pg_hba.conf を開きます。

sudo nano /etc/postgresql/13/main/pg_hba.conf

ホスト 127.0.0.1/32 および ::1/128 のデフォルトの認証方式を scram-sha-256 に変更します。これにより、localhost から PostgreSQL サーバーへの接続に scram-sha-256 を使用する認証方法が指定されます。

パラメータ -h 127.0.0.1 を使用すると、ホストとして PostgreSQL に接続され、scram-sha-256 認証が使用されます。 PostgreSQL ホストを指定せずに psql コマンドのみを使用すると、ローカル接続としてピア認証方式を使用して接続されます。

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256

完了したら、/etc/postgresql/13/main/pg_hba.conf ファイルを保存して閉じます。

次に、以下の systemctl コマンド ユーティリティを実行して PostgreSQL サーバーを再起動し、変更を適用します。

sudo systemctl restart postgresql

次に、PostgreSQL サーバーを検証して、有効で実行中であることを確認します。

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

PostgreSQL が実行中で有効になっている場合は、端末に出力が表示されます。

PostgreSQL サーバーを実行して有効にしたら、Fathom Web 分析用の新しい PostgreSQL データベースとユーザーの作成を開始します。

PostgreSQL データベースとユーザーの設定

この手順では、PostgreSQL シェルを介してデフォルトの PostgreSQL ユーザー postgres のパスワードを設定します。次に、Fathom Web 分析のインストールに使用する新しいデータベースとユーザーを作成します。

以下のコマンドで PostgreSQL シェルにログインします。 sudo -u postgres psql コマンドを使用すると、ユーザー postgres として psql コマンドを実行することになります。

cd /var/lib/postgresql
sudo -u postgres psql

ログイン後、デフォルトの postgres データベースに接続され、PostgreSQL プロンプトが postgres=# になるはずです。

以下のクエリを実行して、デフォルトの PostgreSQL ユーザー postgres の新しいパスワードを作成します。次のクエリでパスワードを必ず変更してください。

ALTER USER postgres WITH PASSWORD '';

次に、次の PostgreSQL クエリを実行して、新しい PostgreSQL ユーザーとデータベースを作成します。この例では、データベース fathomdb を使用して新しい PostgreSQL ユーザー fathom を作成します。

CREATE USER fathom WITH CREATEDB CREATEROLE PASSWORD 'p4ssw0rdFathom';
CREATE DATABASE fathomdb OWNER fathom;

最後に、以下のクエリを実行して、PostgreSQL サーバー上のデータベースとユーザーのリストを確認します。

\l
\du

\l query を使用して PostgreSQL サーバー上のデータベースを一覧表示 - 新しいデータベース fathomdb が作成されていることがわかります。

\du クエリによる PostgreSQL のユーザーの一覧表示 - PostgreSQL に追加された新しい PostgreSQL ユーザー ファゾムを確認できます。

この時点で、PostgreSQL サーバーのインストールと構成が完了しました。次のステップでは、Fathom のインストールを開始します。

Fathom バイナリのダウンロード

Fathom は Go で記述された小さくてシンプルなアプリケーションであり、Linux システムでいつでも実行できる単一のバイナリ ファイルとして提供されます。

ここで、Fathom を Debian サーバーにダウンロードします。

GitHub の Fathom リリース ページにアクセスし、インストールに適したバージョンを選択します。この例では、この執筆中の最新バージョンである最新の Fathom バージョン v1.3.0 を使用します。

以下の wget コマンドを使用して、Fathom バイナリ ファイルをダウンロードします。

wget https://github.com/usefathom/fathom/releases/download/v1.3.0-rc.1/fathom_1.3.0-rc.1_linux_amd64.tar.gz

ダウンロードしたら、以下の tar コマンドを実行して、Fathom を /usr/local/bin ディレクトリに抽出します。次に、chmod コマンドを使用して、ファゾム バイナリ ファイルを実行可能にします。

tar -C /usr/local/bin -xzf fathom_1.3.0-rc.1_linux_amd64.tar.gz
chmod +x /usr/local/bin/fathom

最後に、次のコマンドを実行して、ファゾム バイナリ ファイルを実行できることを確認します。次に、ファゾム バージョンを確認します。

which fathom
fathom --version

コマンドが成功すると、fathom バイナリ ファイル /usr/local/bin/fathom のフル パスが表示されます。また、端末に Fathom バージョンが表示されます。

Fathom をダウンロードしたら、次に Fathom Web 分析のインストールを構成します。

Fathom Web アナリティクスの設定

このステップでは、Fathom Web 分析のインストールをセットアップします。データ ディレクトリをセットアップし、Fathom で PostgreSQL データベースをセットアップします。最後に、Fathom を systemd サービスとして実行します。

Fathom を systemd サービスとして実行すると、systemctl コマンド ユーティリティを使用して Fathom を簡単に管理できます。 systemctl を使用して、Fathom の開始、有効化、ステータスの確認を行うことができます。

最初に、以下のコマンドを実行して、Debian システムに新しいユーザー fashom を作成します。また、必ず新しいユーザーのパスワードを設定してください。

sudo useradd -m -s /bin/bash fathom
sudo passwd fathom

以下のコマンドを実行して、新しいユーザー fathom にログインし、Fathom インストールの構成を開始します。

su - fathom

まず、以下のコマンドを実行して、FATHOM_SECRET として使用されるランダムな文字列を生成します。生成された出力を必ずコピーしてください。

head /dev/urandom | tr -dc A-Za-z0-9 | head -c 20 ; echo ''

新しい ~/data ディレクトリを作成し、作業ディレクトリをそこに移動します。次に、以下の nano エディター コマンドを使用して、新しいファイル .env を作成します。

mkdir -p ~/data; cd ~/data
nano .env

次の行をファイルに追加します。必ず PostgreSQL データベースとユーザーの詳細を変更し、FATHOM_SECRET\ を生成された文字列に置き換えてください。

また、本番環境で Fathomn を実行している場合は、FATHOM_DEBUG を false に変更してください。安全な SSL/TLS 接続でデータベースを使用している場合は、FATHOM_DATABASE_SSLMODE を設定することもできます。この例では、Fathom と同じサーバーを使用しているため、FATHOM_DATABASE_SSLMODE は無効に設定されています。

FATHOM_GZIP=true
FATHOM_DEBUG=true
FATHOM_DATABASE_DRIVER="postgres"
FATHOM_DATABASE_NAME="fathomdb"
FATHOM_DATABASE_USER="fathom"
FATHOM_DATABASE_PASSWORD="p4ssw0rdFathom"
FATHOM_DATABASE_HOST="127.0.0.1"
FATHOM_DATABASE_SSLMODE="disable"
FATHOM_SECRET="13tUIGpjCY9miJcSWW6S"

終了したら、.env ファイルを保存して閉じます。

exit と入力して、ファゾム ユーザーからログアウトし、ルート セッションに戻ります。

次に、以下の nano エディター コマンドを使用して、新しい systemd サービス ファイル /etc/systemd/system/fathom.serviceを作成します。

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

次の行をファイルに追加します。これにより、デフォルトのポート 8080 を使用してローカルホストで Fathom Web 分析を実行し、Fathom のデータ ディレクトリを /home/fathom/data に設定します。

[Unit]
Description=Starts the fathom server
Requires=network.target
After=network.target

[Service]
Type=simple
User=fathom
Restart=always
RestartSec=3
WorkingDirectory=/home/fathom/data
ExecStart=/usr/local/bin/fathom server

[Install]
WantedBy=multi-user.target

終了したら、ファイルを保存して終了します。

以下のコマンドを実行して systemd マネージャーをリロードし、新しいサービス ファイル fathom.service を適用します。

sudo systemctl daemon-reload

その後、次の systemctl コマンドを使用して、ファゾム サービスを開始して有効にします。

sudo systemctl start fathom
sudo systemctl enable fathom

ファゾム サービスを検証して、サービスが実行されていることを確認します。

sudo systemctl status fathom

次のような出力が表示されるはずです - The status of the fathom service is running and its now enabled. これは、起動時にサービスが自動的に実行されることを意味します。

Fathom Admin ユーザーの作成

Fathom が systemd サービスとして実行されているので、Fathom インストール用の新しい管理者ユーザーを作成する準備が整いました。

Fathom 管理者ユーザーを作成するには、Fathom データ ディレクトリにいる必要があります。したがって、以下のコマンドを実行して、fathom ユーザーとしてログインします。次に、作業ディレクトリを ~/data に移動します。

su - fathom
cd ~/data

以下の fathom コマンドを実行して、Fathom Web 分析用の新しい管理者ユーザーを追加します。次のコマンド ラインで、電子メール アドレスとパスワードを必ず変更してください。

fathom user add --email="" --password="AliceFathomP4ssw0rd"

成功すると、次のような出力が表示されます。 PostgreSQL fathomdb データベースへの接続ステータスと、新しい管理者ユーザー [email が作成されたことを示すメッセージが表示されます。

この時点で、PostgreSQL データベース サーバーでの Fathom のインストールが完了しました。また、Fathom の管理者ユーザーも作成しました。

次のステップでは、デフォルトのポート 8080 を使用して localhost で実行される Fathom Web 分析のリバース プロキシとして Nginx をインストールして設定します。

リバース プロキシとしての Nginx のインストールと構成

このステップでは、Nginx Web サーバーをインストールし、Fathom Web 分析のリバース プロキシとして使用される Nginx サーバー ブロックをセットアップします。

以下の apt コマンドを実行して、Nginx パッケージを Debian サーバーにインストールします。プロンプトが表示されたら、y を入力して確認し、ENTER を押して続行します。

sudo apt install nginx

Nginx をインストールしたら、次の nano エディター コマンドを使用して、新しいサーバー ブロック構成ファイル /etc/nginx/sites-available/fathom を作成します。

sudo nano /etc/nginx/sites-available/fathom

次の行を に追加し、ドメイン名を自分のドメインに変更してください。

server {
    listen 80;
    server_name fathom.hwdomain.io;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8080;
    }
}

ファイルを保存し、終了したらエディターを終了します。

次に、以下のコマンドを実行して、Nginx サーバー ブロック /etc/nginx/sites-available/fathom を有効にします。次に、Nginx の構成を確認して、Nginx の構成が適切であることを確認します。

sudo ln -s /etc/nginx/sites-available/fathom /etc/nginx/sites-enabled/
sudo nginx -t

成功した場合は、test is success - syntax ok などの出力がターミナルに表示されます。

以下の systemctl コマンド ユーティリティを実行して、Nginx サービスを再起動し、変更を適用します。

sudo systemctl restart nginx

その後、Nginx サービスを検証して、以下の systemctl コマンド ユーティリティを使用してサービスが実行されていることを確認します。

sudo systemctl is-enabled nginx
sudo systemctl status nginx

Nginx service is running and its enabled などの出力が表示されます。これは、起動時にサービスが自動的に開始されることを意味します。

Nginx Web サーバーが Fathom Web 分析のリバース プロキシとして実行されているので、次に UFW ファイアウォールをセットアップし、HTTP および HTTPS ポートを開きます。

ファゾムをファイアウォールで保護する

このステップでは、Debian サーバーに UFW をインストールします。次に、SSH、HTTP、および HTTPS サービスを開いて、サーバーへのアクセスを許可します。

以下の apt コマンドで ufw パッケージをインストールします。プロンプトが表示されたら y を入力し、ENTER を押して続行します。

sudo apt install ufw

UFW をインストールしたら、以下のコマンドを実行して、OpenSSH および WWW Full アプリケーションを追加します。 OpenSSH アプリケーションはデフォルトの SSH ポート 22 を開き、WWW Full アプリケーションは HTTP サービスと HTTPS サービスの両方を開きます。

sudo ufw allow OpenSSH
sudo ufw allow 'WWW Full'

追加すると、Rules updated などの出力が得られるはずです。

以下の ufw コマンドを実行して、UFW ファイアウォールを起動して有効にします。プロンプトが表示されたら、y を入力して確認し、ENTER を押して続行します。

sudo ufw enable

Firewall is active and enabled on system startup などの出力を受け取る必要があります。これは、UFW ファイアウォールが開始され、有効になっていることを意味します。これにより、起動時に UFW が自動的に実行されるようになります。

最後に、以下の ufw コマンドを実行して、UFW で開いているポートとサービスのリストを確認します。

sudo ufw status

UFW ファイアウォールに追加された OpenSSH および WWW Full アプリケーションを受け取ります。

SSL/TLS Letsencrypt を使用した Fathom Web アナリティクスの保護

このステップでは、Letsencrypt からの SSL/TLS 証明書を使用して、Fathom Web 分析を保護します。これを実現するには、Certbot と追加の Certbot Nginx プラグインを Debian サーバーにインストールする必要があります。

SSL/TLS 証明書を生成する前に、ドメインがサーバーの IP アドレスを指していることを確認してください。また、Letsencrypt への登録に使用するメール アドレスがあることを確認してください。

以下の apt コマンドを実行して、Certbot と Certbot Nginx プラグインをインストールします。プロンプトが表示されたら y を入力し、ENTER を押して続行します。

sudo apt install certbot python3-certbot-nginx

Certbot をインストールしたら、以下のコマンドを実行して、ドメイン名の SSL/TLS 証明書を生成します。また、次のコマンドでドメイン名と電子メール アドレスを必ず変更してください。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email  -d fathom.hwdomain.io

このコマンドを使用すると、ドメイン名に対して新しい SSL/TLS 証明書が生成されます。また、これにより、Nginx サーバー ブロックに HTTPS が自動的に設定され、Fathom サーバー ブロックに対して HTTP から HTTPS への自動リダイレクトが設定されます。 Certbot SSL/TLS 証明書は、ディレクトリ /etc/elstencrypt/live/fathom.hwdomain.io/ に生成されます。

ファゾム ウェブサイト アナリティクスへのログイン

Web ブラウザーを開き、Fathom Web 分析インストールのドメイン名 (つまり、https://fathom.hwdomain.io) にアクセスします。 Fathom のログイン ページが表示されます。

メールアドレスとパスワードを入力し、サインインをクリックします。

メール アドレスとパスワードが正しければ、Fathom 管理ダッシュボードが表示されます。

これで、PostgreSQL と Nginx を使用した Fathom Web 分析が正常にインストールされました。

結論

このチュートリアルでは、オープンソースでプライバシー重視の Web 分析 Fathom を Debian 11 サーバーにインストールしました。また、Fathom Web 分析用のバックエンド データベース サーバーとして PostgreSQL をインストールして構成しました。クライアント アクセスのフロント エンドでは、Nginx をリバース プロキシとして構成しました。また、Certbot と Letsencrypt を介して SSL/TLS 証明書を使用して、Fathom の Web サイト分析を保護しました。

これを念頭に置いて、新しいトラックを追加し、Web サイトと訪問者を監視できるようになりました。また、Fathom を WordPress や Drupal などの複数の CMS (コンテンツ管理システム) と統合することもできます。また、Discourse などのフォーラムと統合することもできます。