用于统计编码时长的Wakapi

本文应网友 suka 的要求折腾,但是否符合他得要求就不得而知了,因为老苏不是程序员,没有这方面的需求;

什么是 Wakatime ?

WakaTime 是一个可以统计你在不同语言、项目上写代码时长的工具。 它支持多种 IDE、编辑器。 它只在你敲键盘时统计,因此得到的是写代码的时间。 另外它会根据你打开的文件夹来判断你在哪个项目上。

什么是 Wakapi ?

Wakapi 是一个极简主义、自托管的 WakaTime 兼容后端,可帮助您跟踪使用不同编程语言等在不同项目上编码所花费的时间,用于编码统计。

用于统计编码时长的Wakapi_第1张图片

安装

在群晖上以 Docker 方式安装。

建数据库

老苏用了群晖自带的 MariaDB 10 数据库。

用于统计编码时长的Wakapi_第2张图片

phpMyAdmin 中创建名为 wakapi 的空数据库。

为便于说明,假设数据库密码为 123456

用于统计编码时长的Wakapi_第3张图片

所以根据上面的设置,最后得到的数据库相关的参数如下:

  • 数据库主机:192.168.0.197,与群晖主机 IP 一致;
  • 数据库端口:3307
  • 数据库用户:wakapi
  • 数据库密码:123456
  • 数据库库名:wakapi,因为勾选了与用户同名;

镜像下载

官方没有在 docker hub 上发布镜像,而是发表到了 ghcr.io

老苏折腾时,latest 对应的版本为 2.8.1

用于统计编码时长的Wakapi_第4张图片

SSH 客户端登录到群晖后,执行下面的命令

# 拉取镜像
docker pull ghcr.io/muety/wakapi:latest

如果没有科学上网,很可能会拉不动,可以试试 docker 代理网站:https://dockerproxy.com/,但是会多几个步骤

# 如果拉不动的话加个代理
docker pull ghcr.dockerproxy.com/muety/wakapi:latest

# 重命名镜像(如果是通过代理下载的)
docker tag ghcr.dockerproxy.com/muety/wakapi:latest ghcr.io/muety/wakapi:latest

# 删除代理镜像(如果是通过代理下载的)
docker rmi ghcr.dockerproxy.com/muety/wakapi:latest

下载完成后,可以在 映像 中找到

在这里插入图片描述

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 新建文件夹 wakapi 
mkdir -p /volume1/docker/wakapi/data

# 进入 wakapi 目录
cd /volume1/docker/wakapi

# 运行容器
docker run -d \
   --restart unless-stopped \
   --name wakapi \
   -p 3047:3000 \
   -v $(pwd)/data:/data \
   -e WAKAPI_PASSWORD_SALT=6EbmsMZ2keIZR0F0Syg7Y4TMxflr5Dmd \
   -e WAKAPI_DB_TYPE=mysql \
   -e WAKAPI_DB_HOST=192.168.0.197 \
   -e WAKAPI_DB_PORT=3307 \
   -e WAKAPI_DB_NAME=wakapi \
   -e WAKAPI_DB_USER=wakapi \
   -e WAKAPI_DB_PASSWORD=123456 \
   -e ENVIRONMENT=prod \
   ghcr.io/muety/wakapi:latest
  • WAKAPI_PASSWORD_SALT:密码;
  • WAKAPI_DB_TYPE:数据库类型;
  • WAKAPI_DB_HOST:数据库主机;
  • WAKAPI_DB_PORT:数据库端口;
  • WAKAPI_DB_NAME:数据库库名;
  • WAKAPI_DB_USER:数据库用户名;
  • WAKAPI_DB_PASSWORD:数据库密码;
  • ENVIRONMENT:使用开发设置还是生产设置,设置为 prod 表示为生产设置;

更多的环境变量,请参考官方文档:https://github.com/muety/wakapi/blob/master/README.md#-configuration-options

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: '3.7'

services:
  wakapi:
    image: ghcr.io/muety/wakapi:latest
    container_name: wakapi
    restart: always
    ports:
      - 3047:3000
    volumes:
      - ./data:/data
    environment:
      # See README.md and config.default.yml for all config options
      WAKAPI_DB_TYPE: "mysql"
      WAKAPI_DB_NAME: "wakapi"
      WAKAPI_DB_USER: "wakapi"
      WAKAPI_DB_PASSWORD: "123456"
      WAKAPI_DB_HOST: "192.168.0.197"
      WAKAPI_DB_PORT: "3307"
      ENVIRONMENT: "prod"
      WAKAPI_PASSWORD_SALT: "6EbmsMZ2keIZR0F0Syg7Y4TMxflr5Dmd"

