Plausible Analytics 自部署与 Azure PostgreSQL
什么是 Plausible Analytics?
正如其名,它是一个统计服务,在官网,它是这样介绍自己的:
Plauable Analytics是Google Analytics的简单、开源、轻量级(<1 KB)和隐私友好的替代品。
使用 Plausible Analytics?
你可以在他们的官网注册一个账号,他们将提供30天的免费试用,其后你可以购买如下最低9美元/mo的套餐:
这样的开源 SaaS 服务也让他们不到四年就年入百万美元:
How we built a $1M ARR open source SaaS
好,至此你已经会使用 Plausible Analytics 了,本文结束(x
开始将 Plausible Analytics 部署到自己的服务器上
正如本文标题所示,我们是要将 Plausible Analytics 部署到自己的服务器上,Plausible Analytics 的设计是要通过 Docker 进行部署。
必备条件
- 一台 Linux 服务器
- x86_64 架构并且支持 SSE 4.2 指令集
- 已安装 Docker 和 Openssl
官方推荐是至少 4 GB 的内存,但我是在 Azure B1ms (仅 1GB 内存) 也是能够运行的,具体还取决于你的站点流量~
- PostgreSQL 数据库
在官方文档中,默认将 PostgreSQL以容器形式部署在本机,但你看本文的标题就知道,咱是直接使用 Azure PostgreSQL 的,所以本文仅针对外部数据库部署展开,当然,你也使用其他云服务商的 PostgreSQL 数据库而非仅限于 Azure 。
- 一个域名
你不会想着把IP嵌入你的网站作为统计吧(?)
开整
克隆仓库
1 | git clone https://github.com/plausible/hosting |
如果你没有安装 Git 你开源直接下载并解压
1 | curl -L https://github.com/plausible/hosting/archive/master.tar.gz | tar -xz |
生成密钥
Plausible Analytics 需要一个密钥用于加密数据。
1 | openssl rand -base64 64 | tr -d '\n' ; echo |
这时候用个小本本把密钥记下 先把这串密钥保存到一旁
一些基本配置
- docker-compose.yml
docker-compose.yml 负责将 Plausible Analytics 部署到 Docker 容器中。
我们这里不需要 PostgreSQL,所以我们把他移除。
不要忘记移除 && /entrypoint.sh db createdb
与 depends_on
中的 plausible_db
。
- plausible-conf.env
这里要注意,Azure PostgreSQL 不支持在 portal.azure.com 上创建数据库,所以我们要提前自行创建。
我在这使用了 Navicat 图形化操作,当然,你也可以在本地安装 PostgreSQL (无需 安装 Server ) 来操作。
Navicat:
Pgadmin4:
这里要注意,首次打开是需要设置主密码的,否则会出现 Crypt key is missing.
:What is “crypt key missing” error in Pgadmin4 and how to resolve it?
这里就要比 Navicat 方便,全部保持默认就行了。
创建好数据库之后,就要非常注意一点 Azure PostgreSQL 要开启一些插件!!!
这里要区分 Azure PostgreSQL 单一服务器 与 灵活服务器
Azure Database for PostgreSQL(单一服务器)中的 PostgreSQL 扩展
Azure Database for PostgreSQL 灵活服务器中的 PostgreSQL 扩展
我刚开始没有找到这个地方,它一直提示缺少CITEXT,折腾了好久,终于在这找到开启的的分类,我直接把拓展全开了
- MaxMind IP Geolocation 数据库
首先要进入 geoip
文件夹,在docker-compose.geoip.yml
中可以设置更新频率:
1 | - GEOIPUPDATE_FREQUENCY=168 # update every 7 days |
在geoip.conf
设置你的ID和KEY:
1 | GEOIPUPDATE_ACCOUNT_ID=<your-account-id> |
ID 和 KEY 在这里获取:
首先 注册 GeoLite2
选项选择”No”,生成后要及时将你的ID和KEY替换上面的内容
回到上一级目录,创建自动更新 GeoIP 的容器:
1 | docker-compose -f docker-compose.yml -f geoip/docker-compose.geoip.yml up -d |
在创建其他服务的容器:
1 | docker-compose up -d |
如果此时出现了错误,提示数据库不存在,则应运行如下命令:
1 | docker run -it --net hosting-master_default --rm --link plausible_events_db_1:clickhouse-server yandex/clickhouse-client --host plausible_plausible_events_db_1 --query "CREATE DATABASE IF NOT EXISTS plausible_events_db" |
这里要做相应的替换,替换成你的容器名称
如果你是跟着我流程做的一般情况下名称也是上面一样的
至此,你的 Plausible Analytics 已经安装完成,如果还没有跑起来,去仔细查看 docker 的 logs,有疑问也可在评论区留言,或者前往 Github 反馈问题。
更新
1 | docker-compose down --remove-orphans |
开始使用
这时我们打开 http://服务器IP:8000 即可看到我们的服务啦!
填写你预设的管理员邮箱和密码
此时尽管你把这个代码放到了网站上,它依然是不可用的,别忘了我们这还是访问端口,我们还没有操作域名,我们需要将域名指向该服务器,并使用nginx等服务配置反向代理,反代 http://127.0.0.1:8000
在此不做赘述,请参考 nginx 的文档及相关内容。
当年设置好这些后,别忘了你为什么要用 Plausible Analytics。如果你是为了避免访客的广告拦截器阻挡了你的网站统计分析,这样还是完全不足够的,因为广告拦截器能够立即识别到 plausible.js
,你还需继续: Adblockers and using a proxy for analytics
Plausible Analytics 提供了如下一些代理:
独立代理:
- Akamai
- Cloudflare Workers
- CloudFront
- Google Cloud Platform
集成代理:
- Netlify
- Vercel
- Vercel with Next.JS
- Fresh
- Nginx
- Caddy
- Django
- Shared hosting on Apache
到此,你就可以替换你的 snippet 为你的 workers 上所设置的域名及路径,并开始使用 Plausible Analytics 了。
结语
Plausible Analytics 尽管提供了诸多方法以避免被广告拦截器拦截(这些方法也是值得借鉴的),但其过于简陋的后台,可能未必能满足部分人的需求
但是,Plausible Analytics 可以提供更多的功能,比如:关联到 Google Search Console、各类事件邮件通知、API 调用、分享统计……
关于更多内容,请参考 Plausible Analytics。
参考链接:
Debian 11 使用 Docker 安装 Plausible Analytics 自建网站统计