侧边栏壁纸
博主头像
是羊刀仙啊 博主等级

闲不下来!

  • 累计撰写 182 篇文章
  • 累计创建 51 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

超好用的个人财务/记账应用,Docker一键部署ezBookkeeping

羊刀仙
2025-08-15 / 0 评论 / 0 点赞 / 6 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

本期来介绍一款 记账/个人财务 应用工具:ezBookkeeping。适合个人使用,简洁、强大且便携,小微设备或云服务器都能轻松运行。

zh_Hans.png

笔者体验下来PC和移动端用着都很舒服,项目非常棒,特做推荐!!!

zh_Hans (1).png

应用介绍

ezBookkeeping 是一款轻量级、自托管的个人财务应用,拥有简洁易用的界面和强大的记账功能。它以简洁易用和可移植性为设计理念,易于部署、易于使用,并且占用的系统资源极少,非常适合微服务器、NAS 设备,甚至 Raspberry Pi,也能在 PC、Mac 甚至云服务器上流畅运行。

该应用程序完全跨平台且设备友好:可以在移动设备、平板电脑和桌面设备上无缝使用它。由于支持 PWA(渐进式 Web 应用程序),甚至可以将其添加到移动主屏幕,并像原生应用程序一样使用它。

功能特点

1. 开源 & 自托管

代码开放,部署在自己的服务器,隐私和数据完全掌握在自己手中。

适合重视数据安全、拒绝云端锁定的用户。

2. 轻量 & 高性能

针对低资源环境优化,树莓派、NAS、旧笔记本都能流畅运行。

即使是多账本、大量交易记录,也能保持响应快速。

3. 简单部署

官方提供 Docker 镜像,几行命令即可启动。

支持 SQLite(零配置)、MySQL、PostgreSQL 等多种数据库。

跨平台支持 Windows、macOS、Linux,兼容 x86、amd64、ARM 架构。

4. 跨平台 & PWA 支持

UI 适配桌面与移动端。

支持 PWA(Progressive Web App),可直接添加到手机主屏幕,像原生 App 一样使用。

内置暗黑模式,夜间看账也护眼。

5. AI 能力

支持 MCP(Model Context Protocol),可集成 AI 功能进行智能分析、自动分类或生成财务洞察。

6. 强大的记账功能

两级账户与分类体系,更精准管理收支。

可为交易附加图片(如收据、发票)。

支持位置记录,自动在地图上显示消费地点。

定期交易(如房租、水电费)可自动生成。

高级搜索、过滤、数据可视化和分析工具,帮助你发现消费习惯。

7. 国际化支持

多语言、多货币支持。

自动更新汇率。

支持多时区显示与自定义日期、数字、货币格式。

8. 安全保障

支持双重认证(2FA)。

登录尝试次数限制,防暴力破解。

应用锁(PIN 码 / WebAuthn)防止未授权访问。

9. 数据导入/导出

支持导入/导出多种格式:
CSV、OFX、QFX、QIF、IIF、Camt.053、MT940、GnuCash、Firefly III、Beancount 、随手记、支付宝以及微信账单 等多种格式等。

方便从旧系统迁移,或与其他财务软件对接。

如何部署

我们以威联通NAS为例,通过Docker Compose的方式进行部署。

截屏2025-08-14 11.41.54.png

ezBookkeeping 容器默认 UID:GID = 1000:1000,必须确保挂载到容器的宿主机目录拥有读写权限,请提前赋权。如果你部署失败,则极大概率会是这个原因。

chown -R 1000:1000 /share/Container/ezbookkeeping/data
chown -R 1000:1000 /share/Container/ezbookkeeping/storage
chown -R 1000:1000 /share/Container/ezbookkeeping/log

截屏2025-08-14 13.56.45.png

SQLite 版本

可能对于大多数人来说,这个版本已经完全足够。

部署代码如下,威联通用户可直接抄作业:

