前言
ezBookkeeping 是一款轻量级、自托管的个人财务应用,拥有直观友好的界面和强大的记账功能,适合个人和小型企业使用。它的部署非常简单,只需一个 Docker 命令即可启动,且具备高度可扩展性。无论是在像 Raspberry Pi 这样的小型设备上,还是在 NAS、MicroServer 甚至大型集群环境中,ezBookkeeping 都能流畅运行,节省宝贵的系统资源。
此外,ezBookkeeping 提供了定制化的移动和桌面界面,支持 PWA(渐进式 Web 应用),您可以将它添加到手机主屏幕,像原生应用一样随时使用。无论您在任何设备上,都能轻松管理个人财务,随时查看收支情况。
本教程将向您展示如何通过 Docker 在 VPS 或 NAS 上部署 ezBookkeeping,帮助您轻松搭建一个高效、便捷的财务管理系统。
项目简介
轻量级、自托管的个人理财应用程序,具有用户友好的界面和强大的簿记功能。
功能特点
- 开源 & 自托管
- 为隐私和控制而设计
- 轻量级 & 快速
- 优化性能,即使在低资源环境下也能流畅运行
- 简单安装
- 支持 Docker 部署
- 支持 SQLite、MySQL、PostgreSQL
- 跨平台(Windows、macOS、Linux)
- 支持 x86、amd64、ARM 架构
- 用户友好的界面
- 移动端和桌面端优化的 UI
- 支持 PWA,提供类似原生应用的移动体验
- 暗黑模式
- AI 驱动的功能
- 收据图像识别
- 支持 MCP(模型上下文协议)进行 AI 集成
- 强大的记账功能
- 两级账户和类别
- 支持将图片附加到交易记录
- 使用地图进行位置追踪
- 支持定期交易
- 高级过滤、搜索、可视化和分析功能
- 本地化与全球化
- 支持多语言和多货币
- 自动汇率更新
- 支持多时区
- 自定义日期、数字和货币格式
- 安全性
- 双重身份验证(2FA)
- 登录限制
- 应用锁(PIN 码 / WebAuthn)
- 数据导入/导出
- 支持 CSV、OFX、QFX、QIF、IIF、Camt.053、MT940、GnuCash、Firefly III、Beancount 等格式
demo
https://ezbookkeeping-demo.mayswind.net/
用户名:
demo
密码:
ezbookkeeping
项目图片
桌面界面
移动界面
部署方法
使用Docker安装
本教程使用docker的方式安装部署,简单便捷
准备条件
1)一台服务器
我们使用莱卡云VPS和飞牛云NAS来演示
需要vps的可以看以下信息配置可以参考以下资源占用情况
莱卡云官网
本期docker容器占用资源情况如下仅供参考,总体占用内存不足500M
2)本项目使用到的开源项目
https://github.com/mayswind/ezbookkeeping
更多功能或者二次修改可以访问开源项目地址
3)域名(可选)
域名可以根据自己的需求绑定,建议绑定下域名
① VPS部署
一、Docker环境部署
在vps安装docker和docker-compose
Docker官方安装文档(英文)
https://duan.yyzq.eu.org/docker-001
Docker-Compose官方安装文档(英文)
https://duan.yyzq.eu.org/docker-002
Centos安装Docker和Docker-compose(中文)
https://duan.yyzq.eu.org//03
Ubuntu安装Docker和Docker-compose(中文)
https://duan.yyzq.eu.org//04
推荐直接用一键脚本
docker安装脚本
bash <(curl -sSL https://cdn.jsdelivr.net/gh/SuperManito/LinuxMirrors@main/DockerInstallation.sh)
docker-compose安装脚本
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose
二、创建docker-compose.yml文件
登录服务器使用root账户执行以下步骤
创建一个目录,并进入此目录
mkdir ezbookkeeping;cd ezbookkeeping
先创建3个子目录
mkdir ./{data,log,storage}
在给设置部分权限
chmod -R a+rw {log,storage}
然后再新建docker-compose.yml
vim docker-compose.yml
services:
ezbookkeeping: # EzBookkeeping 服务,用于记账应用
image: mayswind/ezbookkeeping # 使用 mayswind/ezbookkeeping 镜像
container_name: ezbookkeeping # 容器名称为 ezbookkeeping
restart: always # 容器总是重启
ports:
- 3080:8080 # 将容器的 8080 端口映射到主机的 3080 端口
volumes:
- /etc/localtime:/etc/localtime:ro # 将主机的本地时间同步到容器
- ./storage:/ezbookkeeping/storage # 持久化存储到主机的 ./storage 文件夹
- ./log:/ezbookkeeping/log # 持久化日志到主机的 ./log 文件夹
environment:
- EBK_DATABASE_TYPE=mysql # 数据库类型为 MySQL
- EBK_DATABASE_HOST=mysql:3306 # 数据库主机为 mysql 服务,端口为 3306
- EBK_DATABASE_NAME=ezbookkeeping # 数据库名称为 ezbookkeeping
- EBK_DATABASE_USER=ezbookkeeping # 数据库用户名为 ezbookkeeping
- EBK_DATABASE_PASSWD=ezbookkeeping # 数据库密码为 ezbookkeeping
- EBK_LOG_MODE=file # 日志模式为文件
- EBK_SECURITY_SECRET_KEY=O0rxWj8gH8z2T9O79l8ndUczIHtUgV6bRY3CZfF0beE= #设置随机的安全密钥
- EBK_MCP_ENABLE_MCP=true # 启用 MCP 功能
depends_on:
- mysql # 在 mysql 服务启动后再启动 ezbookkeeping 服务
mysql: # MySQL 服务,用于存储 EzBookkeeping 数据
image: mysql:8.0 # 使用官方的 MySQL 8.0 镜像
container_name: ezbookkeeping-mysql # 容器名称为 ezbookkeeping-mysql
restart: always # 容器总是重启
volumes:
- ./data:/var/lib/mysql # 将主机的 ./data 文件夹映射到容器的 /var/lib/mysql 目录,用于持久化数据库数据
environment:
- MYSQL_DATABASE=ezbookkeeping # 默认数据库为 ezbookkeeping
- MYSQL_USER=ezbookkeeping # 数据库用户名为 ezbookkeeping
- MYSQL_PASSWORD=ezbookkeeping # 数据库密码为 ezbookkeeping
- MYSQL_ROOT_PASSWORD=ezbookkeeping # MySQL 根密码为 ezbookkeeping
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-p ezbookkeeping"] # 检查 MySQL 是否正常运行
retries: 3 # 如果健康检查失败,最多重试 3 次
timeout: 5s # 每次健康检查的超时时间为 5 秒
三、执行容器运行命令
docker-compose up -d #运行容器
注意第一次运行由于需要创建数据库相关数据会需要一点时间大约5分钟左右,等待mysql初始化完成在执行以下信息查看是否正常
然后停止下
docker-compose down #运行容器
如果一直不行可以在执行下权限的操作
chmod -R a+rw {log,storage}
可以先看下MySQL是否初始化成功
docker-compose logs mysql
docker-compose ps #查看是否开启成功
正常启动如下所示
docker-compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
ezbookkeeping mayswind/ezbookkeeping "/docker-entrypoint.…" ezbookkeeping 33 minutes ago Up 32 minutes 0.0.0.0:3080->8080/tcp, [::]:3080->8080/tcp
ezbookkeeping-mysql mysql:8.0 "docker-entrypoint.s…" mysql 33 minutes ago Up 33 minutes (healthy) 3306/tcp, 33060/tcp
四、打开web页面使用
成功以后需要打开自己相应的端口3080)防火墙就可以web端访问了
主界面
http://ip:3080
进入登录界面
注册
设置预设分类
进入界面
进入使用界面
②飞牛云NAS部署
新建项目
ezbookkeeping
复制以上vps上的yaml文件
直接新建项目启动即可注意默认端口3080
飞牛上需要提前创建3个目录,权限我测试是不用单独更改
绑定域名
这个项目主要是可以全平台建议绑定下域名
视频教程
B站
YouTube
绑定域名可以参考
NginxProxyManager
https://duan.yyzq.eu.org//npm-ch
有任何问题可以直接留言或者问我
有任何问题可以直接留言或者问我
有任何问题可以直接留言或者问我
欢迎关注我们的微信公众号!
评论区