欢迎光临
我们一直在努力

Docker 一键搭建 ezBookkeeping:打造自托管记账应用指南

在日常生活和工作中,记账与财务管理往往是最容易被忽视、却又最重要的一环。无论是个人日常支出、家庭收支记录,还是自由职业、工作室的简单财务统计,如果长期依赖零散的笔记、Excel 表格,或第三方平台,不仅维护成本高,数据安全和长期可控性也难以保障。

随着越来越多用户开始重视数据隐私与自主掌控,自托管应用逐渐成为一种趋势。相比把账本数据交给云端平台,部署一个属于自己的记账系统,不仅更安全,也更灵活,能够真正做到“数据只在自己服务器上”。

1. 项目

ezBookkeeping 是一款 开源、轻量级、自托管 的个人记账应用,专注于提供简洁、高效、实用的财务记录体验。它支持收入、支出、转账等多种记账场景,并提供直观的数据统计与分类管理,能够满足个人和家庭的日常记账需求。作为一款以自部署为核心设计理念的项目,ezBookkeeping 完全不依赖第三方云服务,所有账本数据都存储在用户自己的服务器中,安全性和可控性更高。

1.1 项目特点

🎨 简洁直观的现代化 UI
ezBookkeeping 采用清爽直观的界面设计,整体风格偏向实用与可读性,功能布局清晰,上手门槛低。无论是日常快速记账,还是后期查看统计数据,都能获得良好的使用体验,在桌面端和移动端浏览器中均表现稳定。

⚙️ 专注记账核心,操作高效
项目围绕“记账”这一核心场景进行设计,去除了冗余复杂功能。新增记录、分类选择、金额输入等操作流程简洁流畅,非常适合长期、频繁使用的记账场景。

📒 完整的记账功能支持
ezBookkeeping 支持多种常见财务记录类型,包括:

  • 收入记录
  • 支出记录
  • 账户间转账
  • 分类与子分类管理
  • 多账户支持
  • 多币种记账

能够满足个人、家庭以及轻量级工作室的日常财务记录需求。

📊 直观的数据统计与报表
内置多种统计视图,可按时间、分类、账户等维度查看收支情况,帮助用户快速了解资金流向与消费结构,便于进行日常财务复盘与管理。

🚀 轻量级架构,运行稳定
ezBookkeeping 整体设计轻量,对服务器资源占用极低,即使是配置不高的云服务器或 NAS 设备,也可以稳定运行,非常适合长期自托管部署。

📦 官方支持 Docker 快速部署
项目官方提供 Docker 镜像,部署过程无需手动安装依赖或配置复杂环境,只需简单几条命令,即可在服务器上完成部署,大幅降低使用门槛。

🔐 数据完全自托管,隐私可控
所有账本数据均存储在用户自己的服务器中,不依赖任何第三方云服务,有效避免数据泄露风险,适合对隐私和数据安全有要求的用户。

🌍 多语言与时区支持
支持多语言界面和自定义时区配置,适用于不同地区用户使用,部署在海外或国内服务器环境中都能正常工作。

📂 数据持久化,便于备份与迁移
通过 Docker 数据卷进行数据持久化,账本文件可随时备份、迁移或恢复,方便长期维护和服务器更换。

🧭 适用于多种使用场景
无论是:

  • 个人日常记账
  • 家庭收支管理
  • 自由职业者简单财务记录
  • 自托管财务应用实践

ezBookkeeping 都能作为一款稳定、可靠、轻量的记账解决方案。

1.2 项目展示

2.相关地址

gitHub开源项目:https://github.com/mayswind/ezbookkeeping

官方demo:https://ezbookkeeping-demo.mayswind.net/desktop#/

3.搭建环境

  • 服务器:这里为了方便搭建项目使用的是莱卡云的境外香港云服务器。(国内用户连接建议使用国内的服务器(需备案域名或者IP+端口)延迟会更低)
  • 莱卡云服务器促销活动性价比会更高。查看官网购买链接:https://www.lcayun.com
  • 资源配置:2核2G 30G硬盘
    由于国内服务器访问海外源较慢,这边为了方便演示直接使用海外服务器搭建。
  • 服务器系统:Debian-13
  • 【必需】安装Docker:安装好 Docker、Docker-compose
  • 【非必需】域名一枚,可用于解析到服务器上使用域名访问

4.搭建视频

哔哩哔哩:https://www.bilibili.com/video/BV1eGBxB9EuC/

5.搭建方式

5.1 安装docker和docker-compose

安装教程:服务器上安装docker和docker-compose教程

5.2 创建docker文件

#在opt目录下创建ezbookkeeping文件夹
mkdir -p /opt/ezbookkeeping
#打开ezbookkeeping文件
cd /opt/ezbookkeeping

5.3 创建Docker Compose 配置

#编辑docker-compose.yml
vim docker-compose.yml

填入以下的配置文件

