首页
学习笔记
经验教程
标杆项目
个人简历
ZDREAM
对抗变化的方法唯有拥抱变化。
累计撰写
35
篇文章
累计创建
3
个标签
累计收到
1
条评论
栏目
首页
学习笔记
经验教程
标杆项目
个人简历
目 录
CONTENT
以下是
Docker
相关的文章
2024-09-17
AI编排工具部署体验
LibreChatlobechatmaxkbcoze扣子fastgptDify
2024-09-17
1
0
0
Docker
AI
2024-09-04
针对网站的用户行为分析:Matomo本地部署及踩坑记录
一、前言作为一个长期和数据打交道的人,我对各类数据指标有着近乎本能的关注。在维护自己的这个小网站时,很自然地就想到了要引入一套用户行为分析工具。它不仅能满足我个人的好奇心,了解一下都有谁、在什么时间、通过什么方式访问了这里,长期来看,这些数据的沉淀也能为网站内容的优化方向提供一些客观的参考。市面上的选择很多,比如强大的 Google Analytics。但在当前环境下,我更倾向于一个能将数据完全保留在自己服务器上的解决方案。这不仅是为了彻底的“数据私有”,也是出于一种技术上的“掌控感”。经过一番调研,开源的 Matomo 进入了我的视野。它功能全面,社区活跃,最关键的是,它支持完全本地化部署。为什么是 Matomo?在正式开始部署前,简单梳理一下选择 Matomo 的几个核心理由:数据所有权: 这是最重要的一点。所有访客数据都存储在自己的数据库里,不必担心隐私泄露或数据被用于其他目的。对于一些只在内网访问的政务系统,这种方案更是刚需。功能完备: 从实时访客、行为路径,到流量来源、设备统计,乃至转化漏斗分析,社区版的功能已经足够强大,完全可以满足个人网站和中小型项目的分析需求。开源免费: 无需承担额外的服务费用,只需要投入服务器资源和一些折腾的时间。良好的兼容性: 除了常规的网站,它同样支持对 APP、小程序甚至 IoT 设备的数据进行追踪,扩展性很好。二、部署体验1.平台部署和现在大多数应用一样,Matomo 的部署首选方案自然是 Docker。官方提供了相当完善的 Docker 镜像和部署指南,这让初始启动变得非常简单。我个人习惯使用 docker-compose 来编排容器,这样能更清晰地管理服务和数据卷。 一个基础的 docker-compose.yml 文件大概是下面这样,包含 Matomo 应用本身和一个独立的数据库服务。详细配置参考:https://github.com/matomo-org/docker/blob/master/.examples/nginx/compose.yml启动命令:docker run --rm --volumes-from="matomo-app-1" --link matomo-app-1 python:3-alpine python /var/www/html/misc/log-analytics/import_logs.py --url=http://ip.of.your.matomo.example --login=yourlogin --password=yourpassword --idsite=1 --recorders=4 /var/www/html/logs/access.log2.踩坑看似简单的部署,很快就遇到了第一个门槛:SSL 配置。Matomo 在初始化安装完成后,会强制要求使用 HTTPS 访问。这本身是一个非常合理的安全设定,但问题在于,官方的 Docker 镜像中,默认的 Apache 服务并未开启 SSL 模块。这就导致了一个矛盾:如果我在 docker-compose 里直接将容器的 443 端口映射出来并配置好域名,Matomo 在首次启动时会因为自身 Apache 不支持 SSL 而启动失败。这是一个典型的“先有鸡还是先有蛋”的问题。正确的解决思路是分两步走: 1. 先以 HTTP 方式完成 Matomo 的初始化安装。 2. 进入容器内部,手动为 Apache 配置 SSL,然后再将服务切换到 HTTPS。具体的步骤记录如下: #第一步:进入正在运行的 Matomo 容器。 bash docker exec -it matomo bash #第二步:在容器内为 Apache 启用 SSL 模块并重启服务。 a2enmod ssl service apache2 restart #第三步:修改 Matomo 的站点配置文件,添加 HTTPS 监听和证书配置。 nano matomo:/var/www/html/config/config.ini.php #添加https监听 <VirtualHost *:443> ServerName your.domain.com SSLEngine on SSLCertificateFile /etc/ssl/certs/fullchain.pem SSLCertificateKeyFile /etc/ssl/certs/privkey.pem </VirtualHost> #第四步:再次重启容器中的apache docker exec -it matomo service apache2 restart每次容器升级时(apache爆出的漏洞有点多,不升级不放心),证书问题都要重新处理一遍。3.网站接入部署完成后,剩下的工作就简单了。Matomo 会提供一段 JavaScript 追踪代码,只需要将它嵌入到网站所有页面的 <head> 标签里即可,比如说Halo的代码注入全局标签:对于使用 Vue 这类前端框架构建的单页面应用(SPA),虽然直接添加到index.html就能够实现访客IP时间等记录,但是无法区分出来用户具体访问了哪些页面,如果想详细的页面浏览情况分析,就需要额外配置路由切换时的页面追踪,官方文档中也有相应的说明:https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-websites-that-use-vue-js/?mtm_campaign=Matomo_App&mtm_source=Matomo_App_OnPremise&mtm_medium=App.CoreAdminHome.trackingCodeGenerator4.查看效果数据开始汇入后,Matomo 的仪表盘就变得鲜活起来。默认的仪表盘提供了丰富的信息模块,可以直观地看到实时的访客数量、访客的地理位置分布、访问趋势图、流量来源渠道、用户使用的操作系统和浏览器等。默认情况下,为了保护访客隐私,IP 地址是做了脱敏处理的,当然这个也可以根据需要进行修改。 通过这些数据,我可以清晰地看到哪些文章更受欢迎,访客是通过搜索引擎还是直接链接访问过来的。这些看似简单的信息,背后却能反映出很多问题,对于后续内容的调整和网站的优化,无疑是很有价值的。如果vue项目不针对性设置的话就会出现图里这种所有人只访问了/index的情况 ↑可以查看详细日志,默认是IP脱敏的,可以配置取消掉。总的来说,Matomo 的部署虽然比使用第三方 SaaS 服务要复杂一些,但整个过程完全在可控范围内。它最终交付给我的是一个完全私有、功能强大的网站分析平台,这种“拥有感”是任何第三方服务都无法替代的。 对于注重数据隐私的个人站长,或是需要对内部系统进行用户行为追踪的中小型项目来说,Matomo 无疑是一个值得投入时间去配置和使用的工具。它不仅是一个工具,其部署和配置的过程,本身也是一次不错的技术实践。
2024-09-04
12
0
0
Docker
项目管理
2024-05-05
自建代码仓库&CI/CD持续集成自动部署
自建代码仓库,归根到底就是本地部署一套GitLab、以及GitLab-Runner官方提供了Docker部署的方式,但是太笨重了,他甚至内置了一个Grafana和MySQL。
2024-05-05
2
0
0
Docker
2023-11-28
Docker镜像拉取那些事
1 提高镜像下载速度针对一些比较知名、基础的组件镜像,例如MySQL、Redis、Java、jenkins之类的,可以通过配置镜像加速解决。1.1 Ubuntu配置镜像加速 # 创建目录 mkdir -p /etc/docker # 录入内容 tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": [ "http://hub-mir
2023-11-28
9
0
0
Docker