💪 Docker部署私有健身追踪器Lyftr,训练+饮食+体重全搞定!
嗨,大家好呀,这里是 「青柠炸机店」!
今天给大家带来一款让我眼前一亮的自托管健身追踪神器——Lyftr,一个集训练记录、营养追踪、体重管理于一体的开源健身App,Docker一键部署,手机端体验拉满,关键是——完全免费,数据全在自己手里!
🎣 前言:为什么要自己搞一个健身App?
你有没有想过,你的健身数据到底在谁手里?
都2026年了,市面上的健身记录App基本就两条路:要么交订阅费,要么忍广告。花钱买了会员吧,想导出自己的训练记录?不好意思,「导出数据是高级功能」——你的数据,你做不了主。不花钱的免费版?要么功能阉割,要么隔三差五弹个升级提醒,练个胸都能被打断思路。
更让人头疼的是,大部分App的数据全存在别人的服务器上。哪天这公司倒了、改了规则、或者你单纯不想用了,几年的训练记录说没就没。还有些App纯本地存储,换个手机数据就清零了——那我记个什么劲?
我一直在找一个能自己部署、自己掌控数据、颜值还过得去的健身记录工具。试过几个开源方案,要么界面像上个世纪的产品(真的会劝退 😭),要么部署流程劝退新手,要么功能太单一只能记个重量。
直到我遇到了 Lyftr

一句话总结:免费、好看、轻量、数据完全自己掌控的私有健身追踪器,树莓派都能跑。
💡 本文约 3500 字,建议先收藏再看(反正你们收藏了也不看 😂),家里有 NAS 或者小主机的兄弟直接上车!
🔥 Lyftr 到底有多能打?
✅ Docker 一键部署:前后端分离架构,docker compose up -d 一行搞定
✅ 训练记录 + 训练计划:800+ 动作库内置,支持自定义训练计划,还有专门的「健身房模式」
✅ 营养追踪:卡路里、蛋白质、碳水、脂肪全能记,支持 Open Food Facts 食品搜索和条码扫描
✅ 体重追踪:趋势图 + 30天分析,支持 lbs/kg 切换
✅ Dashboard 仪表盘:训练量趋势、一致性热力图、营养概览,一眼看清训练状态
✅ SQLite 单文件存储:备份就是复制一个文件,没有任何借口不备份
✅ 暗色主题:深色系 UI + 青色/紫色点缀,说实话颜值在自部署圈子里算第一梯队了
✅ 移动端适配:底部导航栏 + 大按钮设计,手机上操作丝滑得像原生App
✅ PWA 支持(Roadmap):未来可以像原生App一样安装到手机桌面
❌ 不支持中文:界面全英文,动作库也是英文名(Bench Press、Squat这些),看得懂英文问题不大,但确实不够友好
❌ 没有云同步:纯私有部署(但这不正是我们要的吗?)
❌ 目前还是 Beta 阶段:v0.1.0-beta.1 刚发布,有些粗糙的地方,但核心功能已经很能打了
🛠 手把手部署实战
以 绿联 DXP4800 Plus(或任何能跑Docker的设备)为例,整个过程大概5分钟。
Step 1: 创建项目
进入 NAS 首页,找到 Docker,点击 项目 - 创建 按钮。

