GoatCounter 介绍与选型指南

GoatCounter 介绍与选型指南:单二进制隐私优先 Web 统计的核心架构、功能特性,及与 Plausible/Matomo/Umami 的量化对比与适用场景(基于 v2.7.0 官方源核实)。

GoatCounter自托管GoSQLite监控LinuxGoatCounter2026/10/30

GoatCounter 介绍与选型指南

目标:面向准备自建网站访问统计的读者,讲清 GoatCounter 是什么、能做什么、不能做什么,并与 Plausible、Matomo、Umami 三个同类开源产品做量化对比,帮助你在 30 分钟内完成选型判断。本文为认知篇,所有版本、许可、定价、特性信息均溯源自官方渠道(来源与查询日期随文标注),部署、配置与命令的逐条实测见本系列其余三篇。

一、环境信息

本文是认知与选型篇,未做本地部署实验,以下为撰写时核实信息来源与版本基线(查询日期:2026-10-29):

  • 软件名称:GoatCounter(仓库 arp242/goatcounter,作者 Martin Tournoij / arp242)
  • 最新稳定版:v2.7.0(来源:GitHub Releases 页 https://github.com/arp242/goatcounter/releases,shields.io 版本徽章与 releases.atom 双重核验一致)
  • 开发语言:Go(官方发行二进制由 go1.25.5 编译,来源:v2.7.0 发行说明与 goatcounter version 官方输出格式说明)
  • 许可证:EUPL-1.2 的轻微修改版(来源:仓库 LICENSE 文件原文 "GoatCounter is licensed under a slightly modified version of European Union Public Licence")
  • 官网:https://www.goatcounter.com;托管服务:*.goatcounter.com
  • 对比对象(同为查询日期 2026-10-29):Plausible(plausible/analytics)、Matomo(matomo-org/matomo)、Umami(umami-software/umami)

二、软件概述

GoatCounter 是一个开源的 Web 访问统计平台(web analytics),定位是 Google Analytics 与 Matomo 的「轻量替代」——官方首页原话是 "easy to use and meaningful privacy-friendly web analytics as an alternative to Google Analytics or Matomo"(来源:goatcounter.com 首页,查询日期 2026-10-29)。它回答的问题非常朴素:我的页面今天/本周/本月被看了多少次,访客从哪里来,用什么设备,并以尽量少的数据收集做到这一点。

它的产品形态有三种用法,这在同类产品中很有代表性:

  1. 托管服务(SaaS):注册即得 你的名字.goatcounter.com,官方定价页表述为 "currently offered for free for reasonable public usage"——个人网站与中小企业的合理用量免费,"sending millions of pageviews/day isn't"(来源:goatcounter.com 首页 Pricing 段,2026-10-29)。
  2. 自托管(self-host):官方明确 "self-host it for any purpose"——自托管对任何用途(含商业)免费,这正是本系列文档的主角。交付物是一个单二进制文件,数据存 SQLite 或 PostgreSQL。
  3. 嵌入统计组件:三种埋点方式可选——标准 <script> 标签(官方称整页只增加约 3.5KB 数据传输)、无 JavaScript 的图片像素(tracking pixel)、后端中间件/日志文件导入(来源:goatcounter.com 首页 Features 段)。

💡 技术拓展:Web 统计(analytics)与产品分析(product analytics)是两类常被混淆的工具。Web 统计关注「页面被访问」的流量画像(PV/UV/来源/设备),代表有 GoatCounter、Plausible、Umami、Matomo、AWStats;产品分析关注「用户在应用内做什么」的行为流(事件、漏斗、留存、群组),代表有 PostHog、Countly、Mixpanel。GoatCounter 属于前者,也提供轻量的自定义事件(event)计数,但没有漏斗与留存分析。选型时先分清你要回答的问题,再看本表对比。

三、核心架构

GoatCounter 的架构可以用「一个进程 + 一张库表」概括,这也是它能做进 40MB 内存的原因(来源:官方文档与仓库 docs/benchmark.md 对 SQLite/PostgreSQL 的性能讨论;本系列部署篇实测单进程常驻内存约 38MB):

  • 单二进制:官方发行文件是一个静态编译的 Go 可执行文件(goatcounter-v2.7.0-linux-amd64.gz,约 13.3MB,解压后单文件),模板与静态资源编译进二进制,不依赖系统上的其他运行时(无 PHP/Node/Java)。SQLite 支持编译进二进制,跑 SQLite 模式时数据库就是一个文件。
  • 存储引擎二选一:SQLite(默认,零依赖,适合中小站点)或 PostgreSQL(官方推荐大流量场景,"for more serious usage PostgreSQL is recommended",来源:goatcounter help db 官方帮助原文)。官方明确 没有支持 MySQL/MariaDB 的计划("There are no plans to support other database engines such as MySQL/MariaDB",同上来源)。
  • 两级数据形态:页面访问先进入内存缓冲,按 -store-every(默认 10 秒)批量持久化;持久化时写两类数据——聚合计数表(小时级 PV 计数、浏览器/系统/地区统计,仪表盘读这些)与可选的原始明细(hits 明细,v2.7.0 出于隐私默认关闭,需在站点设置勾选 "Individual pageviews" 才落库;导出 CSV 的就是这份明细。来源:v2.7.0 settings.go 源码 CollectHits 位与默认值 190,本系列配置篇实测验证)。
  • 机器人识别:内置 User-Agent 机器人判定,机器人访问与真人访问分表存储(bots 表与 hits/聚合计数分离)。
  • HTTP 服务:内置 HTTP 服务器,-listen 直接对外;TLS 支持 ACME(Let's Encrypt 自动证书)或自有 PEM 证书,也常见置于 nginx/Caddy 之后做反代(来源:goatcounter help listen)。仪表盘实时刷新使用 WebSocket,反代时需允许 WebSocket 透传。
  • 地理库:内置 GeoLite2-Country 数据库(启动日志打印 geoip.type = GeoLite2-Country),可外接 MaxMind City 库或配置 maxmind:账号:密钥 自动每周更新(来源:goatcounter help serve)。

四、功能特性

以下特性清单逐条溯源自 goatcounter.com 首页与官方帮助文档(查询日期 2026-10-29):

  • 隐私优先:不使用 cookie、不持久存储个人数据、不用唯一标识追踪用户,官方定位为无需 GDPR 提示横幅;数据收集项(会话、来源、User-Agent、屏幕、地区、语言、原始明细)可在站点设置中逐项开关。
  • 轻量埋点:单个 <script> 标签(约 3.5KB);另有无 JS 图片像素方案,适配纯静态博客。
  • 多种数据接入:除浏览器埋点外,支持后端中间件(Go/Python 等语言库)与 Web 服务器日志文件导入(NCSA Combined/CLF、Caddy JSON、Bunny CDN、自定义格式,来源:goatcounter help logfile)。
  • 统计维度:页面路径、唯一访问(8 小时会话窗口)、来源站点与营销活动参数(campaign)、浏览器与操作系统、屏幕尺寸、国家/地区、语言;支持多视图过滤与路径分组。
  • 多站点:单实例可托管多个站点(vhost 区分),站点间可共享用户(link 机制,本系列命令篇实测 db create site -link)。
  • CSV 导出 / API:随时全量导出("Own your data; you can always export all data and cancel at any time",首页原文);REST API 支持计点上数、读统计、建站与导出管理。
  • 终端工具:CLI 可看终端版仪表盘、监控是否还有访问进来(dashboard、monitor 子命令),适合服务器侧巡检。
  • 邮件报告:支持周期性邮件摘要报告;邮件发送走 SMTP 中继(-smtp,默认打印到 stdout)。
  • 无障碍:官方把 accessibility 列为高优先级特性,界面适配屏幕阅读器。

官方没有提供的(选型时要心里有数):漏斗、留存群组、会话回放、热图、A/B 测试、用户个体画像——这些是产品分析工具的地盘;也没有 MySQL 支持。

五、快速开始(官方路径速览)

以下为官方 README 给出的自托管最小路径(来源:https://github.com/arp242/goatcounter README 与官方帮助,查询日期 2026-10-29;逐条实测回显见本系列《Ubuntu 24.04 安装 GoatCounter 2.7.0 指南》):

# 1. 下载并安装官方二进制(以 v2.7.0 linux-amd64 为例)
wget https://github.com/arp242/goatcounter/releases/download/v2.7.0/goatcounter-v2.7.0-linux-amd64.gz
gunzip goatcounter-v2.7.0-linux-amd64.gz
chmod +x goatcounter-v2.7.0-linux-amd64
sudo mv goatcounter-v2.7.0-linux-amd64 /usr/local/bin/goatcounter

# 2. 创建站点与管理员(SQLite 自动建库)
goatcounter db create site \
    -vhost stats.example.com \
    -user.email you@example.com

# 3. 启动服务
goatcounter serve -listen :8080 -tls http

托管服务(SaaS)路径则只需在页面注册后,往自己的网页插一行脚本:

<script data-goatcounter="https://你的子域.goatcounter.com/count"
        async src="//gc.zgo.at/count.js"></script>

六、适用场景与限制

适合(结合官方定位与开源社区使用惯例):

  • 个人博客、作品集、开源项目文档站的 PV/UV 与来源统计——GoatCounter 的主战场,轻、省资源、无 cookie。
  • 中小企业官网与营销页:关心「多少人看了哪个页面、从哪个渠道来」,不需要重型行为分析。
  • 多站点集中统计:一台 1GB 内存的小服务器即可同时统计多个域名。
  • 对合规敏感的场景:不落 cookie、默认不存原始明细(v2.7.0 起默认仅聚合),降低个人数据持有面。

限制(务必在选型前确认可接受):

  • 数据库只支持 SQLite 与 PostgreSQL,明确不支持 MySQL/MariaDB(官方 help db 原文,本系列配置篇实测引用)。
  • 无原生集群/分布式形态:单实例单进程,横向能力依赖 PostgreSQL 承压;官方提供的 SQLite/PostgreSQL 基准(docs/benchmark.md)就是围绕这一架构的取舍。
  • 仪表盘刻意简洁:没有自定义仪表盘、漏斗、留存、热图;报表深度远小于 Matomo。
  • 默认不存原始页面明细(隐私默认),开启 "Individual pageviews" 后导出 CSV 才有逐条记录;基于聚合数据的 API 统计不受影响(来源:v2.7.0 源码与设置页,本系列配置篇实测)。
  • 界面语言与生态以英文为主,中文社区资料相对少。

七、同类选型对比

对比对象选取与 GoatCounter 定位最接近的三个开源 Web 统计产品:Plausible、Matomo、Umami(均为自托管可用的独立产品,平台站内另有专文)。下表数据除标注外均为 2026-10-29 查证:星数取自 shields.io GitHub 徽章(当日缓存值),许可证取自各仓库 LICENSE/徽章,技术栈与存储取自官方文档。

维度GoatCounterPlausibleMatomoUmami
GitHub Stars(2026-10-29,shields.io)6.1k30k22k40k
开发语言/技术栈Go(单二进制)Elixir + Phoenix + ClickHousePHP + MySQL 生态Node.js/Next.js + PostgreSQL
许可证EUPL-1.2(轻微修改版)AGPL-3.0GPL-3.0MIT
存储依赖SQLite 或 PostgreSQLPostgreSQL + ClickHouseMySQL/MariaDBPostgreSQL(v2 起,MySQL 为 v1 遗留)
部署形态单二进制 + systemd 即可官方 Docker Compose 为主传统 PHP 部署或 Docker官方 Docker Compose 为主
空载内存量级约 40MB 级(单进程)数百 MB 级(Elixir+ClickHouse 双件套)数百 MB 级(PHP-FPM+MySQL)一二百 MB 级(Node+PG)
cookie/GDPR无 cookie,无需提示横幅无 cookie默认有 cookie,需配 cookieless无 cookie
原始明细/导出默认聚合,可选开启明细并导出 CSV事件级导出 API全量数据库在手事件级 API
产品分析能力(漏斗/留存/热图)无部分(趋势/漏斗,收费层更多)强(热图/表单/A/B 等)部分(事件+属性)
免费/付费策略自托管任意用途免费;托管版合理用量免费(捐赠支持)自托管 CE 免费但 AGPL;云托管付费自托管免费;云托管付费MIT 完全免费;云托管付费
中文资料与生态较少较多最多(历史最久)较多

表后解读(「如果…则…」):

  • 如果你的需求就是「博客/文档站流量统计」且服务器很小(1GB 内存级别)——GoatCounter 最省心:单二进制 + SQLite,没有第二件套依赖。
  • 如果你需要「无 cookie 但报表更现代、社区更大」,且不介意跑 ClickHouse——选 Plausible(平台站内有专文:《Plausible 介绍与选型指南》)。
  • 如果团队已有一堆 PHP/MySQL 主机与运维习惯,或需要热图、A/B、表单分析等全家桶——选 Matomo,它是最接近「开源自建 GA」的选项。
  • 如果想要 MIT 宽松许可 + 现代界面 + 事件跟踪的折中,Node 技术栈顺手——选 Umami(平台站内有专文:《Umami 介绍与选型指南》)。
  • 如果你想自己读库做二次开发:GoatCounter 的 SQLite 模式让「直接用 SQL 读统计」门槛最低(本系列命令篇演示 db query)。

本系列其余三篇基于 v2.7.0 的实测文档:《Ubuntu 24.04 安装 GoatCounter 2.7.0 指南》覆盖二进制/源码两种安装方案与 systemd 托管;《GoatCounter 2.7.0 配置参数详解》逐项拆解 serve 旗标与环境变量;《GoatCounter 2.7.0 常用 CLI 命令与工具详解》覆盖 db/import/dashboard/monitor 全部子命令。

八、参考链接