前言
在信息爆炸、注意力稀缺的时代,“坚持”反而成了一种稀缺能力。我们立下无数个健身、学习或早睡的flag,却常常在几天后悄然放弃——不是缺乏意愿,而是缺少一个简单、直观、可持续的反馈机制。
GitHub的贡献热力图给了我们启发:当行为被可视化,坚持就变得可衡量、可积累、甚至可上瘾。于是,我们决定动手打造一个属于自己的打卡系统 —— ExerciseDiary。它不依赖复杂平台,不追踪隐私数据,只专注于一件事:用最简洁的技术方案,记录你每一天的微小进步。
本文将带你从零开始,用现代Web技术(前端 + 后端 + 数据存储)构建一个轻量级但功能完整的每日打卡日历。无论你是想追踪健身、阅读、编程练习,还是任何你想养成的习惯,这个项目都能成为你自律旅程中的可靠伙伴。
因为真正的自由,从来不是随心所欲,而是自我掌控。而ExerciseDiary,就是你通往这种自由的一行代码、一个像素、一次点击的起点。
1.什么是ExerciseDiary?
ExerciseDiary是一个轻量级、开源的个人习惯追踪与每日打卡系统,其核心目标是:用极简的设计 + 可视化的反馈,帮助用户建立并坚持健康的生活习惯(尤其是运动)。
它灵感来源于GitHub的贡献热力图——通过颜色深浅直观展示你每天是否完成了目标(比如“今天是否锻炼”),将抽象的“自律”转化为具体、可回溯的数据图像。久而久之,你会看到属于自己的“成就地图”,形成正向激励。
核心特点:
- 专注运动/习惯打卡:默认以“是否完成当日锻炼”为记录单位,也可轻松扩展至阅读、冥想、编程等任何日常习惯。
- 本地优先 / 隐私友好:数据可完全存储在本地(如浏览器 localStorage 或本地数据库),无需注册账号,不上传隐私。
- 可视化日历视图:采用类似 GitHub 的热力图布局,一目了然看到连续打卡天数与长期坚持轨迹。
- 技术透明、易于部署:通常基于常见 Web 技术栈(如 HTML/CSS/JavaScript + Python/Node.js + SQLite 等),代码简洁,适合开发者自行部署或二次开发。
- 开源可定制:作为个人项目,鼓励用户根据自身需求修改逻辑、UI 或集成提醒功能。
为什么叫 ExerciseDiary?
- Exercise:强调身体活动与健康生活,但不仅限于健身;
- Diary:意为“日记”,代表每日记录、持续反思与自我对话。
合起来,ExerciseDiary = 用写日记的方式,记录你每一天为更好自己所付出的行动。
2.安装前提条件
2.1ssh远程连接到飞牛
- 开启【SSH 服务】
- 使用终端(Windows PowerShell / Mac Terminal)登录:
在设置—>SSH中开启SSH服务:
2.2验证docker是否开启
使用命令:
docker -v
systemctl status -v
也可以直接在飞牛主页查看(其他机器也是这样的哦~)
3.安装ExerciseDiary
首先创建一下安装的目录并进入到该目录:
mkdir -p /docker/exer
cd /docker/exrer
下载源码,克隆官方仓库文件:
git clone https://github.com/aceberg/ExerciseDiary.git .
查看文件
ls -l Dockerfile docker-compose.yml
启动容器:
docker compose up --build -d
部署完成后,在浏览器中输入 http://飞牛IP:8851 就能看到ExerciseDiary的页面啦!
4.使用ExerciseDiary
新建训练模板
点【Add Exercise】创建项目,设置默认重量/次数:
记录体重
修改基本信息
如图所示保存,即可
将 ExerciseDiary 与 cpolar 结合,不仅能轻松部署私有化习惯打卡服务,更能通过 cpolar 强大的内网穿透能力,实现随时随地安全访问——无论你是在公司、出差还是旅行,只需一条 cpolar 隧道,就能从公网无缝连接家中运行的 ExerciseDiary 实例。无需公网 IP、不用复杂配置,cpolar 让你的自律系统真正“随行随用”,既保障数据隐私,又突破网络限制,完美诠释了“自由源于掌控”的理念。
5.安装cpolar实现随时随地开发
5.1 什么是cpolar?
cpolar是一款安全高效的内网穿透工具,无需公网IP或复杂配置,只需一条命令,即可将本地服务器、Web服务或任意端口映射到公网,让你随时随地远程访问内网应用,特别适合开发调试、远程运维和应急部署等场景。
5.2 部署cpolar
cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。
❤️以下是安装cpolar步骤:
使用一键脚本安装命令:
sudo curl https://get.cpolar.sh | sh
安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)
sudo systemctl status cpolar
Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:
打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。
6.配置公网地址
登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:
- 隧道名称:可自定义,本例使用了:exercise,注意不要与已有的隧道名称重复
- 协议:http
- 本地地址:8851
- 域名类型:随机域名
- 地区:选择China Top
创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。
访问成功。
7.保留固定公网地址
使用cpolar为其配置二级子域名(cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站),该地址为固定地址,不会随机变化。
点击左侧的预留,选择保留二级子域名,地区选择china Top,然后设置一个二级子域名名称,我使用的是exercise,大家可以自定义。填写备注信息,点击保留。
登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑。
修改隧道信息,将保留成功的二级子域名配置到隧道中
- 域名类型:选择二级子域名
- Sub Domain:填写保留成功的二级子域名
- 地区: China Top
点击更新
更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。
最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问的页面,这样一个永久不会变化的二级子域名公网网址即设置好了。
总结
在信息过载与注意力分散的时代,真正的自由并非放纵,而是源于对自我的掌控。本文以开源项目ExerciseDiary为核心,引导读者从零部署一个轻量、隐私优先的每日习惯打卡系统。通过Docker快速构建服务,结合可视化热力图日历,将抽象的“坚持”转化为可追踪、可回溯的数据轨迹,让每一次微小行动都清晰可见。
更重要的是,通过集成cpolar内网穿透工具,即使服务部署在本地 NAS 或家庭服务器上,也能安全、稳定地从公网访问,真正实现“数据留在本地,自由触手可及”。ExerciseDiary不仅是一个技术项目,更是一种生活哲学的实践——用代码搭建自律的脚手架,让自由在日复一日的坚持中生长。
自律即自由,而ExerciseDiary,是你通往这一自由的起点。
感谢您对本篇文章的喜爱,有任何问题欢迎留言交流。cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站



