Step 2: 复制 Docker Compose 文件
把下面的配置丢进去就行:
services: backend: image: cwlumm/lyftr-backend:latest build: ./backend restart: unless-stopped volumes: - ./data:/app/data environment: - ENV=production - PORT=3000 - JWT_SECRET=${JWT_SECRET} - CORS_ORIGIN=${CORS_ORIGIN:-http://localhost} - DB_TYPE=sqlite - DB_PATH=/app/data/lyftr.db expose: - "3000" healthcheck: test: ["CMD", "wget", "-qO-", "http://localhost:3000/health"] interval: 30s timeout: 10s retries: 3 frontend: image: cwlumm/lyftr-frontend:latest build: ./web restart: unless-stopped ports: - "${PORT:-80}:80" depends_on: backend: condition: service_healthy
Step 3:修改环境变量
在本地创建一个 .env 文件,然后上传到NAS上边,这一步很关键,文件内容长这样:
# Required - 必须改! JWT_SECRET=change-me-to-a-random-32-plus-character-string # Optional CORS_ORIGIN=http://localhost PORT=80
⚠️ 高能预警:JWT_SECRET 千万别用默认值!随便敲一串32位以上的随机字符串就行。偷懒的话可以用这个命令生成:
openssl rand -hex 32
参数说明:

Step 4:启动!
两个容器会依次启动——后端(Go + SQLite)先跑起来,健康检查通过后前端(React)才会启动:
[+] Running 2/2 ✔ Container lyftr-backend-1 Healthy ✔ Container lyftr-frontend-1 Started
💡 这里的坑我帮大家踩过了:后端第一次启动时会自动从 free-exercise-db 拉取 868个 预置动作数据(卧推、深蹲、硬拉啥都有),这个过程是异步的,不会阻塞启动。但如果你网络不太行,动作列表可能要等几秒才会完全出现。
Step 5:打开浏览器注册账号
浏览器访问 http://你的NAS_IP:端口,注册一个账号就能开始用了。

🎉 整个部署过程,从SSH连接到注册完成,实测不超过5分钟。这部署体验在开源项目里算相当丝滑了。
💣 体验与避坑
真实好评 ✅
说实话,第一次打开 Lyftr 的 Dashboard 我是有点惊到的——这UI也太好看了吧?
深色模式下的青色 + 紫色配色方案,加上卡片式布局,颜值在自部署圈子里绝对是第一梯队。几个让我觉得「真香」的点:
Dashboard 的一致性热力图 🔥:就像 GitHub 的绿色格子一样,但这里记录的是你的训练频率。连续几周不训练那一片灰色真的有一种「社会性死亡」的压迫感,逼着你去练(比任何私教都好使 😂)。
健身房模式(Gym Mode):训练的时候切到这个模式,大字体大按钮,满手汗也能精准点击。这种细节说明开发者是真的在健身房用过自己的产品——不是那种「在办公桌上设计健身App」的产品经理。
营养追踪的分餐设计:早餐、午餐、晚餐、零食分区记录,蛋白质/碳水/脂肪环形进度图一目了然。我现在每天吃完饭随手记一下,月底回看数据,才发现自己碳水吃得有多离谱(别问了,都是奶茶的错 🧋)。
体重趋势分析:不只是记个数字,它会自动算30天变化趋势、历史最高、最低和平均值。减脂期每天称重情绪起伏很大,但看趋势线心里就踏实了——「虽然今天重了0.5kg,但趋势还是在往下走」。
800+ 预置动作库:首次启动自动加载,每个动作都有肌肉群标签。不用自己一个个手动添加「杠铃卧推」「哑铃飞鸟」这些,省了好多事。


客观不足 🤔
必须说说目前的短板(毕竟我不是来写软文的):
不支持中文,全英文界面——这可能是国内用户最大的门槛。所有菜单、按钮、动作名称全是英文。800+的动作库也是英文名(比如"Barbell Bench Press"而不是"杠铃卧推")。对于健身老鸟来说这些单词应该都认识,但如果你连 Squat(深蹲)、Deadlift(硬拉)这些基础词都不熟,上手会比较吃力。目前没看到官方有国际化的计划,想用的话可能得自己适应一下了。
没有数据导入功能(Roadmap上有,但还没做)——如果你之前在其他App里积累了训练数据,目前没法直接迁移过来。不过作者已经排上日程了。
没有原生移动App——目前只能通过浏览器访问。好消息是 PWA 和 iOS App 都在 Roadmap 上。当前用手机浏览器体验其实也不差,就是没有推送通知。
界面还有些粗糙的地方——比如个别页面的加载动画缺失、某些操作没有确认提示。Beta版嘛,可以理解。
社区还很小——GitHub 50颗星,遇到问题基本只能靠 Issues 和 Discussions 交流。不过作者响应挺快的。
但说实话,对于一个 Beta 版本来说,完成度已经远超我的预期了。核心功能全部可用,UI颜值在线,部署门槛极低。
📝 值不值得折腾?
适合谁折腾?
🏋️ 有自己NAS/VPS的健身爱好者,想要一个颜值在线的私有训练记录工具
🔒 数据隐私强迫症患者,不想把身体数据交给第三方云服务
🤓 喜欢折腾自部署应用的垃圾佬/极客玩家
📊 想要训练 + 饮食 + 体重「一站式管理」的全能选手
🌐 英文界面能接受的健身老鸟(动作名称基本都是健身圈常见术语)
不适合谁?
英文不太行、需要全中文界面的用户(目前全英文,没有中文语言包)
需要成熟稳定产品的人(毕竟还是Beta)
完全不想折腾Docker、只想App Store下载就用的人
需要和小伙伴互相比较训练数据的社交型健身者(目前没有社交功能)
总的来说,Lyftr 就是那种「看到就知道是为我准备的」的项目——自托管、免费、好看、轻量。唯一的遗憾就是没有中文支持,但如果你平时刷健身视频 Bench Press、Squat 这些词都看得懂,那其实影响不大。花5分钟自己部署一个,省下的订阅费买两桶蛋白粉,它不香吗?🧋
这期的分享就到这里!大家平时用什么App记录训练?有没有试过自部署健身类工具?欢迎评论区激情对线 👇!
