本页内容
- 先决条件
- 步骤 1 - 配置防火墙
- 步骤 2 - 安装 Git
- 步骤 3 - 安装 Docker 和 Docker Compose
- 步骤 4 - 安装 Nginx
- 步骤 5 - 下载 Plausible
- 步骤 6 - 配置 Plausible 配置 Google Search Console 配置 Google Analytics
- 步骤 7 - 安装 Plausible
- 步骤 8 - 安装 SSL
- 步骤 9 - 将 Nginx 配置为反向代理
- 步骤 10 - 添加站点并开始跟踪
- 总结
- 配置 Google Search Console
- 配置 Google Analytics
Plausible 是一款开源、注重隐私的网站流量分析软件。它是 Google Analytics 的轻量级替代品,可让你在不损害隐私的前提下跟踪访客。它支持 GDPR 且不使用 Cookie。你可以在外观现代的仪表盘中查看统计数据,它提供的跟踪脚本非常精简,不会拖慢你的网站。你可以自行托管 Plausible,也可以购买其订阅服务。
在本指南中,我们将在 Debian 12 服务器上使用 Docker 安装 Plausible Analytics。
先决条件
- 一台运行 Debian 12 的服务器。
- 一个具有 sudo 权限的非 root 用户。
- 一个指向该服务器的完全限定域名(FQDN),例如 plausible.example.com。
- 已启用并运行 Uncomplicated Firewall(UFW)。
- 更新所有内容。 $ sudo apt update && sudo apt upgrade
- 安装系统所需的必要软件包。其中部分软件包可能已经在你的系统上安装过了。 $ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring unzip -y
一台运行 Debian 12 的服务器。
一个具有 sudo 权限的非 root 用户。
一个指向该服务器的完全限定域名(FQDN),例如 plausible.example.com。
已启用并运行 Uncomplicated Firewall(UFW)。
更新所有内容。
$ sudo apt update && sudo apt upgrade
安装系统所需的必要软件包。其中部分软件包可能已经在你的系统上安装过了。
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring unzip -y
步骤 1 - 配置防火墙
第一步是配置防火墙。Ubuntu 默认自带 ufw(Uncomplicated Firewall)。
检查防火墙是否正在运行。
$ sudo ufw status
你应该会看到如下输出。
Status: inactive
放行 SSH 端口,以免启用防火墙时中断当前连接。
$ sudo ufw allow OpenSSH
同时放行 HTTP 和 HTTPS 端口。
$ sudo ufw allow http
$ sudo ufw allow https
启用防火墙
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
再次检查防火墙的状态。
$ sudo ufw status
你应该会看到类似的输出。
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
步骤 2 - 安装 Git
克隆 Plausible 官方仓库需要 Git。安装 Git。
$ sudo apt install git
验证安装。
$ git --version
git version 2.39.2
设置初始配置变量。
$ git config --global user.name "Your Name"
$ git config --global user.email "
[email protected]
"
步骤 3 - 安装 Docker 和 Docker Compose
我们需要通过官方仓库安装 Docker。添加 Docker 的官方 GPG 密钥。
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
将 Docker 仓库添加到系统。
$ echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
更新 APT 仓库列表并安装 Docker。
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
验证 Docker 引擎是否安装正确。
$ docker --version
Docker version 24.0.6, build ed223bc
执行以下命令,以便无需使用 sudo 即可运行 Docker 命令。
$ sudo usermod -aG docker ${USER}
$ su - ${USER}
至此,本教程的 Docker 和 Docker Compose 安装部分完成。
步骤 4 - 安装 Nginx
Debian 12 自带较旧版本的 Nginx。要安装最新版本,你需要下载 Nginx 官方仓库。
导入 Nginx 的签名密钥。
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
添加 Nginx 稳定版仓库。
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
更新系统仓库。
$ sudo apt update
安装 Nginx。
$ sudo apt install nginx
验证安装。在 Debian 系统上,以下命令只能配合 sudo 使用。
$ sudo nginx -v
nginx version: nginx/1.24.0
启动 Nginx。
$ sudo systemctl start nginx
检查服务状态。
$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled)
Active: active (running) since Wed 2023-10-11 01:35:15 UTC; 3s ago
Docs: https://nginx.org/en/docs/
Process: 3598 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 3599 (nginx)
Tasks: 3 (limit: 4652)
Memory: 2.4M
CPU: 8ms
CGroup: /system.slice/nginx.service
??3599 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
??3600 "nginx: worker process"
??3601 "nginx: worker process"
Oct 11 01:35:15 plausible systemd[1]: Starting nginx.service - nginx - high performance web server...
Oct 11 01:35:15 plausible systemd[1]: Started nginx.service - nginx - high performance web server.
步骤 5 - 下载 Plausible
克隆 Plausible 自托管(Self-Hosting)GitHub 仓库。
$ git clone https://github.com/plausible/hosting
切换到下载的目录。
$ cd hosting
步骤 6 - 配置 Plausible
在下载的目录中,你会看到以下文件。
- docker-compose.yml - 其中包含 Docker Compose 工具用于安装 Plausible 服务器及其所需一切的配置。Plausible 需要 PostgreSQL 服务器来存放数据库,并需要 Clickhouse 数据库来存放统计数据。它还提供了一个选项,可安装 SMTP 服务器来发送通知、密码重置和每周统计邮件。
- plausible-conf.env - 该文件包含用于自定义你的安装的环境变量。
第一步是生成用于保护 Plausible 应用的密钥。运行以下命令生成密钥。
$ openssl rand -base64 64 | tr -d '\n' ; echo
vPkrzp59qQIYtMcyTCKGuyvpkbQ8PYf+Go2ju+DPV/fZUk2eTGNiwV3CoKEueXzypMVLbSkJNGS7xfq96/wepg==
复制终端上显示的密钥。打开 plausible-conf.env 文件进行编辑。
$ nano plausible-conf.env
将以下密钥粘贴到变量 BASE_URL 的前面。
将 BASE_URL 的值设为 https://plausible.example.com,或任何你想要安装 Plausible 的域名。由于稍后我们会配置 SSL,请务必使用 HTTPS 填写 base URL。你也可以更改 Plausible 监听的端口号。默认情况下它使用 8000 端口。
BASE_URL=https://plausible.example.com
SECRET_KEY_BASE=yQVWmKfhvr/etwTSN/pSUmhAwExBX7eCKXKAMKV4mrtqzFCA5dgrAnTMx2dS2OIZ9KulVwa+vl7iGRbJpycYaA==
PORT=8000
如果你想在安装后禁止用户注册,请添加以下这一行。
DISABLE_REGISTRATION=true
如果你开放其他用户注册,并希望他们验证邮箱地址,请添加以下这一行。要使此功能生效,你需要配置 SMTP 详细信息,我们接下来会讨论。
ENABLE_EMAIL_VERIFICATION=true
你也可以使用以下数据配置 SMTP 详细信息。在我们的示例中,我们使用的是 Amazon SES 服务。
[email protected]
MAILER_NAME=Howtforge
SMTP_HOST_ADDR=email-smtp.us-west-2.amazonaws.com
SMTP_HOST_PORT=587
SMTP_USER_NAME=<username>
SMTP_USER_PWD=<password>
SMTP_HOST_SSL_ENABLED=1
SMTP_RETRIES=2
配置 Google Search Console
你还可以将 Plausible 配置为连接 Google Search Console,这样它就能列出用户通过哪些搜索词访问你的网站。配置这部分可能稍微棘手一些。
访问 Google API 控制台并登录。进入 API 控制台后,创建一个新项目。为你的项目命名。如果你使用的是 Google Apps 账号,可能会看到 Organization(组织)字段。在截图中,我们使用的是 Google 个人账号。点击 Create(创建)继续。

