本教程适用于以下操作系统版本

  • Debian 12 (Bookworm)
  • Debian 11 (Bullseye)

本页内容

  • 先决条件
  • 安装依赖项
  • 配置防火墙
  • 创建 PostgreSQL 数据库和用户
  • 下载 Fathom 二进制文件
  • 配置 Fathom(将 PostgreSQL 作为数据库集成、以 Systemd 服务方式在后台运行 Fathom、添加 Fathom 管理员用户)
  • 配置 Nginx 作为反向代理
  • 访问 Fathom
  • 结论
  • 将 PostgreSQL 作为数据库集成
  • 以 Systemd 服务方式在后台运行 Fathom
  • 添加 Fathom 管理员用户

Fathom 是一款注重隐私的网站分析工具,能够提供关于您网站简洁清晰的数据。它是一个简单的网站分析程序,可以提供关于您网站的深入报告与指标。Fathom 是作为 Google Analytics 的替代品而创建的,但它不会侵犯用户隐私,也不会泄露访客数据。它符合 GDPR 规范,且无需显示 Cookie 横幅。

Fathom 提供两个版本:可安装在您自己服务器上的开源版本,以及可从 Fathom 官网购买的专业版。使用 Fathom 网站分析的知名用户包括 IBM、Laravel、GitHub、Hoshicord、BOSCH、McLaren、VueJS 等等。

在本指南中,我们将逐步介绍如何在 Debian 12 服务器上安装 Fathom 隐私优先网站分析平台。我们将使用 PostgreSQL 作为数据库、Nginx 作为反向代理来完成 Fathom 的安装。此外,我们还会使用 Letsencrypt 提供的 SSL/TLS 证书来保护 Fathom。

先决条件

在继续之前,请确保您具备以下条件:

  • 一台 Debian 12 服务器。
  • 一个具有管理员权限的非 root 用户。
  • 一个指向服务器 IP 地址的域名。

安装依赖项

Fathom 是一款基于 Golang 和 Preact 构建的隐私优先网站分析工具。它支持 PostgreSQL、MySQL 和 SQLite 等数据库,并可在 Nginx 反向代理下运行。现在您将安装 Fathom 所需的软件包依赖,例如 PostgreSQL、Nginx、Certbot 和 UFW(Uncomplicated Firewall,简单防火墙)。

首先,执行以下 apt 命令来更新您的 Debian 软件源。

sudo apt update

现在通过执行以下命令安装依赖项。这样您将安装 PostgreSQL 服务器、Nginx Web 服务器、Certbot、Nginx Certbot 插件以及 UFW(Uncomplicated Firewall)。

sudo apt install postgresql nginx certbot python3-certbot-nginx ufw

输入 y 以继续安装。

在 Debian 12 上安装 Fathom 隐私优先网站分析平台

依赖安装完成后,您将确认各项依赖都已在系统中可用。

使用以下命令验证 postgresql 服务,确保其正在运行并已启用。

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

终端将显示如下结果,表明 postgresql 正在运行且已启用。

在 Debian 12 上安装 Fathom 隐私优先网站分析平台

接下来,执行以下命令验证 nginx 服务。

sudo systemctl is-enabled nginx
sudo systemctl status nginx

终端将打印类似的输出,表明 nginx 服务正在运行且已启用。

在 Debian 12 上安装 Fathom 隐私优先网站分析平台

最后,执行以下命令验证 certbot。这将定位 certbot 的二进制可执行文件,并查看系统中已安装的 certbot 当前版本。

which certbot
certbot --version

显示的输出将告诉您,Certbot 2.1 已安装在 /usr/bin/certbot。

在 Debian 12 上安装 Fathom 隐私优先网站分析平台

配置防火墙

安装依赖后,您将配置 UFW 来保护您的 Debian 机器。您将在系统上开放 SSH、HTTP 和 HTTPS 端口。

执行以下命令以开放 SSH、HTTP 和 HTTPS 协议所需的端口。OpenSSH 配置规则将开放 22/tcp 端口,WWW Full 配置规则将同时开放 HTTP 和 HTTPS,即 80 和 443 端口。

sudo ufw allow OpenSSH
sudo ufw allow "WWW Full"

现在运行以下命令,在您的 Debian 系统上启动并启用 UFW。

sudo ufw enable

输入 y 以确认。成功后,您应该会看到提示信息“Firewall is active and enabled on system startup”(防火墙已在系统启动时激活并启用)。

在 Debian 12 上安装 Fathom 隐私优先网站分析平台

最后,使用以下命令验证 UFW 状态。

sudo ufw status

输出中的 active 表明 UFW 正在运行且已启用,您还应该能看到已添加到 UFW 的 OpenSSH 和 WWW Full 配置规则。

在 Debian 12 上安装 Fathom 隐私优先网站分析平台

创建 PostgreSQL 数据库和用户

