搬瓦工部署 Countly 移动应用分析平台教程
Countly 是一款专注于移动应用和 Web 应用的开源分析平台,它是 Firebase Analytics 和 Flurry 的自托管替代品。Countly 提供丰富的移动端 SDK,支持 iOS、Android、React Native、Flutter 等平台,同时也支持 Web 和桌面应用。通过自托管 Countly,你可以完全掌控用户数据,满足数据合规和隐私保护的要求。本文将介绍如何在搬瓦工 VPS 上部署 Countly。部署前请确保已安装 Docker 和 Docker Compose。
一、Countly 核心功能
- 用户分析:活跃用户、新用户、会话时长、使用频率等核心指标。
- 事件追踪:自定义事件跟踪,支持事件属性和计数。
- 崩溃报告:自动收集应用崩溃信息,包含设备和系统版本信息。
- 推送通知:集成 APNs 和 FCM,直接从控制台发送推送。
- 留存分析:按天或按周分析用户的回访率。
- 用户画像:追踪个体用户的行为轨迹和属性。
- 实时数据:实时显示当前在线用户和活动数据。
二、系统要求
- 操作系统:Ubuntu 20.04+ 或 Debian 11+。
- 内存:至少 2GB,推荐 4GB。
- 磁盘:至少 10GB 可用空间。
- Docker:已安装 Docker 和 Docker Compose。
搬瓦工 VPS 方案选择请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享 6.77% 折扣,购买入口:bwh81.net。
三、创建项目目录
mkdir -p /opt/countly && cd /opt/countly
四、编写 Docker Compose 配置
cat > /opt/countly/docker-compose.yml <<'EOF'
version: '3.8'
services:
countly-mongo:
image: mongo:6.0
restart: always
volumes:
- countly_mongo_data:/data/db
command: --wiredTigerCacheSizeGB 0.5
countly-api:
image: countly/api:latest
restart: always
environment:
COUNTLY_CONFIG__MONGODB_HOST: countly-mongo
COUNTLY_CONFIG__MONGODB_DB: countly
COUNTLY_PLUGINS: "mobile,web,desktop,plugins,density,locale,browser,sources,views,crashes,logger,systemlogs,populator,reports,crashes,star-rating,slipping-away-users,compare,server-stats,dbviewer,times-of-day,compliance-hub,alerts,onboarding,consolidate,remote-config,hooks,dashboards,data-manager,heatmaps,retention_segments"
depends_on:
- countly-mongo
countly-frontend:
image: countly/frontend:latest
restart: always
ports:
- "6001:6001"
environment:
COUNTLY_CONFIG__MONGODB_HOST: countly-mongo
COUNTLY_CONFIG__MONGODB_DB: countly
depends_on:
- countly-api
- countly-mongo
volumes:
countly_mongo_data:
EOF
五、启动服务
cd /opt/countly
docker compose up -d
等待服务启动后,访问 http://your_server_ip:6001,按照向导创建管理员账户。
六、创建应用并接入 SDK
在 Countly 控制台中创建应用,获取 App Key。
Android(Java/Kotlin)
// build.gradle 添加依赖
implementation 'ly.count.android:sdk:23.8.0'
// Application 类中初始化
CountlyConfig config = new CountlyConfig(this, "YOUR_APP_KEY", "https://your_domain.com");
config.setDeviceId(DeviceId.Type.OPEN_UDID);
Countly.sharedInstance().init(config);
iOS(Swift)
// 使用 CocoaPods: pod 'Countly'
import Countly
let config = CountlyConfig()
config.appKey = "YOUR_APP_KEY"
config.host = "https://your_domain.com"
config.features = [CLYFeature.crashReporting, CLYFeature.pushNotifications]
Countly.sharedInstance().start(with: config)
Web(JavaScript)
// npm install countly-sdk-web
import Countly from 'countly-sdk-web';
Countly.init({
app_key: 'YOUR_APP_KEY',
url: 'https://your_domain.com',
session_update: 60,
use_session_cookie: true,
});
Countly.track_sessions();
Countly.track_pageview();
Countly.track_clicks();
Countly.track_scrolls();
七、配置反向代理
cat > /etc/nginx/sites-available/countly <<'EOF'
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://127.0.0.1:6001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
EOF
ln -s /etc/nginx/sites-available/countly /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d your_domain.com
八、追踪自定义事件
// JavaScript 示例
Countly.add_event({
key: 'purchase',
count: 1,
sum: 49.99,
segmentation: {
product: 'VPS Plan',
category: 'hosting',
}
});
九、常见问题
MongoDB 内存占用高
通过 --wiredTigerCacheSizeGB 参数限制 MongoDB 的缓存大小。2GB 内存的 VPS 建议设置为 0.5GB。
SDK 数据未上报
检查 App Key 和服务器地址是否正确,确保 VPS 的端口已放行。在 Countly 控制台的日志插件中查看接收到的原始请求。
总结
Countly 是移动应用分析领域最成熟的开源方案,丰富的移动端 SDK 和内置的推送通知功能使其成为 App 开发者的首选。如果你需要更全面的产品分析能力(包括 A/B 测试和功能开关),可以参考 PostHog。选购搬瓦工 VPS 使用优惠码 NODESEEK2026 可享 6.77% 折扣。