在接下来的界面中点击 Enable APIs and Services(启用 API 和服务)。

搜索并点击 Google Search Console API。

在接下来的界面中点击 Enable(启用)。

接下来,你需要访问 API 的凭据。但首先,你需要配置同意屏幕。为此,请从左侧进入 Credentials(凭据)选项,并点击 Configure Consent Screen(配置同意屏幕)按钮。

选择 User Type(用户类型)为 Internal(内部),因为我们仅通过代码访问它,然后点击 Create(创建)继续。如果你使用的是 Google Apps 账号,则可以选择任意一种 User Type。

设置你的产品名称,并添加与你的 Google Search Console 账号关联的支持邮箱和开发者联系邮箱。将你的域名添加为 Authorized domains(已授权网域)。如果你是在 https://plausible.example.com 这个域名下安装 Plausible,则添加 https://example.com 作为已授权网域。如果你是将 Plausible 托管为顶级域名,则使用那个域名。点击 Save and Continue(保存并继续)按钮进入下一个界面。

跳过接下来的几个界面并返回仪表盘。回到仪表盘后,从左侧进入 Credentials(凭据)标签页,点击 Create credential(创建凭据)。选择 OAuth Client ID(OAuth 客户端 ID)。

在下一个界面中,选择 Web Application(Web 应用)作为项目类型。为其命名并点击 Create(创建)。