在接下来的步骤中,您将创建一个供 Fathom 使用的新 PostgreSQL 数据库和用户。为此,您必须通过 psql 命令行登录到 PostgreSQL 服务器。

执行以下命令登录到 PostgreSQL 服务器。

sudo -u postgres psql

使用以下 PostgreSQL 查询语句创建新数据库 fathomdb 和用户 fathom。请务必修改以下查询中的密码。

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

在 Debian 12 上安装 Fathom 隐私优先网站分析平台

现在执行以下查询,以验证 PostgreSQL 服务器上可用的数据库和用户列表。

\du
\l

如果数据库和用户创建成功,将显示如下输出:

在 Debian 12 上安装 Fathom 隐私优先网站分析平台

输入 quit 退出 PostgreSQL 服务器。

创建数据库和用户后,执行以下命令以用户 fathom 和数据库 fathomdb 登录到 PostgreSQL。当系统提示时,输入您的数据库用户密码。

sudo -u postgres psql -U fathom -h 127.0.0.1 -d fathomdb

连接到 PostgreSQL 服务器后,执行以下查询以验证您的连接。

\conninfo

执行命令后,将显示如下输出,表明您已以用户 fathom 连接到了数据库 fathomdb。

在 Debian 12 上安装 Fathom 隐私优先网站分析平台

再次输入 quit 退出 PostgreSQL 服务器。

下载 Fathom 二进制文件

Fathom 由 Golang 和 Preact 编写,以单个二进制文件形式提供,您可以轻松下载并安装到系统中。

访问 Fathom 的 GitHub 页面,获取 Fathom 二进制安装包的下载 URL。然后,通过以下 wget 命令下载它。在本示例中,您将下载 Fathom 1.3.1。

wget https://github.com/usefathom/fathom/releases/download/v1.3.1/fathom_1.3.1_linux_amd64.tar.gz

下载完成后,通过以下命令将 Fathom 二进制安装包解压到 /usr/local/bin/fathom,并赋予其可执行权限。

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

最后,运行以下命令验证 fathom 二进制文件的位置以及您所下载的 fathom 当前版本。

which fathom
fathom --version

以下输出表明 Fathom 1.3.1 已安装在 /usr/local/bin/fathom。

在 Debian 12 上安装 Fathom 隐私优先网站分析平台

配置 Fathom

在接下来的步骤中,您将通过以下方式配置 Fathom:

  • 将 Fathom 与 PostgreSQL 数据库集成。
  • 以 systemd 服务方式在后台运行 Fathom。
  • 为您的 Fathom 安装添加管理员用户。

将 PostgreSQL 作为数据库集成

Fathom 支持多种数据库,例如 SQLite(默认)、MySQL 和 MariaDB。在本节中,您将设置 Fathom 安装目录,并将 Fathom 与 PostgreSQL 数据库服务器集成。

执行以下命令创建一个新系统用户 fathom,该用户将用于运行您的 Fathom 安装。

sudo useradd -r -d /opt/fathom fathom

现在创建新的主目录 /opt/fathom,并将所有权更改为用户 fathom。目录 /opt/fathom 将用于存储 Fathom 安装数据。

sudo mkdir -p /opt/fathom
sudo chown -R fathom:fathom /opt/fathom

之后,运行以下命令为 Fathom 生成一个随机密钥。请务必复制输出内容,因为后续保护 fathom 时会用到它。

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

在 Debian 12 上安装 Fathom 隐私优先网站分析平台

接下来,切换到 /opt/fathom 目录。

cd /opt/fathom

然后,使用以下命令创建新的 /opt/fathom/data 目录以及新文件 /opt/fathom/data/.env。

sudo -u fathom mkdir -p /opt/fathom/data
sudo -u fathom nano /opt/fathom/data/.env

插入以下配置,并务必修改 PostgreSQL 数据库名称、用户和密码的相关信息。

FATHOM_GZIP=true
FATHOM_DEBUG=true
FATHOM_DATABASE_DRIVER="postgres"
FATHOM_DATABASE_NAME="fathomdb"
FATHOM_DATABASE_USER="fathom"
FATHOM_DATABASE_PASSWORD="password"
FATHOM_DATABASE_HOST="127.0.0.1"
FATHOM_DATABASE_SSLMODE="disable"
FATHOM_SECRET="BWTtur9A1qWtXG6656q4"

完成后保存并退出文件。

最后,运行以下命令以确保您的 Fathom 配置成功。

cd /opt/fathom/data
sudo -u fathom fathom server

执行命令后,Fathom 应该在 localhost 上以默认端口 8080 运行,并且终端将打印如下输出:

在 Debian 12 上安装 Fathom 隐私优先网站分析平台

按 Ctrl+c 终止该进程。

以 Systemd 服务方式在后台运行 Fathom

在接下来的章节中,您将创建一个新的 systemd 服务文件,用于在后台运行 Fathom。这样,您就可以通过 systemctl 工具轻松管理 Fathom。

