如何在Ubuntu 22.04上安装Plausible Analytics

介绍

Plausible Analytics是一个开源的、自托管的网络分析应用程序,用Elixir编写,侧重于简单性和隐私保护。它将关于您网站访客的数据存储在PostgreSQL和ClickHouse数据库中。

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

先决条件

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

  • 一台安装了Ubuntu 22.04的服务器,并启用了UFW防火墙。请阅读我们的使用Ubuntu 22.04进行初始服务器设置以了解更多关于设置这些要求的信息。
  • Docker已安装。您可以使用第1步在Ubuntu 22.04上安装和使用Docker来完成此操作。如果您希望非root用户能够在不使用sudo的情况下运行docker命令,则可以选择遵循该教程的第2步
  • Docker Compose已安装。请按照在Ubuntu 22.04上安装和使用Docker Compose第1步来安装这个软件

注意:如果您使用的是DigitalOcean的一键式Docker镜像,则可以跳过这些先决步骤。此镜像将已经安装和配置了Docker、Docker Compose和UFW

在您选择的区域启动一个新的Docker镜像,然后以root用户身份登录并按照教程进行操作。可选地,您可以省略所有命令中的sudo部分,但这并非必需

最后,要启用SSL,您需要将一个域名指向您服务器的公共IP地址。这应该是像example.complausible.example.com这样的东西。如果您使用的是DigitalOcean,请参阅我们的DNS快速入门,了解在我们的控制面板中创建域资源的信息。

完成所有先决条件后,请继续步骤1,在那里您将下载并启动Plausible软件。

步骤1 – 使用Docker Compose安装Plausible Analytics

Plausible已经创建了一个Git存储库,其中包含自托管软件所需的所有配置文件。您的第一步是克隆此存储库到您的服务器,更新两个配置文件,然后启动Plausible应用程序和数据库容器。

立即登录到您的服务器。

首先,使用cd命令进入/opt目录:

  1. cd /opt

然后使用git命令将存储库从GitHub克隆到/opt内的一个名为plausible的新目录中:

  1. sudo git clone https://github.com/plausible/hosting plausible

这将把所有必要的配置文件都拉取到/opt/plausible中。进入新创建的目录:

  1. cd plausible

我们需要编辑的第一个文件是plausible-conf.env,这个文件有一些我们需要设置的配置变量。

在打开文件进行编辑之前,请生成一个新的随机哈希:

  1. openssl rand 64 | base64 -w 0 ; echo

这使用openssl命令生成64个随机字符,并使用base64命令对它们进行base64编码。将输出复制到剪贴板,然后打开配置文件:

  1. sudo nano plausible-conf.env

文件中包含五个需要填写的变量:

plausible-conf.env
ADMIN_USER_EMAIL=your_email_here
ADMIN_USER_NAME=admin_username
ADMIN_USER_PWD=admin_password
BASE_URL=https://your_domain_here
SECRET_KEY_BASE=paste_your_random_characters_here

填写电子邮件、用户名、密码和基本URL,然后粘贴您使用openssl生成的随机字符。

注意:此处指定的密码必须至少为六个字符长。如果您使用的是裸IP地址而不是域名,请确保在其前面加上http://

保存文件(在nano中按CTRL+O然后ENTER),然后关闭编辑器(按CTRL+X)。

您可以在此文件中添加更多配置选项,但这个最小设置将使您能够开始运行。有关通过plausible-conf.env配置Plausible的更多信息,请参阅官方Plausible Analytics自托管文档

现在您需要更新docker-compose.yml文件。此文件是docker-compose命令用于配置和启动多个Docker容器的文件。我们需要更改此文件中的一个选项:Plausible绑定到的IP。

  1. sudo nano docker-compose.yml

找到定义Plausible容器的部分。它将以plausible:开头。在该部分找到ports:定义,并将其更新为以下内容:

docker-compose.yml
    ports:
      - 127.0.0.1:8000:8000

这确保了Plausible只监听在localhost接口上,并且不对外开放。即使你已经设置了UFW防火墙,由于Docker网络工作的一些怪异之处,如果你没有执行这一步骤,你的Plausible容器将可以通过端口8000公开访问,而我们只希望通过接下来设置的Nginx代理进行访问。

