如何在Ubuntu 20.04上安装Plausible Analytics?

1,921 阅读9分钟

简介

Plausible Analytics是一个用Elixir语言编写的开源的、自我托管的网络分析应用程序,它专注于简单性和隐私。它在PostgreSQL和ClickHouse数据库中存储有关你网站访问者的数据。

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

前提条件

为了完成本教程,你首先需要以下条件。

**注意:**如果你使用DigitalOcean的一键式Docker镜像,这些先决条件步骤可以跳过。这个镜像将有Docker、Docker Compose和UFW已经安装和配置好。

在你选择的地区启动一个新的Docker镜像,然后以根用户身份登录,继续学习教程。可以选择不使用所有命令中的sudo 部分,但这不是必须的。

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

当你满足了所有的先决条件后,继续进行第1步,在这里你将下载并启动Plausible软件。

第1步 - 使用Docker Compose安装Plausible分析软件

Plausible已经创建了一个Git仓库,里面有自我托管该软件所需的所有配置文件。你的第一步将是把这个仓库克隆到你的服务器上,更新两个配置文件,然后启动Plausible应用程序和数据库容器。

现在登录到你的服务器。

首先,使用cd 命令导航到/opt 目录。

cd /opt

然后使用git 命令从 GitHub 上克隆 repo 到/opt 中的一个新目录,名为plausible

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

这将把所有必要的配置文件拉到/opt/plausible 。移动到新创建的目录中。

cd plausible

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

在你打开该文件进行编辑之前,生成一个新的随机哈希值。

openssl rand 64 | base64 -w 0 ; echo

这使用openssl 命令来生成64个随机字符,并使用base64 命令对其进行base64编码。将输出结果复制到你的剪贴板上,然后打开该配置文件。

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 生成的随机字符。注意,你在这里指定的密码必须至少有六个字符。

保存文件(CTRL+O ,然后在ENTERnano ),并关闭你的编辑器(CTRL+X )。

你可以在这个文件中添加更多的配置选项,但这个最小的配置将使你开始运行。更多关于通过plausible-conf.env 配置Plausible的信息可以在官方的Plausible Analytics自我托管文档中找到。

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

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 来下载、配置和启动容器。

sudo docker-compose up --detach

--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 容器的主页来验证这一点。

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

如果一些HTML被输出到你的终端,你就知道服务器已经启动并运行了。

接下来,我们将设置Nginx来_反向代理_Plausible从localhost:8000 到公众。

第2步 - 安装和配置Nginx

在elixir服务器前放置一个像Nginx这样的Web服务器,可以通过将缓存、压缩和静态文件服务卸载到一个更有效的进程中来提高性能。我们将安装Nginx,并将其配置为_反向代理_请求到Plausible,这意味着它将负责将用户的请求传递给Plausible,然后再返回。

首先,刷新你的软件包列表,然后使用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配置文件。我们把我们的文件称为plausible.conf ,但你可以使用一个不同的名字。

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/ 来启用该配置。

sudo ln -s /etc/nginx/sites-available/plausible.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

你的Plausible网站现在应该可以在纯HTTP上使用。加载 http://your_domain_here它将看起来像这样。

A screenshot of the Plausible login page, with 'Email' and 'Password' textboxes

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

第3步--安装Certbot和设置SSL证书

多亏了Certbot和Let's Encrypt免费证书授权,为我们的Plausible应用程序添加SSL加密只需要两个命令。

首先,安装Certbot和它的Nginx插件。

sudo apt install certbot python3-certbot-nginx

接下来,在--nginx 模式下运行certbot ,并指定你在Nginxserver_name 配置中使用的相同域名。

sudo certbot --nginx -d your_domain_here

你会被提示同意Let's Encrypt的服务条款,并输入一个电子邮件地址。

之后,会问你是否要将所有HTTP流量重定向到HTTPS。这取决于你,但一般建议这样做,而且是安全的。

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

OutputCongratulations! 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 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。

你的网站现在是安全的,使用步骤1中设置的默认用户信息登录是安全的。然后,你会被提示验证你的注册,一个验证码将被发送到你配置的地址。

默认情况下,这封电子邮件是直接从你的服务器发送的,由于各种垃圾邮件预防措施,这可能会产生一些问题。如果你没有收到该邮件,请检查你的垃圾邮件文件夹。如果它也不在那里,你可能需要在plausible-conf.env 文件中设置更合适的SMTP细节。关于邮件配置的细节,请参见Plausible官方的自我托管文档

当你成功登录后,你会看到一个提示,让你的第一个网站在Plausible上设置好。

A screenshot of the Plausible initial setup workflow, asking for the domain of your website and a timezone

你已经成功地安装并确保了你的Plausible分析软件。

结论

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

现在你已经准备好设置你的网站并添加Plausible Analytics的跟踪脚本。关于使用软件和设置网站的进一步信息,请参见官方的Plausible Analytics文档