
n1try/wakapiWakapi 是一个极简的自托管后端服务,兼容 WakaTime 客户端,用于收集、存储和展示代码编写时间统计数据。它由开发者为开发者打造,完全开源免费,支持多种数据库,并提供 REST API 和统计徽章功能,适合需要自主掌控代码统计数据的个人或团队使用。
访问 wakapi.dev 注册账号,直接使用免费托管服务。注意:官方不保证数据持久性,可能存在数据丢失风险。
bash# 创建持久卷以保存数据 $ docker volume create wakapi-data # 启动容器 $ docker run -d \ -p 3000:3000 \ -e "WAKAPI_PASSWORD_SALT=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)" \ -v wakapi-data:/data \ --name wakapi n1try/wakapi
说明:默认使用SQLite数据库。如需使用MySQL或PostgreSQL,需通过环境变量或配置文件指定数据库参数(详见配置选项)。
bash# 下载并解压发布包 $ wget [***] $ unzip wakapi_linux_amd64.zip # (可选)修改配置文件 $ vi config.yml # 启动服务 $ ./wakapi
前置依赖:
$GOPATH)dnf install @development-toolsapt install build-essential编译与运行:
bash# 复制并修改配置文件 $ cp config.default.yml config.yml $ vi config.yml # 安装打包工具 $ export GO111MODULE=on $ go get github.com/markbates/pkger/cmd/pkger # 构建可执行文件 $ go generate $ go build -o wakapi # 启动服务(生产环境建议设置ENV=production) $ ./wakapi
~/.wakatime.cfg 文件:ini[settings] # Wakapi服务器URL(自托管时填写http://localhost:3000/api/heartbeat,官方服务为https://wakapi.dev/api/heartbeat) api_url = http://localhost:3000/api/heartbeat # 从Wakapi网页界面获取的API密钥 api_key = 406fe41f-6d69-4183-a4cc-121e0c524c2b
可通过配置文件(默认config.yml,可通过-c参数指定)或环境变量配置,以下为主要选项:
| YAML键 | 环境变量 | 默认值 | 描述 |
|---|---|---|---|
env | ENVIRONMENT | dev | 运行环境(开发环境dev或生产环境production) |
server.port | WAKAPI_PORT | 3000 | 服务监听端口 |
server.listen_ipv4 | WAKAPI_LISTEN_IPV4 | 127.0.0.1 | IPv4监听地址(公开访问需设为0.0.0.0) |
security.password_salt | WAKAPI_PASSWORD_SALT | - | 用于密码哈希的盐值(建议使用随机字符串) |
security.insecure_cookies | WAKAPI_INSECURE_COOKIES | false | 是否允许HTTP协议下的Cookie(生产环境建议设为false) |
db.dialect | WAKAPI_DB_TYPE | sqlite3 | 数据库类型(支持sqlite3、mysql、postgres、cockroach) |
db.name | WAKAPI_DB_NAME | wakapi_db.db | 数据库名称(SQLite为文件路径) |
db.host | WAKAPI_DB_HOST | - | 数据库主机(MySQL/PostgreSQL时必填) |
db.port | WAKAPI_DB_PORT | - | 数据库端口(MySQL/PostgreSQL时必填) |
db.ssl配置)POST /api/heartbeat:客户端发送心跳数据GET /api/summary?interval={today|day|week|month|year|any}:获取统计摘要GET /api/compat/wakatime/v1/users/current/all_time_since_today:兼容WakaTime的总时间统计APIGET /api/compat/wakatime/v1/users/current/summaries:兼容WakaTime的摘要统计APIGET /api/health:服务健康检查可使用第三方工具wakatime_exporter将Wakapi数据导出到Prometheus,配置示例:
bash# 设置Wakapi实例地址和API密钥 export WAKA_SCRAPE_URI="[***]" export WAKA_API_KEY="your-wakapi-api-key"
ENV=production以提升性能和安全性,同时确保server.listen_ipv4设为0.0.0.0(如需公开访问)Wakapi通过分析客户端发送的"心跳"数据统计编码时间。与WakaTime不同,Wakapi对长时间间隔后的心跳数据自动添加2分钟填充时间,因此统计结果可能略有差异。
客户端会本地缓存心跳数据,待重新联网后批量发送至服务器。
支持所有WakaTime兼容的客户端,包括VS Code、IntelliJ IDEA、PyCharm、Vim等(详见WakaTime插件列表)。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务