保存并关闭docker-compose.yml文件,然后使用docker-compose下载、配置和启动容器:

  1. sudo docker compose up --detach

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

Output
. . . Starting plausible_plausible_events_db_1 ... done Starting plausible_plausible_db_1 ... done Starting plausible_mail_1 ... done Starting plausible_plausible_1 ... done

应用程序容器及其所有支持的邮件和数据库容器现在应该正在运行。您可以使用curl命令验证这一点,获取运行在localhost上的新Plausible容器的主页:

  1. curl http://localhost:8000
Output
<html><body>You are being <a href="/login">redirected</a>.</body></html>

如果你的终端输出了一些HTML,说明服务器已经启动并运行。

接下来,我们将设置Nginx来将Plausible从localhost:8000反向代理到公共网址。

步骤2 — 安装和配置Nginx

将诸如Nginx之类的Web服务器放置在您的Elixir服务器前面可以通过将缓存、压缩和静态文件服务的负载转移到更高效的进程来提高性能。我们将安装Nginx并配置它以将请求反向代理到Plausible,这意味着它将负责处理来自您用户的请求并将其传递给Plausible,然后再返回。

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

  1. sudo apt update
  2. sudo apt install nginx

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

  1. sudo ufw allow "Nginx Full"
Output
Rule added Rule added (v6)

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

  1. sudo nano /etc/nginx/sites-available/plausible.conf

将以下内容粘贴到新的配置文件中,请确保将your_domain_here替换为您已配置为指向Plausible服务器的域。例如,这应该是类似于plausible.example.com的东西:

/etc/nginx/sites-available/plausible.conf
server {
    listen       80;
    listen       [::]:80;
    server_name  your_domain_here;

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

    location / {
      proxy_pass http://localhost:8000;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

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

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

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

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

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

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

  1. sudo systemctl reload nginx

您的 Plausible 网站现在应该可以通过普通 HTTP 访问。加载 http://your_domain_here,页面应该如下所示:

现在您已经将您的网站运行在 HTTP 上,是时候使用 Certbot 和 Let’s Encrypt 证书来保护连接了。

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

借助 Certbot 和 Let’s Encrypt 免费证书机构,将 SSL 加密添加到我们的 Plausible 应用中只需两个命令。

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

  1. sudo apt install certbot python3-certbot-nginx

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

  1. sudo certbot --nginx -d your_domain_here

您将被要求同意 Let’s Encrypt 的服务条款,并输入电子邮件地址。

之后,您将被问及是否要将所有 HTTP 流量重定向到 HTTPS。这取决于您,但一般建议执行这个操作,而且是安全的。

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

Output
Congratulations! You have successfully enabled https://plausible.example.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=plausible.example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/plausible.example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/plausible.example.com/privkey.pem Your cert will expire on 2022-12-05. 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。

您的网站现在已经安全,可以使用您在步骤 1中设置的默认用户详细信息登录。然后,您将被提示验证您的注册信息,并且验证代码将发送到您配置的邮箱地址。

默认情况下,此电子邮件直接从您的服务器发送,这可能会因各种垃圾邮件预防措施而出现问题。如果您没有收到邮件,请检查您的垃圾邮件文件夹。如果也不在那里,请在plausible-conf.env文件中设置更合适的 SMTP 详细信息。有关邮件配置的详细信息,请参阅官方的 Plausible 自托管文档

成功登录后,您将看到一个提示,让您使用 Plausible 设置第一个网站:

您已成功安装和保护了您的 Plausible 分析软件。

结论

在本教程中,您使用 Docker Compose 启动了 Plausible Analytics 应用程序及其相关的辅助容器,然后设置了 Nginx 反向代理并使用 Let’s Encrypt SSL 证书进行了保护。

现在,您可以设置您的网站并添加 Plausible Analytics 跟踪脚本了。有关使用该软件和设置您的站点的更多信息,请参阅官方 Plausible Analytics 文档

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-plausible-analytics-on-ubuntu-22-04