本页内容
- 准备工作
- 安装依赖项
- 配置 PostgreSQL 数据库和用户
- 安装 Umami
- 以 systemd 服务方式运行 Umami
- 配置 Apache 反向代理
- 配置 UFW 防火墙
- 使用 HTTPS 保护 Umami
- 访问 Umami
- 总结
Umami 是一个用 Node.js 编写的自由开源网站分析平台。它易于使用和安装,并提供了友好的用户界面。它以隐私保护为核心设计,可作为 Google Analytics 等服务的替代品。你可以将其部署在自己的服务器上,并自由选择数据库,支持 PostgreSQL 或 MySQL。
在本指南中,你将学习如何在 Ubuntu 24.04 服务器上安装以隐私为核心的 Umami 分析工具。
准备工作
完成本指南前,请确保你具备以下条件:
- 一台 Ubuntu 24.04 服务器。
- 一个具有管理员权限的非 root 用户。
- 一个已指向服务器 IP 地址的域名。
安装依赖项
Umami 是一个用 JavaScript 和 Node.js 编写的以隐私为核心的分析工具。它支持 MySQL/MariaDB 和 PostgreSQL 作为数据库。在本节中,你将安装 Umami 所需的依赖项,包括 Node.js、NPM、PostgreSQL、Apache Web 服务器以及 Git。
首先,运行以下命令更新 Ubuntu 软件包列表。
sudo apt update
现在运行以下命令安装 Node.js、NPM、Python、Git 和 PostgreSQL 等依赖项。输入 Y 确认安装。
sudo apt install nodejs npm git apache2 postgresql

安装完成后,使用以下命令检查 Apache 服务状态。
sudo systemctl is-enabled apache2 sudo systemctl status apache2
从下方输出可以看到,Apache 正在运行且已启用。

现在使用以下命令检查 PostgreSQL 服务器状态。
sudo systemctl is-enabled postgresql sudo systemctl status postgresql
你将看到 PostgreSQL 服务已启用,状态为 active(exited)。

最后,使用以下命令检查 Node.js 和 NPM 的版本:
nodejs --version npm --version
你可以看到已安装 Node.js 18.19 和 NPM 9.2。

配置 PostgreSQL 数据库和用户
安装完依赖后,你需要为 Umami 创建一个新的 PostgreSQL 数据库和用户。你将使用 psql PostgreSQL 命令行工具来创建数据库和用户。
使用以下命令登录 PostgreSQL 服务器:
sudo -u postgres psql
现在运行以下 SQL 语句创建一个名为 umami 的新用户以及 umamidb 数据库。请务必将密码替换为你自己的信息。
CREATE ROLE umami LOGIN ENCRYPTED PASSWORD 'password'; CREATE DATABASE umamidb OWNER=umami;

接下来,使用以下查询查看可用的数据库和用户列表。你将看到 PostgreSQL 服务器上已经存在 umami 用户及其对应的 umamidb 数据库。
\du \l
最后,输入 q 退出 PostgreSQL 命令行。

安装 Umami
在本节中,你将安装 yarn 包管理器,下载 Umami 源代码,并使用 yarn 安装 JavaScript 依赖,然后通过命令行构建并启动 Umami。
运行以下命令安装 yarn 包管理器。
npm install -g yarn
使用以下命令创建一个名为 umami 的系统用户和用户组。
sudo adduser --system --group --no-create-home --shell /sbin/nologin umami
现在运行以下 git 命令,将 Umami 源代码下载到 /var/www/umami 目录并进入该目录。
git clone https://github.com/umami-software/umami.git /var/www/umami cd /var/www/umami
接下来,运行以下 yarn 命令安装 Umami 的 JavaScript 依赖。
yarn install
下方显示了 Umami JavaScript 依赖的安装过程。

现在,使用 nano 编辑器创建一个新的 .env 文件。
nano .env
添加以下内容,将 PostgreSQL 配置为 Umami 的数据库。
DATABASE_URL=postgresql://umami:StrongPasswordUmami@localhost:5432/umamidb
完成后保存并退出文件。
接下来,运行以下命令构建 Umami。
yarn build

构建完成后,使用以下命令启动 Umami —— 它将在 3000 端口上运行:
yarn start

打开浏览器并访问 http://服务器IP:3000/。如果安装成功,你将看到如下的 Umami 登录页面:
回到终端服务器,按下 Ctrl+c 终止该进程。

