简介
Plausible Analytics是一个用Elixir语言编写的开源的、自我托管的网络分析应用程序,它专注于简单性和隐私。它在PostgreSQL和ClickHouse数据库中存储有关你网站访问者的数据。
在本教程中,你将使用Docker Compose安装Plausible,然后安装Nginx,作为Plausible应用程序的反向代理。最后,你将通过使用Certbot从Let's Encrypt证书颁发机构下载和配置SSL证书来实现安全的HTTPS连接。
前提条件
为了完成本教程,你首先需要以下条件。
- 一台Ubuntu 20.04服务器,并启用UFW防火墙。请阅读我们的Ubuntu 20.04的初始服务器设置,了解更多关于设置这些要求的信息
- 安装Docker。你可以使用《如何在Ubuntu 20.04上安装和使用Docker》的第1步来完成。如果你想让你的非root用户在不使用Docker Compose的情况下能够运行
docker
,你可以选择遵循该教程的第2步。sudo
- 安装Docker Compose。按照《如何在Ubuntu 20.04上安装和使用Docker Compose》的步骤1来安装这个软件
**注意:**如果你使用DigitalOcean的一键式Docker镜像,这些先决条件步骤可以跳过。这个镜像将有Docker、Docker Compose和UFW已经安装和配置好。
在你选择的地区启动一个新的Docker镜像,然后以根用户身份登录,继续学习教程。可以选择不使用所有命令中的sudo
部分,但这不是必须的。
最后,为了启用SSL,你需要一个指向你服务器公共IP地址的域名。例如,这应该是像example.com
或plausible.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
,然后在ENTER
,nano
),并关闭你的编辑器(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应用程序配置文件,允许公共流量进入端口80
和443
(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
它将看起来像这样。
现在你的网站已经在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上设置好。
你已经成功地安装并确保了你的Plausible分析软件。
结论
在本教程中,你使用Docker Compose启动了Plausible分析应用程序及其相关的辅助容器,然后设置了一个Nginx反向代理,并使用Let's Encrypt SSL证书对其进行保护。
现在你已经准备好设置你的网站并添加Plausible Analytics的跟踪脚本。关于使用软件和设置网站的进一步信息,请参见官方的Plausible Analytics文档。