Liwan 1.8 介绍与选型指南

Liwan 自托管隐私优先 Web 分析全景介绍:Rust 单二进制架构、隐私采集白名单、与 Plausible/Umami/Offen/Shynet 的量化选型对比与适用场景建议。

LiwanLiwanRust隐私安全2026/10/30

Liwan 1.8 介绍与选型指南

在自建网站的流量统计这一细分领域里,绝大多数自托管方案都会把「部署复杂度」转嫁给使用者:要么需要一个独立的 PostgreSQL,要么再配一个 ClickHouse 或 Redis。Liwan(官网 liwan.dev)是这一格局里少见的例外——它用 Rust 写成,把 Web 服务、看板前端、事件入库、报表查询全部塞进一个静态链接的单二进制文件里,数据库直接内嵌,官方口号是 "Self-hosted, privacy-first web analytics"(自托管、隐私优先的 Web 分析)。本文基于 2026-10-30 从 liwan.dev 官网、GitHub Releases 订阅源(releases.atom)与 shields.io 徽章接口获取的公开资料,对 Liwan 的定位、特性、隐私模型做一次完整梳理,并与 Plausible、Umami、Offen、Shynet 四款同类自托管分析工具做量化对比,帮助你判断它是否适合你的服务器。

💡 技术拓展:单二进制(single binary) 与传统「应用 + 独立数据库」两种部署形态的差异值得展开。单二进制指程序把 HTTP 服务、静态资源、存储引擎全部编译进一个可执行文件,升级时只需替换一个文件;传统形态则要求先维护数据库服务再做应用部署,优点是数据库可独立扩容、多应用共享。Liwan、Offen 属于前者,Plausible(依赖 PostgreSQL + ClickHouse)、Shynet(依赖 PostgreSQL)属于后者,Umami 介于两者之间(Node 应用 + 独立关系库)。选型的第一分水岭往往就在这里:你希望「少管一个服务」还是「数据库要能横向扩展」。

一、项目概况与版本信息

1.1 基本信息一览

以下信息均从公开渠道核实(来源与查询日期标注在每条之后):

项目内容来源(查询日期 2026-10-30)
产品定位自托管、隐私优先的 Web 分析liwan.dev 首页 meta description
开发语言Rust(服务端)+ JavaScript(前端与追踪脚本)liwan.dev 首页、官方文档
开源许可Apache License 2.0liwan.dev 首页 tagline "Fully open source, licensed under the Apache License 2.0"
源码仓库github.com/explodingcamera/liwanliwan.dev 首页页脚 GitHub 链接
当前版本v1.8.2(2026-10-29 发布)GitHub Releases 订阅源 releases.atom
社区热度GitHub Stars 219shields.io 星数徽章接口
作者Henry Gressmann(个人开源项目)liwan.dev 页脚 imprint 指向 henrygressmann.de
默认端口9042liwan.dev 首页 Docker 示例命令

需要说明的是:Liwan 是个人维护的开源项目,社区规模(219 Stars)远小于 Plausible、Umami 这类明星项目,这一点在选型时应纳入考量——它换来的是极高的代码可读性与极简的部署面。

1.2 版本节奏

从 releases.atom 的发布记录看,Liwan 的迭代相当活跃(查询日期 2026-10-30):

  • v1.8.2(2026-10-29):修复 MaxMind 数据库自动更新在 metadata 含数字时间戳时失败的问题;
  • v1.8.1(2026-10-23):更新 TLS 根证书与 zip 依赖的安全维护版本;
  • v1.8.0(2026-10-17):一个大版本,包含两项破坏性变更(私有项目的用户级直授权被团队机制取代;追踪器 npm 包从 liwan-tracker 更名为 @liwan.dev/tracker),并新增自定义事件、自定义属性、带鉴权的批量事件摄入端点、API Key 管理界面、可配置会话时长、看板图小时/天/周/月四种聚合粒度、拖拽选择自定义日期区间等大量功能。

