📊 纳米分析
轻量级、可自托管的网络分析。一行JS。隐私友好。AI就绪API。
无Cookie·无GDPR横幅·无第三方服务·每天1000名访客,每年约90 MB
______________________________________________________________________
2分钟内部署
单击按钮→ 填写您的应用程序名称→ 使用您自己的私有数据库获取实时URL。 每个用户都有一个完全独立的实例。您的数据永远不会接触到其他人的服务器。
| 平台 | 成本 | 存储 | 一键部署 |
|---|---|---|---|
| 渲染 | 可用层 | 1 GB磁盘(自动) |  |
| 铁路 | 免费等级 | 数量 |  |
| Fly.io | 免费等级 | 数量 | 请参阅 Fly.io部署 在......下面 |
| 码头工人 | 自主机 | 绑定挂载 | docker compose up -d |
✅ 渲染是最简单的路径:API_TOKEN是为您自动生成的。部署后,在渲染仪表板中找到它→ 设置→ 环境变量. ⚙️ 铁路: 部署后: 1. 右击 铁路画布上的NanoAnalytics服务→ 附加音量 → 将装载路径设置为/data1. 首选 变量 → addAPI_TOKEN任意随机字符串 1. ⚠️ 严重--检查DB_PATH: 在 变量,确保DB_PATH设置为/data/analytics.db铁路有时会自动填充它/tmp/analytics.db—/tmp是短暂的,每次重新部署时都会被擦除,丢失所有数据。如果你看到/tmp/...,将其更改为/data/analytics.db并重新部署。 💡 部署按钮的工作原理: 他们从这个公共存储库中提取源代码,并将其部署为 *您自己的私有实例* 在您选择的平台上。您拥有部署、URL和数据——没有共享服务器。
______________________________________________________________________
部署后
1.将跟踪器添加到您的网站
请先粘贴此内容 `` 在您要跟踪的每个页面上:
就是这样。没有配置。会话通过以下方式跟踪 sessionStorage --不需要Cookie,也不需要同意横幅。
2.打开仪表板
访问 https://YOUR-DEPLOY-URL/dashboard
输入您的站点主机名(例如。 mysite.com)和你的 API_TOKEN → 图表和统计数据会立即出现。
______________________________________________________________________
你得到了什么
| 路线 | 描述 |
|---|---|
/dashboard | 可视化分析仪表板(Chart.js) |
/docs | 交互式Swagger API资源管理器 |
/mcp | Claude/Cursor的MCP设置指南 |
/openapi.json | 机器可读OpenAPI 3.1规范 |
/a.js | 信标脚本 |
______________________________________________________________________
API 参考
全部 /api/* 端点需要 Authorization: Bearer YOUR_API_TOKEN.
常用查询参数: ?site=example.com&start=1735689600&end=1738368000 (start 和 end 是Unix时间戳,单位为秒——可选,默认为所有时间)
| 端点 | 描述 | 额外参数 |
|---|---|---|
GET /api/pageviews | 总浏览量+独立会话 | -- |
GET /api/pages | 按浏览次数排列的首页 | &limit=10 |
GET /api/referrers | 顶级推荐域名 | &limit=10 |
GET /api/timeseries | 每日页面浏览量(UTC) | -- |
GET /api/devices | 手机/平板电脑/台式机故障 | -- |
GET /api/languages | 顶级浏览器语言 | &limit=10 |
卷曲示例
# Replace with your actual URL and token
URL="https://your-instance.railway.app"
TOKEN="your-api-token"
# Total views this month
curl -H "Authorization: Bearer $TOKEN" \
"$URL/api/pageviews?site=mysite.com&start=$(date -v-30d +%s)"
# Top 5 pages
curl -H "Authorization: Bearer $TOKEN" \
"$URL/api/pages?site=mysite.com&limit=5"______________________________________________________________________
MCP/AI代理设置
您的NanoAnalytics实例在以下位置公开了实时OpenAPI规范 /openapi.json任何使用OpenAPI的AI代理都可以用自然语言查询您的分析。
互动指南: 访问 https://YOUR-DEPLOY-URL/mcp 对于一个自动填充实例URL并为下面的每个配置块提供一键复制按钮的页面。______________________________________________________________________
克劳德桌面
先决条件: 必须安装在您的计算机上(配置使用 npx 自动运行MCP桥——除了Node.js本身,不需要手动安装)。
配置文件位置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json
打开文件并添加 nano-analytics 内部堵塞 mcpServers:
{
"mcpServers": {
"nano-analytics": {
"command": "npx",
"args": ["-y", "@ivotoby/openapi-mcp-server"],
"env": {
"API_BASE_URL": "https://YOUR-DEPLOY-URL",
"OPENAPI_SPEC_PATH": "https://YOUR-DEPLOY-URL/openapi.json",
"API_HEADERS": "Authorization:Bearer YOUR_API_TOKEN"
}
}
}
}保存文件并重新启动Claude Desktop。你现在可以问:
*“上周我在mysite.com上的主页是什么?”* *“本月移动流量是否在增长?”* *“给我看看过去30天的每日趋势。”*
______________________________________________________________________
光标
选项A——项目范围 (仅此仓库中的分析上下文):
创建 .cursor/mcp.json 在项目的根本:
{
"mcpServers": {
"nano-analytics": {
"url": "https://YOUR-DEPLOY-URL/openapi.json",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}选项B——全球 (在所有Cursor工作区中都可用):
首选 光标设置→ MCP → 添加服务器 并粘贴:
{
"nano-analytics": {
"url": "https://YOUR-DEPLOY-URL/openapi.json",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}______________________________________________________________________
风帆冲浪(Codeium)
首选 风帆设置→ 级联→ MCP服务器→ Add:
{
"mcpServers": {
"nano-analytics": {
"serverUrl": "https://YOUR-DEPLOY-URL/openapi.json",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}______________________________________________________________________
GPT操作(聊天GPT/自定义GPT)
- 首选 我的GPTs→ 创建→ 配置→ 添加操作
- 集 认证 → API密钥→ 头球
Authorization,价值:Bearer YOUR_API_TOKEN - 从URL导入架构:
https://YOUR-DEPLOY-URL/openapi.json - 保存--您的GPT现在可以回答分析问题
______________________________________________________________________
任何其他兼容OpenAPI的客户端
Spec URL: https://YOUR-DEPLOY-URL/openapi.json
Auth type: Bearer Token
Token: YOUR_API_TOKEN适用于LangChain工具、LlamaIdex、n8n AI节点、Make.com HTTP模块或任何接受OpenAPI 3.1规范的工具。
______________________________________________________________________
您的代理可以回答的示例查询
| 问题 | 使用的端点 |
|---|---|
| “这周我接待了多少访客?” | /api/pageviews |
| “我的前五页是什么?” | /api/pages?limit=5 |
| “我的交通从哪里来?” | /api/referrers |
| “流量是增长还是下降?” | /api/timeseries |
| “我的手机和台式机的比例是多少?” | /api/devices |
| “我的访客使用什么语言?” | /api/languages |
______________________________________________________________________
电报和Discord机器人
机器人程序查询您的NanoAnalytics API并用格式化的统计数据进行回复。建议的方法是将每个机器人部署为 独立轻量级服务 --它自己的私人回购,自己的铁路服务。无需卷(机器人程序在磁盘上不存储任何内容)。
______________________________________________________________________
推荐:作为独立的铁路服务部署
步骤1——创建机器人仓库
使用以下4个文件创建一个新的私有GitHub存储库:
bot.py --复制自 bots/telegram_bot.py (电报)或 bots/discord_bot.py (不和谐)
requirements.txt
# Telegram
python-telegram-bot==21.*
httpx>=0.27
# Discord (use this instead)
# discord.py>=2.4
# httpx>=0.27Dockerfile
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY bot.py .
CMD ["python", "bot.py"].env.example
TELEGRAM_BOT_TOKEN=your-token-from-botfather
ANALYTICS_URL=https://your-nanoanalytics-instance.up.railway.app
ANALYTICS_API_TOKEN=your-api-token
ANALYTICS_SITE=mysite.com第二步——在铁路上部署
- 铁路→ 新服务 → GitHub → 选择您的bot仓库
- 首选 变量 → 添加以下4个变量
.env.example具有真实价值 - 无需卷——机器人没有磁盘存储
Railway将构建Docker镜像,并保持机器人全天候运行。
______________________________________________________________________
电报设置
- 消息 @植物学家 在Telegram上→
/newbot→ 复制令牌→ 使用它作为TELEGRAM_BOT_TOKEN - 在Telegram中打开您的机器人并发送
/start
命令: /stats /pages /referrers /countries /devices /trend /languages
______________________________________________________________________
Discord设置
- 首选 confirm.com/developers/applications → 新应用程序 → 机器人
- 启用 消息内容意图 在特权网关权限下
- 复制机器人令牌→ 使用它作为
DISCORD_BOT_TOKEN - 通过以下方式邀请机器人到您的服务器 发送消息 + 读取消息 权限
命令: !stats !pages !referrers !devices !trend !languages
______________________________________________________________________
快速本地测试(无需托管)
直接在您的终端中运行——只要窗口打开,机器人就会保持活动状态:
pip install python-telegram-bot httpx # or: discord.py httpx
TELEGRAM_BOT_TOKEN="..." \
ANALYTICS_URL="https://your-instance.up.railway.app" \
ANALYTICS_API_TOKEN="..." \
ANALYTICS_SITE="mysite.com" \
python bots/telegram_bot.py______________________________________________________________________
码头工人
# Clone and run
git clone https://github.com/callmefredcom/NanoAnalytics.git
cd NanoAnalytics
# Set your token
echo "API_TOKEN=your-secret-token" > .env
# Start (data persists in a named volume)
docker compose up -d
# View logs
docker compose logs -f
# Stop
docker compose down您的实例位于 http://localhost:8000
______________________________________________________________________
pip(本地/VPS)
pip install nano-analytics
# Run (adjust DB_PATH to a writable location)
API_TOKEN=secret DB_PATH=/tmp/analytics.db \
flask --app "nano_analytics:create_app()" run --host 0.0.0.0对于使用gunicorn的生产:
API_TOKEN=secret DB_PATH=/data/analytics.db \
gunicorn wsgi:app --bind 0.0.0.0:8000 --workers 2______________________________________________________________________
Fly.io手动部署
# Install flyctl: https://fly.io/docs/hands-on/install-flyctl/
fly auth login
# Create the app and volume
fly apps create nano-analytics
fly volumes create analytics_data --region iad --size 1
# Set your token
fly secrets set API_TOKEN=your-secret-token
fly secrets set BASE_URL=https://nano-analytics.fly.dev
# Deploy
fly deploy______________________________________________________________________
存储规模
SQLite位于持久卷上。每个命中行约为200字节。
| 每日访客 | 1年 |
|---|---|
| 1000 | ~90 MB |
| 10000 | ~900 MB |
| 100000 | ~9 GB |
当访问者/天>50000时,考虑添加一个定期作业,将旧行聚合到每日摘要中。
______________________________________________________________________
安全模型
- 没有设置页面。 你的
API_TOKEN位于托管平台自己的登录之后。在“环境变量”面板中找到它。 - 仪表板是一个静态的HTML shell——没有令牌就不会提供敏感数据。
- 灯塔(
/hit,/a.js)已公开并设置Access-Control-Allow-Origin: *因此,它适用于任何领域。 - 所有统计端点都需要
Authorization: Bearer YOUR_TOKEN.
______________________________________________________________________
许可证
麻省理工学院
