本教程适用于以下操作系统版本
- Ubuntu 22.04(Jammy Jellyfish)
- Ubuntu 18.04(Bionic Beaver)
本页内容
- 前提条件
- 安装 PostgreSQL 服务器
- 创建 PostgreSQL 数据库和用户
- 在 Ubuntu 上安装 Fathom:创建用户并下载 Fathom、配置 Fathom、将 Fathom 作为 Systemd 服务运行
- 创建 Fathom 用户
- 安装并配置 Nginx 作为反向代理
- 使用 UFW 保护 Fathom
- 通过 Certbot 启用 HTTPS
- 访问 Fathom 安装
- 结论
- 创建用户并下载 Fathom
- 配置 Fathom
- 将 Fathom 作为 Systemd 服务运行
Fathom 是一款注重隐私的网站分析软件,符合 GDPR 规范,无需使用 Cookie 横幅。它是 Google Analytics 的替代品,但不会侵犯用户隐私,也不会泄露访客数据。
在本文中,我们将介绍如何在 Ubuntu 22.04 服务器上安装 Fathom 这款注重隐私的网站分析软件。你将使用 PostgreSQL 数据库和 Nginx 反向代理来安装 Fathom。
前提条件
要安装 Fathom,请确保你已具备以下条件:
- 一台 Ubuntu 22.04 服务器。
- 一个具有 root 权限的非 root 用户。
- 一个已指向服务器 IP 地址的域名。
安装 PostgreSQL 服务器
Fathom 是一款使用 PostgreSQL 作为后端数据库的开源网站分析工具。要安装 Fathom,你必须先安装 PostgreSQL,然后创建一个新的 PostgreSQL 数据库和用户。
首先,运行以下命令更新你的 Ubuntu 软件包索引。
sudo apt update

然后,运行以下命令将 PostgreSQL 数据库服务器安装到你的 Ubuntu 系统。
sudo apt install postgresql
输入 Y 以确认操作。

安装完成后,PostgreSQL 服务将自动运行并启用。运行以下 systemctl 命令来验证 PostgreSQL 是否已启动。
sudo systemctl is-enabled postgresql
sudo systemctl status postgresql
在下面的输出中,你可以看到 postgresql 服务已启用,并将在启动时自动运行。同时你可以看到 postgresql 服务的状态为 running(运行中)。

创建 PostgreSQL 数据库和用户
PostgreSQL 已安装完成,接下来为 Fathom 安装创建一个新的数据库和用户。
使用以下命令以默认用户 postgres 登录 PostgreSQL。
sudo -u postgres psql
登录后,执行以下查询语句创建一个新的 PostgreSQL 数据库和用户。在本示例中,你将创建名为 fathomdb 的数据库和名为 fathom 的用户,用于你的 Fathom 安装。
CREATE USER fathom WITH CREATEDB CREATEROLE PASSWORD 'password';
CREATE DATABASE fathomdb OWNER fathom;

现在使用以下查询语句查看可用的数据库和用户列表,以确认你的数据库和用户已创建成功。
\du
\l
在以下输出中,你可以看到数据库 fathomdb 和用户 fathom 已创建。输入 q 或按 Ctrl+d 退出 PostgreSQL。

接下来,执行以下命令以 fathom 用户身份连接到 PostgreSQL 数据库 fathomdb。系统提示时输入你的密码,然后按 ENTER 键确认。
sudo -u postgres psql -U fathom -h 127.0.0.1 -d fathomdb
登录后,使用以下查询语句验证你的连接。
\conninfo
以下截图显示用户 fathom 已连接到 PostgreSQL 数据库 fathomdb。确认无误后,即可继续进行 Fathom 安装。