一个以天为单位滚动发版、并且敢在 minor 版本里做破坏性重构的项目,说明它处于快速成长期而非维护期。

二、核心特性

2.1 官方宣传的六大特性(liwan.dev 首页)

  1. 看懂你的流量:实时更新的看板,默认过滤机器人流量,展示热门页面、流量来源与趋势变化;
  2. 易于自托管:以单二进制或 Docker 容器运行,看板与数据库内建,无需额外服务;
  3. 隐私优先:不使用追踪 Cookie,不做跨站追踪,不记录原始 IP 地址,数据全部留在你自己的服务器上;
  4. 按需采集:位置精度(国家+城市/仅国家/不采集)、广告活动归因(UTM)、访客分组、会话指标(跳出率、停留时长、入口/出口页)均可独立开关;
  5. 轻量埋点:一行 <script> 标签接入浏览器端追踪,也可以完全由服务端发事件;适配任意框架或 CMS;
  6. 单点登录:支持 Google Workspace、Microsoft Entra ID 以及 Keycloak、Dex 等任意 OpenID Connect 提供商管理账号。

2.2 隐私模型(来源:liwan.dev/collected-data/)

Liwan 的隐私设计有明确的「白名单」气质,官网专门用一页说明它采集什么、不采集什么:

  • 浏览器端发送:页面 URL(剔除片段与非归因参数)、来源站 Referrer、UTM 归因参数、粗粒度屏幕宽度分档(如 SM/MD/XL)、横竖屏、事件名(默认 pageview)、可选的自定义属性、页面退出信号;
  • 服务端推导:访客分组 ID、浏览器/平台家族(不保存完整版本号)、设备类型、国家与城市(来自 MaxMind 或可信代理头)、会话时长;
  • 明确不存:原始 IP 地址、访客追踪 Cookie、跨站访客标识、完整 Referrer 路径、普通页面的查询串与片段。

其中访客分组提供了 5 种模式,这是同类产品里少见的「把隐私粒度做成开关」的设计(来源:liwan.dev/collected-data/):

模式行为
Accurate(精确)对完整 IP + User-Agent + 轮转盐值 + 实体 ID 做哈希,原始输入不落盘
Random per request(每请求随机)每个事件生成互不相关的访客 ID,完全不可跨请求关联
Network standard(网络-标准)哈希 IPv4 /24 或 IPv6 /56 网络前缀
Network balanced(网络-均衡)哈希 IPv4 /28 或 IPv6 /64 网络前缀
Network accurate(网络-精确)哈希完整 IP(不含 User-Agent)

分组盐值每天在配置的时刻(默认凌晨 4 点)轮转一次,访客分组因此不会跨天持久化。

💡 技术拓展:访客去重的三种流派。第一种是存明文 IP(传统日志分析,如早期 AWStats),法律风险最高;第二种是存 IP 的单向哈希(Shynet 采用),库泄露时仍可被彩虹表式穷举攻击;第三种是 Liwan/Plausible 这类「盐值哈希 + 定期轮转」,连「同一访客跨天是否回访」都无法回答,以此换取更强的匿名性。代价是跳出率、回访率等指标天然只能做近似统计,这是所有隐私优先产品的共同取舍,不是实现缺陷。

2.3 v1.8 带来的分析能力扩展(来源:releases.atom v1.8.0 条目)

  • 自定义事件(custom events)与自定义属性(custom properties),属性支持字符串/数字/布尔,单事件最多 30 个属性、键 64 字符、值 255 字符(来源:liwan.dev/guides/tracking/);
  • 带鉴权的批量事件摄入端点,配合 v1.8 新增的 API Key 管理界面,可以把服务端日志、后端业务事件灌入 Liwan;
  • 看板图支持小时/天/周/月四种区间粒度与拖拽自选日期;
  • 跳出率与平均时长支持配置最小样本数([limits] 段),避免低样本噪声。

