ARTICLE · 1113996
记账 App 我全卸了:NAS 自建一个 AI 账本,发张截图就入账
🏠 自托管 · Docker 实战 · 家庭记账
开源免费,数据全在自己家里,Docker 两条命令装好。
一、为什么自己搭一个
坚持记账的人少,真不是因为懒,是流程太长:解锁手机 → 打开 App → 等开屏 → 选分类 → 输金额 → 选账户 → 保存。买杯奶茶的耐心,熬不过这套流程。
商业记账 App 我也试过不少,总有几个绕不开的坎:
▪ 广告和会员比功能还多,导出个账单 CSV 都要开会员;
▪ 想跟家里人共用账本?对不起,那是高级功能,加人还得再掏钱;
▪ 最膈应的是,你每一笔消费、每一张账单截图,都躺在别人的服务器上。
正好家里有台飞牛 NAS 在吃灰,干脆自己写了一个。全家用了大半年,越用越顺手,索性整理开源——就是今天的家账簿 HomeLedger。
二、家账簿是个什么东西
一句话:跑在你自己 NAS 或服务器上的家庭记账系统。

▲ 总览页:本月收支、净资产、收支持续趋势、最近记账,一眼看清
先交代技术底子,关心数据安全的朋友看这里:
▪ Node.js 22 + Express,纯后端服务端渲染,没有前端构建那套东西;
▪ 数据库用的是 Node 22 内置的 SQLite,零原生依赖,不用编译任何组件;
▪ 所有数据就是一个 data/ 目录——备份 = 拷贝这个目录,删容器不丢账。
首页就是全家最关心的几件事:这个月花了多少、还剩多少、净资产走势如何,右下角还有订阅扣费的到期提示。
三、几个我每天都在用的功能
1. AI 记账:发张截图就完事
这是整个系统的灵魂。
超市小票、外卖订单、打车行程——随手截个图丢进去,视觉大模型把金额、商户、日期、分类全部识别出来,生成一条草稿。扫一眼没问题,点确认,账就入好了。全程五秒,不用碰键盘。

▲ 右下角的 AI 助手:发一句「奶茶 22 元」,直接识别入库
懒得截图也行,直接说人话:「晚饭 88 打车 26.5」,自动拆成两笔。
更懒的玩法是扔到聊天软件里:家账簿内置了一套开放 API,配合小龙虾(OpenClaw)这类聊天机器人,在对话窗口发张支付截图、说一句「记一下」,机器人调完接口会把结果汇报给你。
两个兜底设计,我挺满意:
▪ 账单原图自动存档:AI 记的每一笔账,原始截图自动关联到记录上,账单明细里有个 📎 角标,点开就能回看凭证——月底对账再也不用翻聊天记录找截图;
▪ 规则引擎兜底:完全不配置 AI 也能用,内置关键词规则 + 正则解析,纯离线、零成本。
2. 订阅扣费:每月固定被扣多少钱,一眼看清
现在的订阅服务实在太多:视频会员、云盘、AI 工具、iCloud……单看哪个都不贵,加起来吓一跳。
家账簿的订阅扣费模块专管这个:所有自动续费集中一处,月付年付统一摊平成月均,首页直接告诉你——每月固定支出 314 块、全年 3778 块。我第一次看到这个数字的时候,沉默了很久。

▲ 订阅扣费页:生效中 / 试用期 / 已取消分组管理,右侧是添加表单
细节做得挺足:
▪ 到期自动记账,账单明细能按「订阅」一键筛选;
▪ 到期前自动提醒,试用期结束前也会喊你一声;
▪ Netflix、iCloud+、ChatGPT Plus 这些常用服务内置快选,点一下图标,周期金额全带出来;
▪ 支持暂停、跳过本期、标记已取消,历史扣费记录始终保留。