在 Ubuntu 上安装 Fathom
PostgreSQL 数据库已准备就绪,你将通过完成以下阶段来开始 Fathom 安装:
- 创建用户并下载 Fathom
- 配置 Fathom
- 将 Fathom 作为 Systemd 服务运行
事不宜迟,我们开始吧。
创建用户并下载 Fathom
首先,你需要创建一个用于运行 Fathom 的新系统用户。然后,将 Fathom 二进制包下载到你的 Ubuntu 机器上。
要开始,请运行以下命令创建新的系统用户 fathom。
sudo useradd -r -d /opt/fathom fathom
创建新的主目录 /opt/fathom,并将所有者更改为用户和组 fathom。
sudo mkdir -p /opt/fathom
sudo chown -R fathom:fathom /opt/fathom
接下来,使用以下 wget 命令下载 fathom 二进制包。
wget https://github.com/usefathom/fathom/releases/download/v1.3.1/fathom_1.3.1_linux_amd64.tar.gz

下载完成后,将 fathom 二进制文件解压到 /usr/local/bin 目录,并赋予其可执行权限。
tar -C /usr/local/bin -xzf fathom_1.3.1_linux_amd64.tar.gz
chmod +x /usr/local/bin/fathom
最后,执行以下命令验证 fathom 的安装路径和版本。
which fathom
fathom --version
Fathom 1.3.1 已安装到 /usr/local/bin/fathom。

配置 Fathom
至此,你已经下载了 Fathom,并创建了所需的用户和安装目录。现在,我们深入配置 Fathom 安装。
运行以下命令生成一个随机密码密钥(secret)。将生成的密钥复制到你的记事本中。
head /dev/urandom | tr -dc A-Za-z0-9 | head -c 20 ; echo ''
现在切换到 /opt/fathom 目录。
cd /opt/fathom
使用以下命令创建新的 data 目录和 .env 文件。
sudo -u fathom mkdir -p /opt/fathom/data
sudo -u fathom touch /opt/fathom/data/.env
使用以下 nano 编辑器命令打开 .env 文件。
sudo -u fathom nano /opt/fathom/data/.env
插入以下配置,并务必将 PostgreSQL 数据库信息和 FATHOM_SECRET 替换为你自己的信息。
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="qDQ4fawzKOfBAtJ3O4ID"
完成后保存并退出文件。

现在切换到 /opt/fathom/data 目录,并通过以下命令运行 Fathom。
cd /opt/fathom/data
sudo -u fathom fathom server
这将初始化并迁移 Fathom 数据库。如果成功,你将看到 Fathom 在默认端口 8080 运行的确认信息。现在可以按 Ctrl+c 终止 Fathom 进程。