然后执行下面的命令

# 新建文件夹 wakapi 
mkdir -p /volume1/docker/wakapi/data

# 进入 wakapi 目录
cd /volume1/docker/wakapi

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:3047 就能看到主界面

用于统计编码时长的Wakapi_第5张图片

点右上角的 login,第一次需要注册账号

用于统计编码时长的Wakapi_第6张图片

注册成功后

用于统计编码时长的Wakapi_第7张图片

再次 login,登录成功后的主界面

用于统计编码时长的Wakapi_第8张图片

可以看到设置说明,尤其是下面这段代码后面可能会用到

跟客户端数据采集的方式有关,老苏后来用的是通过 Wakatime 后台采集的,所以并没用上;

[settings]
api_url = http://192.168.0.197:3047/api  
api_key = 93a3577e-2330-4ae9-a86c-a93fbb741764

其中:

api_url :是指 API 服务的地址;
api_key :是指访问 Wakapi 服务的 API Key,之所以要强调是因为我们还会用到 Wakatime 服务的 API Key

注册 Wakatime

打开 https://wakatime.com/signup 注册账号

用于统计编码时长的Wakapi_第9张图片

登录成功后,可以在 Setting --> Account --> API key 中找到 Wakatime API Key

用于统计编码时长的Wakapi_第10张图片

如果你找不到,也可以在浏览器中直接访问 https://wakatime.com/api-key

用于统计编码时长的Wakapi_第11张图片

安装插件

为自己的 IDE 安装插件,插件的下载地址:https://wakatime.com/plugins

用于统计编码时长的Wakapi_第12张图片

虽然老苏不写代码,但是这些客户端中,也会用到 ChromeObsidianVS CodeWord

考虑到老苏用的最多的是 Obsidian,所以就试试 OB 的插件,点击 OB 的图标后,会有详解的教程

用于统计编码时长的Wakapi_第13张图片

OB 插件市场中搜索 wakatime 并安装

用于统计编码时长的Wakapi_第14张图片

还需要启用

用于统计编码时长的Wakapi_第15张图片

输入 API key,这里是 Wakatime API Key

用于统计编码时长的Wakapi_第16张图片

因为 OB 插件没有设置 URL 的地方,所以数据默认是传到 Wakatime 网站的

所有 WakaTime 文本编辑器插件,都会使用 WakaTime cli ,360 可能会阻止,添加信任就可以

当插件正常工作时,Wakatime 网页上会有插件的工作状态

用于统计编码时长的Wakapi_第17张图片

能监测到插件的平台和版本

用于统计编码时长的Wakapi_第18张图片

接下来我们还要通过 Wakapi 的整合功能,读取 Wakatime 的数据

导入数据

有两种方法拿到前端插件采集的数据:

1、第一种:可以通过在客户端侧安装代理来转发数据到 Wakapi,官方提供了安装设置的说明:https://github.com/muety/wakapi/wiki/Advanced-Setup:-Client-side-proxy

2、从 Wakatime 导入数据到 Wakapi

老苏测试了第二种方法;

回到 Wakapi 的后台,Settings --> Integrations

用于统计编码时长的Wakapi_第19张图片

Connect,如果设置没问题的话,就可以 Import Data

用于统计编码时长的Wakapi_第20张图片

导入数据不可撤销的

用于统计编码时长的Wakapi_第21张图片

一开始是没有数据的

用于统计编码时长的Wakapi_第22张图片

需要时间的积累,第二天WakaTime 的面板

用于统计编码时长的Wakapi_第23张图片

Wakapi 的面板

感觉和 WakaTime 并不同步,但我也说不上来,或者只是统计口径不一样?

用于统计编码时长的Wakapi_第24张图片

小结

如果仅限于显示 WakaTime 的数据,显然意义不大,Wakapi 具备和第三方应用,比如 PrometheusGrafana 的整合能力,这可能才是这个项目的意义所在吧

用于统计编码时长的Wakapi_第25张图片

参考文档

muety/wakapi: A minimalist, self-hosted WakaTime-compatible backend for coding statistics
地址:https://github.com/muety/wakapi

Wakapi – Coding Statistics
地址:https://wakapi.dev/

WakaTime
地址:https://github.com/wakatime

WakaTime - Dashboards for developers
地址:https://wakatime.com/

你可能感兴趣的:(群晖,docker,时间管理)