三、部署形态与技术栈

3.1 两种官方运行形态

liwan.dev 首页给出的两条路线:

  1. 单二进制:从 GitHub Releases 下载对应平台的预编译包。官方提供 Linux x86_64、Linux ARM64 与 macOS ARM64 三种构建,Linux 版用 musl libc 静态链接,「应该能在大多数 Linux 发行版上直接运行」(来源:liwan.dev/install/binary/);
  2. Docker 镜像:官方镜像 ghcr.io/explodingcamera/liwan:1.8,首页给出的示例命令为 docker run -p 9042:9042 -v liwan-data:/data -e LIWAN_BASE_URL=http://localhost:9042 ghcr.io/explodingcamera/liwan:1.8(来源:liwan.dev 首页,2026-10-30)。

3.2 内嵌存储

Liwan 的事件数据由内嵌的 DuckDB 列式数据库管理,配置面提供 duckdb.memory_limit 与 duckdb.threads 两个资源旋钮(来源:liwan.dev/reference/configuration/);账号、项目、实体等元数据则存储在独立的 SQLite 文件中。两者都落在同一个数据目录里,备份就是备份目录。官方还提供了 DuckDB 调优指引页(liwan.dev/guides/duckdb/)。

💡 技术拓展:为什么 Web 分析场景偏爱 DuckDB 这样的列式 OLAP 引擎。流量报表的典型查询是「按天聚合、按维度切片、全表扫描」,这类负载下列式存储只读取涉及的列,压缩率高、扫描快;而行式 OLTP 库(MySQL/PostgreSQL)在这种大范围聚合上容易吃满 IO。Plausible 直接采用 ClickHouse,Liwan 内嵌 DuckDB,思路同源:把 OLAP 引擎做进进程里,省掉独立数据库服务。DuckDB 与 ClickHouse 的差异主要在并发模型与集群能力——前者面向嵌入式单机场景,后者面向分布式集群,对自托管中小流量站点而言前者反而更省心。

3.3 生态与集成

  • 追踪脚本由 Liwan 服务端自身托管(/script.js),版本永远与服务器一致;也可改用 npm 包 @liwan.dev/tracker 发自定义事件(来源:liwan.dev/guides/tracking/);
  • 官方文档提供反向代理(Caddy 示例)、GeoIP(MaxMind 接入)、Adblocker 场景、Cookie 横幅、systemd/OpenRC 服务化等指南页;
  • 数据可通过官方 DuckDB 指南直接用 SQL 对事件库做深度分析(liwan.dev/guides/duckdb/)。

四、量化选型对比

下表对五款可自托管的隐私向 Web 分析工具做横向对比。Liwan 列的数据来自 liwan.dev 官网与 GitHub Releases 订阅源(查询日期 2026-10-30);其余四款来自各自官网与 GitHub 仓库的公开资料(查询日期 2026-10-30)。个别定性描述以官网自述为准,请在采购决策前以官方文档复核。

维度LiwanPlausible CEUmamiOffenShynet
开发语言RustElixir(+ ClojureScript)TypeScript / Node.js(Next.js)GoPython(Django)
开源许可Apache-2.0AGPL-3.0(CE 版)MITApache-2.0Apache-2.0
部署形态单二进制 / 官方镜像Docker Compose 为主Node 服务 / Docker单二进制 / DockerDjango 应用 / Docker
外部依赖无(内嵌 DuckDB + SQLite)PostgreSQL + ClickHousePostgreSQL 或 MySQL无(内嵌存储)PostgreSQL + Redis
存储引擎事件入列式 DuckDB,元数据入 SQLiteClickHouse(事件)+ PostgreSQL(元数据)关系数据库内嵌键值库关系数据库
隐私模型不存原始 IP;5 档访客分组哈希;盐值每日轮转;采集项逐项可关不用 Cookie,IP 哈希后存储不用 Cookie,可配 IP 哈希终端用户可查看并删除自己的数据,双重 opt-in不用 Cookie,IP 哈希存储
自定义事件v1.8 起支持(含属性与批量摄入)支持(部分为云版功能)支持支持支持(custom goals)
单点登录Google Workspace / Entra ID / OIDC商业云版支持,CE 版有限不内置不内置不内置
官方镜像ghcr.io/explodingcamera/liwanplausible/analyticsumami/umamioffen/offenmilesmcc/shynet
运维面一个二进制 + 一个数据目录多容器栈Node + 独立数据库单二进制 + 数据目录Django + 数据库 + Redis

