标签搜索

目 录CONTENT

文章目录

在VPS或者NAS上使用Docker部署轻量级记账软件——ezBookkeeping

yyzq
2025-10-08 / 0 评论 / 1 点赞 / 29 阅读 / 1,882 字

前言

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

项目图片

桌面界面
image-1759903614293
移动界面
image-1759903654071

部署方法

使用Docker安装

本教程使用docker的方式安装部署,简单便捷
164b6ac419e23bc5390dc46601a202bf

准备条件

1)一台服务器

我们使用莱卡云VPS和飞牛云NAS来演示

需要vps的可以看以下信息配置可以参考以下资源占用情况
莱卡云官网

本期docker容器占用资源情况如下仅供参考,总体占用内存不足500M
image-1759904177364

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

image-1759905639652

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

进入登录界面
image-1759906292726

注册
image-1759906354145

设置预设分类
image-1759906379618
进入界面
image-1759906399221
进入使用界面
image-1759906461281

②飞牛云NAS部署

新建项目

ezbookkeeping

复制以上vps上的yaml文件
image-1759904393174
直接新建项目启动即可注意默认端口3080
image-1759904415657

飞牛上需要提前创建3个目录,权限我测试是不用单独更改
image-1759906551224

绑定域名

这个项目主要是可以全平台建议绑定下域名

视频教程

B站

YouTube

绑定域名可以参考
NginxProxyManager
https://duan.yyzq.eu.org//npm-ch

有任何问题可以直接留言或者问我
有任何问题可以直接留言或者问我
有任何问题可以直接留言或者问我

欢迎关注我们的微信公众号!
微信公众号

1

评论区