你需要保存你的 Client ID(客户端 ID)和 Client Secret(客户端密钥)。复制这些值并粘贴到 plausible-conf.env 文件中。你也可以下载 JSON 文件以保存凭据,供日后使用。

GOOGLE_CLIENT_ID=<ID>.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=<secret>
完成后,按 Ctrl + X,并在提示时输入 Y 来保存 plausible-conf.env 文件。
你创建的应用状态为 Testing(测试中)。第一种选择是向 Google 验证你的应用,这可能需要 3-5 天。为了避免向 Google 验证,你可以将你的 Google 账号添加为 Test user(测试用户)。进入 OAuth 同意屏幕,向下滚动到 Test users(测试用户)部分,点击 Add Users(添加用户)按钮来添加你的 Google 账号。

配置 Google Analytics
Plausible 还支持导入你的 Google Analytics 数据。为此,我们需要启用以下 API。
- Google Analytics Reporting API
- Google Analytics API
返回 APIs and Services(API 和服务)页面,点击 Enable APIS and Services(启用 API 和服务)按钮,找到并启用上述两个 API。

步骤 7 - 安装 Plausible
要安装 Plausible,请运行以下 docker 命令。
$ docker compose up -d
运行该命令会创建一个用于存放数据的 PostgreSQL 数据库、一个用于存放统计数据的 Clickhouse 数据库,对两个数据库执行迁移以准备架构,使用 env 文件中的信息创建一个管理员账号,并在 8000 端口启动服务器。
检查容器的状态。你也可以使用 docker compose ps 命令来查看。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d9d2806a978e plausible/analytics:v2.0 "/entrypoint.sh sh -…" 56 seconds ago Up 54 seconds 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp hosting-plausible-1
99c9a1afff34 clickhouse/clickhouse-server:23.3.7.5-alpine "/entrypoint.sh" 56 seconds ago Up 55 seconds 8123/tcp, 9000/tcp, 9009/tcp hosting-plausible_events_db-1
cf408ae32fc3 postgres:14-alpine "docker-entrypoint.s…" 56 seconds ago Up 55 seconds 5432/tcp hosting-plausible_db-1
a5bae1a9f163 bytemark/smtp "docker-entrypoint.s…" 56 seconds ago Up 55 seconds 25/tcp hosting-mail-1
你应该能够在 http://
步骤 8 - 安装 SSL
在将 Nginx 配置为反向代理来托管 plausible 域名之前,我们需要先设置 SSL 证书。
我们需要安装 Certbot 来生成 Let's Encrypt 提供的免费 SSL 证书。你可以通过 Debian 的仓库安装 Certbot,也可以使用 Snapd 工具获取最新版本。我们将使用 Snapd 版本。
Debian 12 默认未预装 Snapd。安装 Snapd 软件包。
$ sudo apt install snapd
确保你的 Snapd 版本是最新的。
$ sudo snap install core
$ sudo snap refresh core
安装 Certbot。
$ sudo snap install --classic certbot
使用以下命令,通过创建指向 /usr/bin 目录的符号链接,确保 Certbot 命令可以运行。
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
验证安装。
$ certbot --version
certbot 2.7.1
生成 SSL 证书。
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m
[email protected]
-d plausible.example.com
上述命令会将证书下载到你服务器上的 /etc/letsencrypt/live/plausible.example.com 目录。
生成 Diffie-Hellman 组证书。
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
检查 Certbot 续期调度服务。
$ sudo systemctl list-timers
你会发现 snap.certbot.renew.service 是计划运行的服务之一。
NEXT LEFT LAST PASSED UNIT ACTIVATES
.....
Wed 2023-10-11 06:43:59 UTC 2h 57min left Wed 2023-10-11 00:51:05 UTC 2h 55min ago apt-daily.timer apt-daily.service
Wed 2023-10-11 06:56:46 UTC 3h 10min left Wed 2023-10-11 00:51:05 UTC 2h 55min ago apt-daily-upgrade.timer apt-daily-upgrade.service
Wed 2023-10-11 07:32:00 UTC 3h 45min left - - snap.certbot.renew.timer snap.certbot.renew.servic
对该过程进行一次演练(dry run),以检查 SSL 续期是否正常工作。
$ sudo certbot renew --dry-run
如果未看到错误,说明一切就绪。你的证书将自动续期。
步骤 9 - 将 Nginx 配置为反向代理
到目前为止,Plausible 通过 8000 端口在本地系统上运行。要使其通过域名运行,我们将使用 Nginx 充当反向代理。
在 /etc/nginx/conf.d/ 目录下为 Plausible 创建配置文件。
$ sudo nano /etc/nginx/conf.d/plausible.conf
将以下代码粘贴进去。
server {
listen 80; listen [::]:80;
server_name plausible.example.com;
return 301 https://$host$request_uri;
}
server {
server_name plausible.example.com;
listen 443 ssl http2;
listen [::]:443 ssl http2;
access_log /var/log/nginx/plausible.access.log;
error_log /var/log/nginx/plausible.error.log;
ssl_certificate /etc/letsencrypt/live/plausible.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/plausible.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/plausible.example.com/chain.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers off;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
完成后,按 Ctrl + X,并在提示时输入 Y 来保存文件。
打开 /etc/nginx/nginx.conf 文件进行编辑。
$ sudo nano /etc/nginx/nginx.conf
在 include /etc/nginx/conf.d/*.conf; 这一行之前添加以下一行。
server_names_hash_bucket_size 64;
按 Ctrl + X,并在提示时输入 Y 来保存文件。
验证 Nginx 配置文件语法。
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
重启 Nginx 服务以使新配置生效。
$ sudo systemctl restart nginx
步骤 10 - 添加站点并开始跟踪
在浏览器中打开域名 https://plausible.example.com,你应该会看到如下 Plausible 注册界面。

点击 Create my account(创建我的账号)按钮继续。
如果你已将变量 ENABLE_EMAIL_VERIFICATION 设为 true,系统会提示你输入发送到你的邮箱 ID 的验证码。如果你已配置 SMTP 服务器,你应该会收到包含验证码的邮件。如果没有,或者由于某种原因没有收到验证码,请运行以下命令来验证数据库中的所有用户。
$ docker compose exec plausible_db psql -U postgres -d plausible_db -c "UPDATE users SET email_verified = true;"
接下来,系统会要求你添加一个站点。输入你想要跟踪的域名,并选择用于统计报告时区(Timezone)。

在下一页,系统会提供用于跟踪你网站的 JavaScript 代码。复制该代码并粘贴到你网站的
.... 之间,然后点击 Start collecting data(开始收集数据)按钮继续。
根据你的网站流量,仪表盘应该很快就开始显示你网站的统计数据。

你可以通过访问你的站点设置,导入 Google Analytics 数据,或连接 Google Search Console。
总结
至此,我们关于在 Debian 12 服务器上安装和配置 Plausible Analytics 的教程就结束了。如果你有任何问题,请在下方评论中留言。