从表中可以读出清晰的三档:

  1. 零外部依赖档:Liwan、Offen——单文件起步,适合个人站长与小型团队;
  2. 轻依赖档:Umami——一个 Node 进程加一个关系库,适合已有 MySQL/PostgreSQL 运维经验的团队;
  3. 重依赖档:Plausible CE、Shynet——能力更全面或历史更久,但要用多容器/多服务栈换取。

五、适用场景与选型建议

5.1 Liwan 的甜点区

  • 个人博客、作品集、中小型产品官网:单二进制 + 内嵌存储意味着从「下载」到「看到第一个 pageview」可能只需要十分钟,且日常维护只有「升级一个文件」一件事;
  • 对隐私合规有硬要求的站点:不存原始 IP、不使用 Cookie、采集项可逐项关闭并支持对历史数据做裁剪(官方提供 prune 工具),这些设计让隐私声明非常容易写;
  • 需要把分析数据当数据库用的团队:DuckDB 文件可以直接用 SQL 查询,官方还给了调优指南;
  • 追求部署极简的服务器:无外部数据库意味着更少的攻击面、更少的备份对象、更少的版本矩阵。

5.2 何时不要选 Liwan

  • 需要大规模团队协作与成熟的权限体系:Liwan 的团队功能在 1.8 才完成从「用户直授」到「团队制」的迁移,成熟度不及 Plausible 的商业版;
  • 需要超大规模流量与集群扩展:单机 DuckDB 没有横向扩展故事,亿级事件量应考虑 ClickHouse 系方案;
  • 需要官方 SLA 或托管服务:Liwan 没有商业托管,出问题要靠社区(当前主要是作者本人)响应;
  • 项目成熟度敏感的场景:219 Stars 的个人项目,选型时应做好「跟随升级、偶发破坏性变更」的心理准备(v1.8.0 即含两处 breaking change)。

5.3 与本站其他方案的关系

如果你希望做更宽的横向对比,本站还有以下同类方案的完整系列,建议配合阅读:

而如果你已经决定使用 Liwan,建议按这个顺序继续:先看《Ubuntu 22.04 安装 Liwan 1.8 指南》把服务跑起来,再用《Liwan 1.8 配置参数详解》按自己的隐私与性能要求调参,日常维护与故障处理则交给《Liwan 1.8 运维实操指南》。

六、信息来源清单

本文全部事实性表述的来源与查询时间(2026-10-30,Asia/Shanghai):

  1. liwan.dev 首页(产品定位、六大特性、Apache-2.0 许可、Docker 示例命令、SSO 支持、页脚仓库链接);
  2. github.com/explodingcamera/liwan/releases.atom(v1.8.0/v1.8.1/v1.8.2 发布说明与日期);
  3. shields.io GitHub Stars 徽章接口(Stars 219);
  4. liwan.dev/install/binary/(平台支持与 musl 静态链接说明);
  5. liwan.dev/reference/configuration/(配置项、默认值、DuckDB 段);
  6. liwan.dev/collected-data/(采集白名单、访客分组五模式、不存储清单);
  7. liwan.dev/guides/tracking/(追踪脚本、npm 包、属性上限);
  8. Plausible、Umami、Offen、Shynet 各官网与 GitHub 仓库公开资料(对比表相应行)。