将 Fathom 作为 Systemd 服务运行
既然你已经配置好 Fathom 并通过命令行成功运行它,我们更进一步,将其作为 systemd 服务运行以便于管理。这样你就可以通过 systemctl 管理 Fathom。
运行以下 nano 编辑器命令,创建新的 systemd 服务文件 /etc/systemd/system/fathom.service。
sudo nano /etc/systemd/system/fathom.service
将以下配置插入到文件中。如下所示,fathom 服务将以用户 ` fathom ` 身份运行,默认工作目录为 /opt/fathom/data。
[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
完成后保存并退出编辑器。
现在运行以下命令重新加载 systemd 管理器。
sudo systemctl daemon-reload
重新加载后,使用以下命令启动并启用 fathom 服务。此后,Fathom 将在后台运行,并在系统启动时自动运行。
sudo systemctl start fathom
sudo systemctl enable fathom
执行以下命令验证 fathom 服务。
sudo systemctl status fathom
如果你的配置成功,你应该能看到 fathom 服务的状态为 running(运行中)。

最后,运行以下命令通过开放端口检查 Fathom。Fathom 正在你的 Ubuntu 机器的默认端口 8080 上运行。
ss -tulpn | grep fathom

创建 Fathom 用户
现在 Fathom 已经启动并运行,你需要为你的 Fathom 安装创建第一个用户。
切换到 /opt/fathom/data 目录。
cd /opt/fathom/data
执行以下 fathom 命令创建 Fathom 用户。在本示例中,你将创建一个名为 bob、密码为 password 的新用户。
sudo -u fathom fathom user add --email="
[email protected]
" --password="password"

安装并配置 Nginx 作为反向代理
在本指南中,你将使用 Nginx 作为反向代理来运行 Fathom。我们来安装 Nginx,并为 Fathom 创建一个新的 server block(服务器块)配置。
执行以下 apt 命令在你的 Ubuntu 服务器上安装 Nginx。
sudo apt install nginx -y

安装完成后,使用 nano 编辑器创建新的服务器块配置 /etc/nginx/sites-available/fathom。
sudo nano /etc/nginx/sites-available/fathom
插入以下配置,并务必修改 server_name 行中的域名。
server {
listen 80;
server_name fathom.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'。
现在运行以下 systemctl 命令重启 Nginx 服务以应用更改。
sudo systemctl restart nginx

最后,使用以下命令验证 Nginx 服务状态。确保 Nginx 在你的 Ubuntu 服务器上处于 active(运行中)且已启用。
sudo systemctl is-enabled nginx
sudo systemctl status nginx

使用 UFW 保护 Fathom
配置完 Nginx 后,我们来配置 UFW,并开放 HTTP 和 HTTPS 端口,以允许访问 Fathom 安装。
执行以下命令将 OpenSSH 应用配置文件添加到 UFW。然后启动并启用 UFW。
sudo ufw allow OpenSSH
sudo ufw enable
输入 y 继续,UFW 将启动并在开机时自动运行。

现在运行以下命令添加 'Nginx Full' 应用配置文件。这将在你的 Ubuntu 系统上开放 HTTP 和 HTTPS 两种协议。
sudo ufw allow 'Nginx Full'
使用以下命令验证 UFW 上的端口列表,确保 OpenSSH 和 'Nginx Full' 配置文件都已在 UFW 上启用。
sudo ufw status

通过 Certbot 启用 HTTPS
在此阶段,你的 Fathom 安装可以从外部网络访问,但仍然使用 HTTP 模式。为了保护你的安装,你必须在 Nginx 服务器块配置上启用 HTTPS。
在本示例中,你将通过 Certbot 和 Let's Encrypt 启用 HTTPS。因此,请确保你的域名已指向 Ubuntu 服务器的 IP 地址。
运行以下 apt 命令将 Certbot 和 python3-certbot-nginx 软件包安装到你的 Ubuntu 系统。输入 y 继续。
sudo apt install certbot python3-certbot-nginx -y

安装完成后,执行以下 certbot 命令生成新的 SSL/TLS 证书。请务必将域名和电子邮件地址替换为你的信息。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email
[email protected]
-d fathom.howtoforge.local
过程结束后,你的 SSL 证书将生成在 /etc/letsencrypt/live/domain.com 目录。同时,你的 Nginx 服务器块配置将由 Nginx Certbot 插件自动配置为 HTTPS。
访问 Fathom 安装
打开你的网页浏览器,访问你的 Fathom 安装域名(例如:https://fathom.howtoforge.local/)。如果安装成功,你将看到 Fathom 登录页面。
使用你创建的用户名和密码登录,然后点击 Sign In(登录)确认。

首先,系统会要求你创建第一个跟踪器(tracker)。输入你的站点名称,然后点击 Create site(创建站点)。

现在你将看到为你的站点生成的 JavaScript 跟踪代码。将代码复制到你的代码编辑器中,并粘贴到你的目标站点。

现在你可以点击 update site(更新站点)按钮继续,然后点击弹出窗口外部,进入如下所示的 Fathom 分析仪表盘:

结论
恭喜!你已在 Ubuntu 服务器上成功安装 Fathom 网站分析工具。你使用 PostgreSQL 数据库服务器安装了 Fathom,并配置了 Nginx 作为反向代理。此外,你还通过 Let's Encrypt 使用 HTTPS 保护了 Fathom,并配置了 UFW 以开放 HTTP 和 HTTPS 端口。