序章

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 ディレクトリは良い選択です:

  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

これで、 fathom_1.2.1_linux_amd64.tar.gz あなたのファイル /tmp ディレクトリ。 使用 tar を抽出するコマンド fathom 実行可能ファイルに移動します /usr/local/bin:

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

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

今すぐ使用 sudochmod の権限を更新するには 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サーバーを実行するために使用されます。これは、サービスの分離と保護に役立ちます。

fathomという名前の新しいユーザーを adduser 指図:

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

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

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

  1. cd /opt/fathom

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

  1. sudo -u fathom bash

プロンプトが次のように変わります fathom@host:~$. 私たちまで 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、およびと呼ばれるSQLiteデータベースファイルを使用する必要があること fathom.db.

ファイルを保存して閉じます。 の nano あなたは押すことができます CTRL+O それから ENTER 保存するには、を押します 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番目の端末で、を使用してFathomインスタンスのホームページを取得します curl:

  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の要求に応答していることを示しています。

最初のターミナルに戻り、終了します fathom server を押して処理する CTRL+C.

fathom ユーザーとしてコマンドの実行がすべて完了したので、 exit そのセッションも:

  1. exit

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

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

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

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

The 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へのリクエストの受け渡しとそのやり直しを処理します。

まず、パッケージリストを更新してから、を使用してNginxをインストールします apt:

  1. sudo apt update
  2. sudo apt install nginx

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

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

次に、で新しいNginx構成ファイルを開きます /etc/nginx/sites-available ディレクトリ。 私たちは私たちと呼びます 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の構成を任せます。 残りの構成では、ログの場所を設定してから、すべてのトラフィックを次の場所にあるFathomサーバーに渡します。 http://localhost:8080、途中でいくつかの重要なプロキシ転送ヘッダーを追加します。

ファイルを保存して閉じ、にリンクして構成を有効にします /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 そしてそれはこのようになります:

サイトが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 モードにし、Nginxで使用したのと同じドメインを指定します server_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サイトをセットアップするためのプロンプトが表示されます。

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

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

結論

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

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