本教程适用于以下操作系统版本
- 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 以继续安装。

依赖安装完成后,您将确认各项依赖都已在系统中可用。
使用以下命令验证 postgresql 服务,确保其正在运行并已启用。
sudo systemctl is-enabled postgresql
sudo systemctl status postgresql
终端将显示如下结果,表明 postgresql 正在运行且已启用。

接下来,执行以下命令验证 nginx 服务。
sudo systemctl is-enabled nginx
sudo systemctl status nginx
终端将打印类似的输出,表明 nginx 服务正在运行且已启用。

最后,执行以下命令验证 certbot。这将定位 certbot 的二进制可执行文件,并查看系统中已安装的 certbot 当前版本。
which certbot
certbot --version
显示的输出将告诉您,Certbot 2.1 已安装在 /usr/bin/certbot。

配置防火墙
安装依赖后,您将配置 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”(防火墙已在系统启动时激活并启用)。

最后,使用以下命令验证 UFW 状态。
sudo ufw status
输出中的 active 表明 UFW 正在运行且已启用,您还应该能看到已添加到 UFW 的 OpenSSH 和 WWW Full 配置规则。

创建 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;

现在执行以下查询,以验证 PostgreSQL 服务器上可用的数据库和用户列表。
\du
\l
如果数据库和用户创建成功,将显示如下输出:

输入 quit 退出 PostgreSQL 服务器。
创建数据库和用户后,执行以下命令以用户 fathom 和数据库 fathomdb 登录到 PostgreSQL。当系统提示时,输入您的数据库用户密码。
sudo -u postgres psql -U fathom -h 127.0.0.1 -d fathomdb
连接到 PostgreSQL 服务器后,执行以下查询以验证您的连接。
\conninfo
执行命令后,将显示如下输出,表明您已以用户 fathom 连接到了数据库 fathomdb。

再次输入 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。

配置 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 ''

接下来,切换到 /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 运行,并且终端将打印如下输出:

按 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

使用以下命令验证 fathom 服务,确保其正在运行且已启用。
sudo systemctl is-enabled fathom
sudo systemctl status fathom
如果 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 服务器。用户创建完成后,您应该会看到类似如下的确认信息:

配置 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”(语法正确 - 测试成功)。

接下来,运行以下命令以重启 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(登录)。

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

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

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

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