services:
  ezbookkeeping:
    image: mayswind/ezbookkeeping:latest
    container_name: ezbookkeeping
    hostname: ezbookkeeping
    restart: unless-stopped
    ports:
      - "9527:8080" # 冒号左侧端口可改
    environment:
      EBK_SERVER_DOMAIN: 192.168.200.132   # 或你 NAS 的域名
      EBK_ROOT_URL: http://192.168.200.132:9527   # 包括端口
      EBK_LOG_MODE: file
      EBK_SECURITY_SECRET_KEY: its_should_be_a_random_string  # 改成随机密钥
      EBK_MCP_ENABLE_MCP: true # AI服务
    volumes:
      - /etc/localtime:/etc/localtime:ro # 同步宿主机时间
      - /share/Container/ezbookkeeping/data:/ezbookkeeping/data # SQLite 数据库存放位置(NAS持久化目录)
      - /share/Container/ezbookkeeping/storage:/ezbookkeeping/storage # 文件存储目录(附件、导出文件等)
      - /share/Container/ezbookkeeping/log:/ezbookkeeping/log # 日志目录

随机密钥可通过以下命令生成:

openssl rand -hex 32

截屏2025-08-14 11.31.16.png

mysql 版本

若你已经部署mysql,或后续有共用数据库的打算,以及清楚自己在做什么,可以使用该版本。如果你对mysql并无了解,建议部署SQLite 版本。

如果你还没部署Mysql,部署代码可如下:

services:
  mysql:
    image: mysql:8.0
    container_name: ezbookkeeping-mysql
    hostname: mysql
    restart: unless-stopped
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword # MySQL root 超级管理员密码
      MYSQL_DATABASE: ezbookkeeping
      MYSQL_USER: ezbookkeeping
      MYSQL_PASSWORD: ezbookkeeping # 可改
    volumes:
      - /share/Container/ezbookkeeping/data_mysql:/var/lib/mysql
    # 如果后续准备多容器共用mysql数据库
    # - /share/Container/mysql/data:/var/lib/mysql
    ports:
      - "3306:3306"  # 可选,内部访问可去掉
# 如果你修改了 MYSQL_PASSWORD 
# 则健康检查中的值也别忘记修改
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-p", "ezbookkeeping"]
      interval: 10s
      timeout: 5s
      retries: 5

  ezbookkeeping:
    image: mayswind/ezbookkeeping:latest
    container_name: ezbookkeeping
    hostname: ezbookkeeping
    restart: unless-stopped
    depends_on:
      mysql:
        condition: service_healthy
    ports:
      - "9527:8080"  # 冒号左侧可改
    environment:
      EBK_SERVER_DOMAIN: 192.168.200.132   # 或你 NAS 的域名
      EBK_ROOT_URL: http://192.168.200.132:9527   # 包括端口
      EBK_DATABASE_TYPE: mysql
      EBK_DATABASE_HOST: mysql:3306
      EBK_DATABASE_NAME: ezbookkeeping
      EBK_DATABASE_USER: ezbookkeeping # 对应上面,下同
      EBK_DATABASE_PASSWD: ezbookkeeping # 对应上面 MYSQL_PASSWORD
      EBK_LOG_MODE: file
      EBK_SECURITY_SECRET_KEY: 随机密钥替换这里 # 生成方式参考上文
      EBK_MCP_ENABLE_MCP: "true"  # 可选启用 AI 功能
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /share/Container/ezbookkeeping/storage:/ezbookkeeping/storage
      - /share/Container/ezbookkeeping/log:/ezbookkeeping/log

如果你已经部署过Mysql,要提前在Mysql中创建独立数据库和用户,以供ezBookkeeping使用:

CREATE DATABASE ezbookkeeping CHARACTER SET utf8mb4;
CREATE USER 'ezbookkeeping'@'%' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON ezbookkeeping.* TO 'ezbookkeeping'@'%';
FLUSH PRIVILEGES;

参考代码如下,酌情修改:

services:
  ezbookkeeping:
    image: mayswind/ezbookkeeping:latest
    container_name: ezbookkeeping
    hostname: ezbookkeeping
    restart: unless-stopped
    ports:
      - "9527:8080"  
    environment:
      EBK_SERVER_DOMAIN: 192.168.200.132   # 或你 NAS 的域名
      EBK_ROOT_URL: http://192.168.200.132:9527   # 包括端口
      EBK_SERVER_DOMAIN: yourdomain
      EBK_SERVER_ENABLE_GZIP: "true"
      EBK_DATABASE_TYPE: mysql
      EBK_DATABASE_HOST: 127.0.0.1:3306  # NAS 内部 MySQL 地址,不一定都是这个
      EBK_DATABASE_NAME: ezbookkeeping
      EBK_DATABASE_USER: ezbookkeeping
      EBK_DATABASE_PASSWD: 强密码替换这里 
      EBK_LOG_MODE: file
      EBK_SECURITY_SECRET_KEY: 随机密钥替换这里 
      EBK_MCP_ENABLE_MCP: "true"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /share/Container/ezbookkeeping/storage:/ezbookkeeping/storage
      - /share/Container/ezbookkeeping/log:/ezbookkeeping/log

注意

更多的配置,可以参考下图,官方wiki十分详细,包括邮件服务、通知配置、对象存储、汇率等都可进行配置。

截屏2025-08-14 11.28.18.png

初始化及功能展示

选用SQLite对应代码进行部署后,浏览器中输入 NAS_IP:9527 即可访问服务。

截屏2025-08-14 13.59.23.png

需要我们新建一个账户。

截屏2025-08-14 14.01.44 拷贝.png

第二步的预设分类我们可以选择启用,然后提交即可。可能出现提交无法通过,但事实已经注册成功,反回去登陆就行。不过为了后续稳定,建议删除全部配置文件重新创建。

截屏2025-08-14 14.02.05.png

界面展示如下,清晰明了,蛮符合我个人口味。大家觉得如何?

截屏2025-08-14 14.04.47.png

点击头像可进行各种设置。

截屏2025-08-14 14.08.02.png

密码和设备管理,在这里可生成MCP令牌供AI对话调用。

截屏2025-08-14 14.08.23-kFfj.png

支持两步验证,资安相关的确实有必要整一个。

截屏2025-08-14 14.09.51.png

数据管理,支持手动导出数据。

截屏2025-08-14 14.10.22.png

应用设置中可以配置展示界面、添加应用锁(六位PIN码)、资金统计显示以及数据同步(移动/PC分离)。

截屏2025-08-14 14.12.03.png

简单使用

左侧栏的「账户」,新增一个。可自行添加标签,也可上传图片凭据。

截屏2025-08-14 14.20.36.png

开始记账,可自行添加标签,也可上传图片凭据。

截屏2025-08-14 14.16.24.png

可以看到添加成功。

截屏2025-08-14 14.25.17.png

主界面显示如下图所示,很丝滑。如果大家不满足于基础的交易分类、模版等,在左侧的基础数据手动添加/删除即可。

截屏2025-08-14 14.26.32.png

MCP服务

来尝试下MCP服务,生成令牌。这个配置建议保存,一次性显示,否则就要重新创建一个。

截屏2025-08-14 14.31.24.png

配置填写如下图所示,url中间部份可填写域名或IP,能正确访问到你的服务即可。

截屏2025-08-14 14.37.33.png

可以看到已经添加成功了,但是查看API功能接口,感觉跟官方给的wiki介绍有差距。

截屏2025-08-14 14.37.46.png

实际指令测试却并不能成功,检查了网络(全程局域网)、数据库文件,最终未果~大家或许可以试试mysql会不会有同样问题。

截屏2025-08-14 15.54.49.png

关于MCP也有相关的功能介绍界面,感兴趣的朋友可以琢磨。

最后

我认为这个项目非常优秀,PC端和移动端的使用很满意。

项目较新,大家有啥建议可以到项目地址提交issues~

感谢观看,本文完。

项目地址:https://github.com/mayswind/ezBookkeeping

0

评论区