▲ 首页右侧的订阅卡片:下期扣费日和倒计时直接摆在眼前
3. 记账内核:该有的都有了
▪ 14 种交易类型:支出、收入、转账、借贷、投资买卖、报销、退款、利息……转账、借贷、投资不计入收支统计,不会出现「转账给自己,月支出翻倍」的鬼故事;
▪ 10 种账户:现金、储蓄卡、信用卡(支持额度和账单日)、电子钱包、固定资产、负债等;
▪ 209 个内置分类,两级树形,随便增删改;
▪ 多币种、AA 分账、标签、商家、附件凭证,一个不缺。
4. 一家人记一本账
家人通过邀请码加入,角色分所有者 / 管理员 / 成员 / 只读四档,报表能按成员拆分——月底一看,这个家谁在「疯狂输出」一目了然。账本随便开:个人账本、家庭账本、旅行账本互不干扰。
5. 数据进出不设卡
▪ 导入:支付宝、微信支付账单 CSV,自动识别编码、映射分类和账户、按「日期 + 金额 + 商家」去重,交易关闭的自动跳过;
▪ 导出:CSV(带 BOM,Excel 直接打开不乱码)和 JSON 全量导出;
▪ 备份:一键下载数据库文件,也支持上传还原。
报表全部是服务端 SVG 渲染:收支趋势、净资产曲线、分类构成、日历热力图,断网也能打开。支持 PWA,手机「添加到主屏幕」就跟 App 一个用法,深浅色主题自动跟随系统。
四、装它:Docker / Compose 两条命令的事
方式 A:Docker Compose(推荐)
新建一个空目录,把下面整块内容保存为 docker-compose.yml:
services:homeledger:image: ghcr.io/sucraft-hub/homeledger:latestcontainer_name: homeledgerrestart: unless-stoppedenvironment:TZ: Asia/ShanghaiSESSION_SECRET: "请改成随机长字符串"ADMIN_USER: "admin"ADMIN_PASSWORD: "请改成你的强密码"ports:- "5111:5111"volumes:- ./data:/data
然后在同目录执行:
docker compose up -d 完事。浏览器打开 http://NAS的IP:5111 就能记账了。
几个配置项说明:
方式 B:纯 Docker(不想用 Compose)
docker run -d \--name homeledger \--restart unless-stopped \-p 5111:5111 \-e TZ=Asia/Shanghai \-e SESSION_SECRET="请改成长随机串" \-v "$PWD/data:/data" \ghcr.io/sucraft-hub/homeledger:latest
首次登录
程序会自动创建管理员,默认账号 admin,密码 admin888(仅当库里还没有用户时生效)。
登录后第一件事:去「设置 → 账号安全」改密码。
飞牛 fnOS 用户:免 Docker
.fpk 原生应用包,不用装 Docker,应用中心手动安装,桌面直接出图标,数据跟着应用走、覆盖升级不丢:
📦 GitHub Releases
github.com/sucraft-hub/homeledger
☁️ 夸克网盘(备用通道)
https://pan.quark.cn/s/ae55bdf65521?pwd=8pVj
提取码:8pVj
小提醒:升级时直接覆盖安装即可,不要先卸载——只有卸载时勾选「清除本地数据」才会删库。
五、想开 AI 记账?两分钟搞定
设置里就填三样:OpenAI 兼容的接口地址、API Key、模型名。智谱 GLM、通义千问、DeepSeek、本地 Ollama 都能接。
截图记账要选视觉模型(glm-4v-flash、qwen-vl-plus 这类),设置页有「获取可用模型」按钮,一键拉取接口下的模型清单,能读图的标 ✅,选中保存就行。
两个安心点:
▪ 不配置任何 AI 也完全能用,规则引擎兜底,文本记账和 CSV 导入照常工作;
▪ 介意隐私的话,把接口指向局域网里的 Ollama,数据不出内网。
写在最后
项目完全开源,部署问题欢迎提 Issue:
GitHub
github.com/sucraft-hub/homeledger
FPK 下载:Releases 或上方夸克网盘(提取码 8pVj)
觉得有用的话,点个 Star 就是最好的鼓励。
数据放在自己家里,账才记得安心。
—— 完 ——本文包含 AI 辅助内容