根据自己实际情况来设置

services:
  mysql:
    image: mysql:8.0                         # 使用官方 MySQL 8.0 镜像
    container_name: ezbookkeeping-mysql       # 容器名称(可自定义)
    restart: unless-stopped                   # 除非手动停止,否则异常会自动重启
    command:
      - --character-set-server=utf8mb4        # 默认字符集(支持中文/emoji)
      - --collation-server=utf8mb4_unicode_ci # 默认排序规则
      - --default-time-zone=+08:00            # MySQL 时区(这里设为东八区)
    volumes:
      - ./data:/var/lib/mysql                 # MySQL 数据持久化(重要:避免重启丢数据)
    environment:
      MYSQL_DATABASE: ezbookkeeping           # 初始化创建数据库名
      MYSQL_USER: ezbookkeeping               # 初始化创建普通用户
      MYSQL_PASSWORD: ezbookkeeping           # 普通用户密码(建议改强密码)
      MYSQL_ROOT_PASSWORD: ezbookkeeping      # root 密码(建议改强密码)
    healthcheck:
      # 健康检查:用 mysqladmin ping 判断 MySQL 是否就绪
      # -p 密码要紧跟,不要有空格(-pPASSWORD)
      test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-pezbookkeeping"]
      interval: 5s                            # 每 5 秒检查一次
      timeout: 5s                             # 单次检查超时时间 5 秒
      retries: 20                             # 连续失败 20 次才判定为 unhealthy

  ezbookkeeping:
    image: mayswind/ezbookkeeping:latest      # ezBookkeeping 镜像(latest 表示最新版)
    container_name: ezbookkeeping             # 容器名称
    restart: unless-stopped                   # 异常自动重启
    ports:
      - "8082:8080"                           # 访问端口:宿主机 8082 -> 容器 8080
    volumes:
      - /etc/localtime:/etc/localtime:ro      # 同步宿主机时间(只读挂载)
      - ./storage:/ezbookkeeping/storage      # 应用存储目录(持久化数据/附件等)
      - ./log:/ezbookkeeping/log              # 应用日志目录(写到宿主机)
      # - ./ezbookkeeping.ini:/ezbookkeeping/conf/ezbookkeeping.ini:ro
      # 如果你需要用配置文件覆盖默认配置,可取消注释并准备 ezbookkeeping.ini(只读更安全)
    environment:
      EBK_DATABASE_TYPE: mysql                # 数据库类型:mysql
      EBK_DATABASE_HOST: mysql:3306           # 数据库地址:服务名 mysql + 端口 3306(同一网络内自动解析)
      EBK_DATABASE_NAME: ezbookkeeping        # 数据库名
      EBK_DATABASE_USER: ezbookkeeping        # 数据库用户
      EBK_DATABASE_PASSWD: ezbookkeeping      # 数据库密码

      EBK_LOG_MODE: file                      # 日志模式:写文件(配合 ./log 挂载)
      EBK_SECURITY_SECRET_KEY: "change_me_to_a_long_random_string"
      # 安全密钥:建议改成 32~64 位以上随机字符串(用于安全相关加密/签名)
      EBK_MCP_ENABLE_MCP: "true"              # 是否启用 MCP(按你需求启用/关闭)
    depends_on:
      mysql:
        condition: service_healthy            # 等 MySQL 健康检查通过后再启动 ezBookkeeping(更稳)

5.4 运行ezbookkeeping的docker镜像

我们先启动docker

# 启动docker
docker compose up -d

# 重启docker
docker compose stop
docker compose start

# 升级docker
docker compose down
docker compose pull
docker compose up -d

启动成功docker-compose.yml之后我们开放一下日志文件权限

chmod -R 777 log storage

目的:让容器里的 ezBookkeeping 能创建这个文件:/ezbookkeeping/log/ezbookkeeping.log

然后再重启一下docker服务

docker compose restart ezbookkeeping

重启成功后,你可以通过以下命令查看运行状态:

docker ps

如果容器状态为 Up,说明已经启动成功。

5.5 访问自己搭建的ezbookkeeping

浏览器访问:

http://你的服务器IP:8082

我们可以自己选择语言

这时候需要您自己创建一个新账户

创建完即可进入了,整个过程非常直观,不需要复杂配置。

6.日常维护与升级

🔄 更新 ezBookkeeping

docker compose pull
docker compose up -d

💾 数据备份

只需定期备份:

/opt/ezbookkeeping/data

哪怕服务器重装,账本数据也能轻松恢复。

7.结语

自行部署 ezBookkeeping 不仅能够更好地保护财务数据隐私,还能根据自身需求灵活调整运行环境。无论是个人日常记账、家庭收支管理,还是作为轻量级财务记录系统长期运行在服务器上,这种方式都更加可控、可靠。

赞(0)
未经允许不得转载:莱卡云 » Docker 一键搭建 ezBookkeeping:打造自托管记账应用指南