如何在 Ubuntu 20.04 上安装 Umami Web Analytics 软件

x33g5p2x  于2021-10-27 转载在 Java  
字(5.3k)|赞(0)|评价(0)|浏览(781)

介绍

Umami 是一个用 Node.js 编写的开源、自托管的网络分析应用程序。它专注于简单、精心设计、快速和注重隐私。它可以将有关您网站访问者的数据存储在 MySQL 或 PostgreSQL 数据库中。

在本教程中,您将使用 Docker Compose 安装 Umami 和 PostgreSQL 数据库,然后安装 Nginx 作为 Umami 的反向代理。最后,您将通过使用 Certbot 从 Let's Encrypt 证书颁发机构下载和配置 SSL 证书来启用安全的 HTTPS 连接。

先决条件

为了完成本教程,您首先需要以下内容:

  • Ubuntu 20.04 服务器,启用了 UFW 防火墙。请阅读我们的 Ubuntu 20.04 初始服务器设置以了解有关设置这些要求的更多信息
  • 安装了 Docker。您可以使用如何在 Ubuntu 20.04 上安装和使用 Docker 的步骤 1 来完成此操作。或者,如果您希望非 root 用户能够在不使用 sudo 的情况下运行 docker 命令,您可以按照该教程的第 2 步进行操作
  • Docker Compose 已安装。按照如何在 Ubuntu 20.04 上安装和使用 Docker Compose 的 Step 1 安装此软件
    注意: 如果您使用 DigitalOcean 的 1-Click Docker Image,可以跳过这些先决条件步骤。此映像将安装和配置 Docker、Docker Compose 和 UFW。

在您选择的区域启动一个新的 Docker 映像,然后以 root 用户身份登录并继续本教程。或者,您可以省略所有命令的 sudo 部分,但这不是必需的。

最后,要启用 SSL,您需要一个指向服务器公共 IP 地址的域名。例如,这应该类似于 example.comumami.example.com。如果您使用的是 DigitalOcean,请参阅我们的 DNS Quickstart 以了解有关在我们的控制面板中创建域资源的信息。

当您满足所有先决条件后,继续执行步骤 1,您将在其中下载并启动 Umami 软件。

步骤 1 — 使用 Docker Compose 安装 Umami 和 PostgreSQL

您的第一步将是克隆 Umami Git 存储库,更新 docker-compose.yml 配置文件,然后启动 Umami 和 PostgreSQL 容器。

您将把 repo 下载到 /opt 目录中。现在使用 cd 命令去那里:

cd /opt

然后使用 git 命令从 GitHub 克隆 repo:

sudo git clone https://github.com/mikecao/umami.git

这会将所有软件和配置文件拉入 /opt/umami。现在进入新创建的 umami 目录:

cd umami

现在您需要更新项目的 docker-compose.yml 文件。该文件是 docker-compose 命令用于一次配置和启动多个 Docker 容器的文件。我们需要更改此文件中的两个选项:Umami 绑定到的 IP,以及在对数据库中的内容进行加密时用作盐的随机哈希。

在打开 docker-compose.yml 进行编辑之前,让我们生成一个新的随机散列以粘贴到文件中:

openssl rand -base64 32
OutputtCgKyCWc/3C9VH+Ex0TysXsGEKQklQXm0H3nSnlR48g=

这使用 openssl 命令生成 32 个随机字符。将输出复制到剪贴板,然后打开配置文件:

sudo nano docker-compose.yml

找到 HASH_SALT 选项,删除占位符文本,然后粘贴您刚刚生成的随机哈希:

docker-compose.yml

. . .
      HASH_SALT: replace-me-with-a-random-string
. . .

接下来,找到配置的 ports: 部分:

docker-compose.yml

. . .
    ports:
      - "127.0.0.1:3000:3000"
. . .

通过添加 127.0.0.1: 来更新 "3000:3000" 值。这确保了 Umami 只监听 localhost 接口,而不是公开可用的。即使你设置了 UFW 防火墙,由于 Docker 网络工作方式的一些怪癖,如果你不采取这一步,你的 Umami 容器将可以在端口 3000 上被公众访问。

完成这些配置更改后,保存文件(CTRL+O 然后在 nano 中保存 ENTER)并关闭编辑器(CTRL+X)。

现在,使用 docker-compose 来启动你的两个容器:

sudo docker-compose up --detach

--detach 标志告诉 docker-compose 在后台创建容器,与我们的终端会话分离:

Output. . .
Creating umami_db_1 ... done
Creating umami_umami_1 ... done

Umami 和 PostgreSQL 现在正在运行。您可以通过使用 curl 命令获取在 localhost 上运行的新 Umami 容器的主页来验证这一点:

curl localhost:3000
Output<!DOCTYPE html><html><head><meta charSet="utf-8"/> . . .

如果大量 HTML 输出到您的终端,您就知道 Umami 服务器已启动并正在运行。

接下来,我们将设置 Nginx 从 localhost:3000 向公众反向代理 Umami。

第 2 步 - 安装和配置 Nginx

将 Web 服务器(例如 Nginx)放在 Node.js 服务器前面可以通过将缓存、压缩和静态文件服务卸载到更高效的进程来提高性能。我们将安装 Nginx 并将其配置为代理对 Umami 的请求,这意味着它将负责将来自您的用户的请求传递给 Umami 并再次返回。

首先,刷新您的软件包列表,然后使用 apt 安装 Nginx:

sudo apt update sudo apt install nginx

使用“Nginx Full”UFW 应用程序配置文件允许公共流量到端口 80443(HTTP 和 HTTPS):

sudo ufw allow "Nginx Full"
OutputRule added
Rule added (v6)

接下来打开/etc/nginx/sites-available 目录中的新 Nginx 配置文件。我们将调用我们的 umami.conf,但您可以使用不同的名称:

sudo nano /etc/nginx/sites-available/umami.conf

将以下内容粘贴到新的配置文件中,确保将 your_domain_here 替换为您配置为指向 Umami 服务器的域。这将类似于 umami.example.com,例如:

/etc/nginx/sites-available/umami.conf

server {
    listen       80;
    listen       [::]:80;
    server_name  your_domain_here;

    access_log  /var/log/nginx/umami.access.log;
    error_log   /var/log/nginx/umami.error.log;

    location / {
      proxy_pass http://localhost:3000;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

此配置目前仅适用于 HTTP,因为我们将在下一步中让 Certbot 负责配置 SSL。配置的其余部分设置日志记录位置,然后将所有流量传递到 http://localhost:3000,我们在上一步中启动的 Umami 实例。

保存并关闭文件,然后通过将其链接到 /etc/nginx/sites-enabled/ 来启用配置:

sudo ln -s /etc/nginx/sites-available/umami.conf /etc/nginx/sites-enabled/

使用 nginx -t 验证配置文件语法是否正确:

sudo nginx -t
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

最后,重新加载 nginx 服务以获取新配置:

sudo systemctl reload nginx

您的 Umami 站点现在应该可以通过纯 HTTP 访问。加载 http://your_domain_here,它看起来像这样:

现在您的站点已通过 HTTP 启动并运行,是时候保护与 Certbot 和 Let's Encrypt 证书的连接了。

步骤 3 — 安装 Certbot 并设置 SSL 证书

感谢 Certbot 和 Let's Encrypt 免费证书颁发机构,将 SSL 加密添加到我们的 Umami 应用程序只需两个命令。

首先,安装 Certbot 及其 Nginx 插件:

sudo apt install certbot python3-certbot-nginx

接下来,在 --nginx 模式下运行 certbot,并指定您在 Nginx server_name 配置中使用的相同域:

sudo certbot --nginx -d your_domain_here

系统会提示您同意 Let's Encrypt 服务条款,并输入电子邮件地址。

之后,系统会询问您是否要将所有 HTTP 流量重定向到 HTTPS。这取决于您,但通常建议这样做并且这样做是安全的。

之后,Let's Encrypt 将确认您的请求,Certbot 将下载您的证书:

OutputCongratulations! You have successfully enabled https://umami.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=umami.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/umami.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/umami.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。

您的站点现在是安全的,可以安全地使用默认用户 admin 和密码 umami 登录。请立即执行此操作,然后按照 the official first login documentation 登录并将您的 admin 密码更改为更安全的密码。

当你第一次登录时,你会看到一个有点裸露的仪表板:

您已成功安装并保护了您的 Umami 分析软件。在本教程的结尾,您将找到指向文档的链接,这些链接将帮助您开始将站点添加到 Umami,并将 Umami 跟踪代码段添加到您的站点。

结论

在本教程中,您使用 Docker Compose 启动了 Umami 应用程序和 PostgreSQL 数据库,然后设置了 Nginx 反向代理并使用 Let's Encrypt SSL 证书对其进行保护。

相关文章