使用以下 nano 编辑器命令创建新的 systemd 服务文件 /etc/systemd/system/fathom.service。

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

将以下配置插入到该文件中。

[Unit]
Description=Starts the fathom server
Requires=network.target
After=network.target
[Service]
Type=simple
User=fathom
Restart=always
RestartSec=3
WorkingDirectory=/opt/fathom/data
ExecStart=/usr/local/bin/fathom server
[Install]
WantedBy=multi-user.target

完成后保存并关闭文件。

接下来,运行以下 systemctl 命令以重新加载 systemd 管理器并应用您所做的更改。

sudo systemctl daemon-reload

systemd 管理器重新加载后,执行以下 systemctl 命令以启动并启用 fathom 服务。这将以默认端口 8080 在 localhost 上后台运行 Fathom。

sudo systemctl start fathom
sudo systemctl enable fathom

在 Debian 12 上安装 Fathom 隐私优先网站分析平台

使用以下命令验证 fathom 服务,确保其正在运行且已启用。

sudo systemctl is-enabled fathom
sudo systemctl status fathom

如果 fathom 正在运行且已启用,将显示如下输出:

在 Debian 12 上安装 Fathom 隐私优先网站分析平台

添加 Fathom 管理员用户

既然 Fathom 已经作为服务在后台运行,接下来要做的就是为您的 Fathom 安装创建一个管理员用户。这可以通过 fathom 命令行完成。

要创建 Fathom 用户,您可以在 fathom 数据目录中运行 fathom 命令行。

将当前工作目录切换到 /opt/fathom/data。

cd /opt/fathom/data

执行以下命令为您的 Fathom 安装创建一个管理员用户。请务必通过以下命令修改电子邮件地址和密码。

sudo -u fathom fathom user add --email="
[email protected]
" --password="password"

该命令将使用 .env 文件连接到 PostgreSQL 服务器。用户创建完成后,您应该会看到类似如下的确认信息:

在 Debian 12 上安装 Fathom 隐私优先网站分析平台

配置 Nginx 作为反向代理

至此,您已完成 Fathom 的配置。在接下来的步骤中,您将配置 Nginx 作为 Fathom 安装的反向代理。在继续之前,请确保您拥有一个指向服务器 IP 地址的域名。

使用以下 nano 编辑器命令创建新的 Nginx 服务器块配置文件 /etc/nginx/sites-available/fathom。

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

插入以下配置,并务必修改 server_name 选项中的域名。

server {
    listen 80;
    server_name analytics.howtoforge.local;
    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; 
    }
}

完成后,保存并退出文件。

现在运行以下命令以激活服务器块文件 /etc/nginx/sites-available/fathom 并验证 Nginx 语法。

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

如果语法正确,终端将打印输出“syntax is ok - test is successful”(语法正确 - 测试成功)。

在 Debian 12 上安装 Fathom 隐私优先网站分析平台

接下来,运行以下命令以重启 Nginx 服务并应用您所做的更改。执行命令后,您的 Fathom 安装应该可以通过您的域名进行访问。

sudo systemctl restart nginx

最后,运行以下 certbot 命令,使用 Letsencrypt 提供的 SSL/TLS 证书来保护 Fathom 安装。请务必将域名和电子邮件地址信息替换为您自己的内容。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email 
[email protected]
 -d analytics.howtoforge.local

过程完成后,您的 SSL/TLS 证书将位于 /etc/letsencrypt/live/domain.com 目录中。此外,Nginx 服务器块文件 /etc/nginx/sites-available/fathom 会通过 Certbot Nginx 插件自动配置为使用 HTTPS。

访问 Fathom

启动您常用的 Web 浏览器,访问您 Fathom 安装的域名,例如 http://analytics.howtoforge.local/。您应该会自动被重定向到 HTTPS 连接,并进入 Fathom 登录页面。

输入您的管理员电子邮件地址和密码,然后点击 Sign in(登录)。

在 Debian 12 上安装 Fathom 隐私优先网站分析平台

点击 Create site(创建站点)以创建第一个跟踪器。

在 Debian 12 上安装 Fathom 隐私优先网站分析平台

您应该能看到 Fathom 生成的跟踪器代码。

在 Debian 12 上安装 Fathom 隐私优先网站分析平台

下方展示了 Fathom 网站分析详情。

在 Debian 12 上安装 Fathom 隐私优先网站分析平台

从这里开始,您可以为您的网站添加并设置新的跟踪器。

结论

总之,您已在 Debian 12 服务器上完成了 Fathom 隐私优先网站分析平台的安装,使用 PostgreSQL 数据库服务器和 Nginx 作为反向代理。您还使用 Letsencrypt 提供的 SSL/TLS 证书保护了您的安装,并在 Debian 服务器上配置了 UFW(Uncomplicated Firewall)。您可以添加新的跟踪器并将其部署到您的网站上。