最后,运行以下命令将 /var/www/umami 目录的所有权更改为 umami 用户。
sudo chown -R umami:umami /var/www/umami
以 systemd 服务方式运行 Umami
在本指南中,你将让 Umami 以后台 systemd 服务的方式运行。因此,现在你需要为 Umami 创建一个新的服务文件。
使用以下 nano 编辑器命令创建新的 systemd 服务文件 /etc/systemd/system/umami.service。
sudo nano /etc/systemd/system/umami.service
将以下配置内容插入到该文件中。
[Unit] Description=Umami Website Analytics After=network.target postgresql.service [Service] Type=simple ExecStart=/usr/bin/npm start Restart=always # Consider creating a dedicated user for umami here: User=umami Group=umami #Environment=NODE_ENV=production WorkingDirectory=/var/www/umami [Install] WantedBy=multi-user.target
完成后保存并退出文件。
现在运行以下命令重新加载 systemd 管理器并应用新的 umami.service 服务。
sudo systemctl daemon-reload

最后,运行以下命令启动、启用并查看 umami.service 的状态。
sudo systemctl enable --now umami sudo systemctl status umami
如下图所示,umami.service 已启用并正在运行,默认使用 3000 端口。

配置 Apache 反向代理
既然 Umami 已在后台运行,你现在需要将 Apache 配置为 Umami 的反向代理。
首先,运行以下命令启用将用作反向代理的 Apache 模块。
sudo a2enmod proxy proxy_http ssl rewrite headers

现在,使用 nano 编辑器创建一个新的 Apache 虚拟主机文件 /etc/apache2/sites-available/umami.conf。
sudo nano /etc/apache2/sites-available/umami.conf
添加以下配置,并务必将 ServerName 选项替换为你自己的域名。
<VirtualHost *:80> ServerName analytics.howtoforge.local Options -Indexes ProxyRequests on ProxyPass / http://localhost:3000/ ProxyPassReverse / http://localhost:3000/ </VirtualHost>
完成后保存并退出文件。
接下来,运行以下命令启用虚拟主机文件 umami.conf 并验证 Apache 配置语法。如果语法正确,你将看到 Syntax is OK 的输出。
sudo a2ensite umami.conf sudo apachectl configtest
最后,使用以下命令重启 Apache Web 服务器以应用更改。
sudo systemctl restart apache2

配置 UFW 防火墙
在配置 UFW 之前,请确保它已启用并正在运行。在本节中,你将启用 Apache Full 配置文件以允许 HTTP 和 HTTPS 访问。
运行以下命令通过 UFW 的 Apache Full 配置文件开放 HTTP 和 HTTPS 端口。
sudo ufw allow 'Apache Full'
现在使用以下命令重新加载 UFW 并查看其状态。你将看到 UFW 已激活,并且 Apache Full 配置文件已启用。
sudo ufw status
使用 HTTPS 保护 Umami
为了保护 Umami,你将使用 HTTPS。在本节中,你将通过 Let's Encrypt 生成 SSL/TLS 证书。本地域名用户也可以使用自签名证书。
使用以下命令安装 certbot 和 python3-certbot-apache。输入 Y 确认安装。
sudo apt install certbot python3-certbot-apache
现在运行以下 certbot 命令为 Umami 生成 SSL/TLS 证书。请务必将域名和邮箱地址替换为你自己的信息。
sudo certbot --apache --agree-tos --no-eff-email --redirect --hsts --staple-ocsp --email admin@howtoforge.local -d analytics.howtoforge.local
流程完成后,你的 SSL 证书将保存在 /etc/letsencrypt/live/domain.com 目录中,你的 Umami 安装也就通过 HTTPS 得到了保护。
访问 Umami
打开浏览器并访问 https://analytics.howtoforge.local/ 即可进入你的 Umami 安装。使用默认用户 admin 和密码 umami 登录。

如果登录成功,你将看到如下的 Umami 仪表盘:

要为你的网站添加新的分析数据,点击 Websites > Add Websites 按钮。要修改默认密码,点击 Settings > Users > Edit。
总结
恭喜!你已成功在 Ubuntu 24.04 服务器上安装了以隐私为核心的 Umami 分析工具。Umami 现已配合 PostgreSQL 数据库运行,并以 Apache 作为反向代理。同时,你还通过 certbot 和 Let's Encrypt 为 Umami 启用了 HTTPS 保护。