飞牛 NAS 上“好用的记账”推荐:Cashbook:
- 完全 自托管,数据存在你自己的 NAS 上。
- 支持 Web 访问,电脑、手机浏览器都比较适配。
- 界面简洁,支持:
- 多账本管理;
- 日历视图、流水记录、数据分析;
- 导入支付宝 / 微信 / 京东账单 / 自定义的CSV、JSON格式账单。
- 中文界面,操作直观。
- 有完整的Docker Compose 部署方案,也可以在飞牛系统中Docker UI部署。
效果预览
- 官方文档站:https://doc.cashbook.oldmoon.top
- 在线体验:cashbook.oldmoon.top (体验账号:
cashbook/cashbook) - 在线体验后台:cashbook.oldmoon.top/admin (体验账号:
admin/admin123456)
可以先看一下效果和功能是否满足需求,如果还行可以继续向下看安装部署,如果感觉未达预期,可以关闭走人不用浪费时间了。
- 日历

- 数据分析

- 流水

- 导入

- 筛选

- 手机页面

部署
先讲一下在飞牛Docker中使用UI部署,最后附上完整的docker-compose。
创建自定义网络
当两个容器处理同一个自定义bridge网络时,可以直接通过「容器名」作为主机名互相访问,默认 bridge 网络不启用内置 DNS无法用容器名访问,只能用IP,这里为了方便cashbook访问数据库,创建自定义网络。

安装Postgre 数据库
- 进入Docker应用,选择镜像仓库 -> 搜索 postgres -> 安装。

- 等待安装完成,进入 本地镜像 -> 创建容器

- 高级设置中添加环境变量:
- 端口改一下,5433。原因是飞牛Nas已经安装了postgres切使用了默认的5432端口。
- POSTGRES_USER: 数据库登录用户名
- POSTGRES_PASSWORD: 数据库密码
- POSTGRES_DB: 数据库
- TZ:Asia/Shanghai设置时区

- 下拉到网络,选择mynet

- 创建容器 postgre 容器

安装Cashbook
- 同样的方式搜索 cashbook 安装镜像

- 配置环境变量
- DATABASE_URL:数据库链接,修改为真实数据链接:
postgresql://postgres:123456@postgres:5432/cashbook?schema=public - NUXT_DATA_PATH:容器内数据存储未知,现在只有小票图片了
- NUXT_AUTH_SECRET:前台登录加密使用的密钥 (注意:不能是纯数字)
- NUXT_ADMIN_USERNAME:后台登录用户名,默认:admin
- NUXT_ADMIN_PASSWORD:后台登录密码,密码是加密后的,与账号有关联!默认:admin123456
- 网络同样选择
mynet
- DATABASE_URL:数据库链接,修改为真实数据链接:

使用
- 使用浏览器访问
http://ip:9090,第一次需要进入管理后台设置用户。

- 登录管理后台,账号:admin,密码:admin123456

- 登录管理后台

- 添加用户

- 回到登录页面,使用添加的用户来登录到前端

- 登录后,需要添加账本

- 就可以使用了

- 如果要修改后台管理员账号和密码,需要用
http://ip:9090/admin/GetPassword,设置账号密码,生成加密密码,复制,替换docker环境变量中的NUXT_ADMIN_USERNAME和NUXT_ADMIN_PASSWORD

docker-compose.yaml 示例
如果只安装cashbook,后面db部分删了,再调整数据库链接就可以了。
services:
main:
container_name: cashbook
depends_on:
- "db"
image: dingdangdog/cashbook:latest
restart: always
volumes:
- ./data:/app/data
environment:
# 环境变量详解请查阅:https://doc.cashbook.oldmoon.top/deploy/#cashbook环境变量详解
NUXT_DATA_PATH: "/app/data"
DATABASE_URL: "postgresql://postgres:123456@postgres:5432/cashbook?schema=public"
NUXT_AUTH_SECRET: "auth_secret"
NUXT_ADMIN_USERNAME: "admin"
NUXT_ADMIN_PASSWORD: "fb35e9343a1c095ce1c1d1eb6973dc570953159441c3ee315ecfefb6ed05f4cc"
ports:
- 9090:9090
db:
container_name: postgres
image: postgres:17.4-alpine3.21
restart: always
# set shared memory limit when using docker-compose
shm_size: 128mb
# or set shared memory limit when deploy via swarm stack
volumes:
- ./db:/var/lib/postgresql/data
environment:
POSTGRES_USER: postgres # 数据库用户名
POSTGRES_PASSWORD: 123456 # 数据库密码
POSTGRES_DB: cashbook
ports:
- 5433:5432 #开发数据库端口
评论区