FAQ
Table of contents
- Which operating systems does ezBookkeeping support
- How much system resources does ezBookkeeping use?
- Why double-clicking
ezbookkeeping.exe
on Windows doesn’t launch the application - What configuration settings are required for ezBookkeeping?
- ezBookkeeping reports “permission denied” on startup
- Where ezBookkeeping stores its files
- How to migrate ezBookkeeping data
- Does ezBookkeeping provide a desktop or mobile app
- How to add ezBookkeeping to home screen of mobile phone
- Why can’t add a transaction
- How to record a refund
- How to record transfer fees
- How to record money lent to others
- How to modify an account balance
- Unable to set currency when adding a transaction
- How to change the default account when adding a transaction
- How to create a transaction using a template
- How to create a transaction using AI image recognition
- Scheduled transaction does not create transaction automatically
- Why can’t display the uploaded user avatar or transaction picture
- Why doesn’t the total amount include the amount in a specific currency
- Why isn’t the record removed from the database after deleting a transaction
- Why isn’t the picture file removed from object storage after deleting a transaction picture
- How to modify the content of verification or password reset emails
- How to modify prompts of AI image recognition and other LLM (Large Language Model) requests
This page lists some frequently asked questions and their answers.
If you don’t find what you’re looking for here, you can check out GitHub Discussions or GitHub Issues for more information.
Which operating systems does ezBookkeeping support
The operating systems that can run the ezBookkeeping server are the same as those supported by Golang. The table below lists the Golang versions required by each ezBookkeeping release, along with the minimum supported OS versions.
ezBookkeeping Version | Golang Version | Minimum Supported OS |
---|---|---|
v1.1.x and later | 1.25 | ≥ Linux Kernel 3.2 ≥ Windows 10 / Windows Server 2016 ≥ macOS 11 Big Sur |
v0.8.x ~ v1.0.x | 1.24 | ≥ Linux Kernel 3.2 ≥ Windows 10 / Windows Server 2016 ≥ macOS 11 Big Sur |
v0.7.x | 1.23 | ≥ Linux Kernel 2.6.32 ≥ Windows 10 / Windows Server 2016 ≥ macOS 11 Big Sur |
v0.6.x | 1.22 | ≥ Linux Kernel 2.6.32 ≥ Windows 10 / Windows Server 2016 ≥ macOS 10.15 Catalina |
v0.5.x | 1.21 | ≥ Linux Kernel 2.6.32 ≥ Windows 10 / Windows Server 2016 ≥ macOS 10.15 Catalina |
v0.2.x ~ v0.4.x | 1.20 | ≥ Linux Kernel 2.6.32 ≥ Windows 7 / Windows Server 2008 R2 ≥ macOS 10.13 High Sierra |
v0.1.x | 1.16 | ≥ Linux Kernel 2.6.32 ≥ Windows 7 / Windows Server 2008 R2 ≥ macOS 10.12 Sierra |
The Linux versions listed above apply only to the amd64, arm64, and armv6/v7 architectures. For other architectures, please refer to the official Golang documentation. For more details on supported operating systems, please visit the official Golang documentation: https://go.dev/wiki/MinimumRequirements.
You can access ezBookkeeping directly through your web browser. The table below lists the minimum browser versions required for each ezBookkeeping release.
ezBookkeeping Version | Minimum Chrome Version | Minimum Edge Version | Minimum Firefox Version | Minimum Safari Version |
---|---|---|---|---|
v1.1.x and later | ≥ 91 | ≥ 91 | ≥ 91 | ≥ 15.4 |
v0.3.x ~ v1.0.x | ≥ 87 | ≥ 88 | ≥ 78 | ≥ 14.0 |
How much system resources does ezBookkeeping use?
ezBookkeeping is a lightweight software written in Golang that needs very few resources. The ezBookkeeping binary file and its dependent static files take up about 40 MB of disk space, and it only requires about 30MB of memory when running on Linux/amd64 platform.
Why double-clicking ezbookkeeping.exe
on Windows doesn’t launch the application
ezBookkeeping is not a desktop application, and its’s a self-hosted server program. You can start the server program by following the steps in the Installation Guide. Once the server is running, you can access ezBookkeeping through any web browsers on any of your devices.
Of course, if you prefer, you can also run the ezBookkeeping server program on your personal computer and access it locally through your web browser.
What configuration settings are required for ezBookkeeping?
ezBookkeeping is ready to use out of the box, so it can run without any additional configuration. However, for production use, you should properly configure the following key settings:
secret_key
insecurity
section (environment variableEBK_SECURITY_SECRET_KEY
): Set this to a random string. You can generate one using the ezBookkeeping CLI commandezbookkeeping security gen-secret-key
domain
inserver
section (environment variableEBK_SERVER_DOMAIN
): Set this to the domain name or IP address users will use to access (e.g.ezbookkeeping-demo.mayswind.net
or192.168.1.2
). If this setting is incorrect, user avatars and transaction pictures may fail to display, and links in ezBookkeeping’s outgoing emails may be incorrect
If you plan to use a reverse proxy such as Nginx, and the protocol or port exposed to users differs from the ezBookkeeping web server’s settings, also configure root_url
in server
section (environment variable EBK_SERVER_ROOT_URL
), e.g. https://ezbookkeeping-demo.mayswind.net/
.
If you plan to use MySQL as the database, set type
in database
section (environment variable EBK_DATABASE_TYPE
) to mysql
, and set database host host
(e.g. mysql.domain:3306
or /var/run/mysqld/mysqld.sock
), database name name
, database user user
and user password passwd
.
If you plan to use PostgreSQL as the database, set type
in database
section (environment variable EBK_DATABASE_TYPE
) to postgres
, and set database host host
(e.g. pg.domain:5432
or /var/run/postgresql
), database name name
, database user user
and user password passwd
.
If you plan to store user avatars or transaction pictures, make sure to configure the settings under Configuration - Object Storage. Additionally, ezBookkeeping allows customization of the exchange rate source, map provider, and LLM (Large Language Model) provider. For more details, see Configuration.
ezBookkeeping reports “permission denied” on startup
The data
directory (when using the SQLite database), the storage
directory (when using the local_filesystem
object storage type), and the log
directory must all be readable and writable by the user running the ezBookkeeping process. Additionally, the conf/ezbookkeeping.ini
file must be readable by that same user.
When running via a Docker image, the ezBookkeeping process inside the container runs as a user with UID 1000 and GID 1000. When mounting external directories into the container, make sure those directories grant access permissions to this UID/GID.
Where ezBookkeeping stores its files
Most of ezBookkeeping’s data is stored in the database, while user avatars and transaction pictures are stored in object storage.
Database Files
If you’re using SQLite as the database, the default database file is located at data/ezbookkeeping.db
in the same directory as the ezBookkeeping executable file. When running via a Docker image, the default database path inside the container is /ezbookkeeping/data/ezbookkeeping.db
. You can change this path in the configuration file. For details, see db_path
in Configuration - Database.
If you’re using MySQL or PostgreSQL, database files are managed by the database system itself.
Object Storage Files
If you’re using local_filesystem
object storage type, object storage files are stored by default in the storage
directory next to the ezBookkeeping executable file. When running via a Docker image, the default path inside the container is /ezbookkeeping/storage/
. You can change this path in the configuration file. For details, see local_filesystem_path
in Configuration - Object Storage.
If you’re using minio
or webdav
object storage type, files are managed by the object storage system.
How to migrate ezBookkeeping data
If you’re using MySQL or PostgreSQL as database along with either the minio
or webdav
object storage type (or if you’re not storing user avatars or transaction pictures), then ezBookkeeping itself is stateless and requires no data migration.
Migrating the Database
- SQLite → SQLite: Simply copy the
.db
file from the database directory (default:data
) to the new location. - Other combinations (e.g. SQLite → MySQL / PostgreSQL or vice versa): After initializing a new database with ezBookkeeping, use third-party tools to migrate the data from the old database to the new one.
ezBookkeeping recommends using the SQLite database only for testing purposes. If you decide to use ezBookkeeping, it’s best to use a MySQL or PostgreSQL database to avoid potential migration costs later.
Migrating Object Storage
local_filesystem
→local_filesystem
: Simply copy all files from the object storage directory (default:storage
) to the new location.- Other combinations (e.g.
local_filesystem
→minio
/webdav
or vice versa): After initializing the new object storage with ezBookkeeping, use third-party tools to synchronize the stored files.
Does ezBookkeeping provide a desktop or mobile app
ezBookkeeping is a self-hosted software, accessed entirely through your browser. It doesn’t offer a standalone desktop or mobile app. ezBookkeeping offers tailored user interfaces for mobile and desktop devices. On your phone, you can add ezBookkeeping to your home screen, and it works and feels just like a native mobile app.
How to add ezBookkeeping to home screen of mobile phone
ezBookkeeping supports PWA (Progressive Web Apps). You can add it to your phone’s screen using your system browser. The system will automatically cache the necessary static files. When you open ezBookkeeping directly from your phone’s home screen, it will behave like a native app.
For detailed steps, see the guide.
Why can’t add a transaction
In ezBookkeeping, every transaction must set an account and a transaction category. Transaction categories are organized by transaction type, including expense category, income category and transfer category, and each transaction must be assigned a secondary category under one of these types. If you haven’t yet created any accounts or secondary categories for the relevant transaction type, you won’t be able to create a new transaction.
How to record a refund
You can create an expense transaction with a negative amount.
How to record transfer fees
You can create a separate expense transaction with the amount equal to the transfer fee.
How to record money lent to others
You can create an account which account category is “Receivables”, then create a transfer transaction from your expense account to this receivables account. If you’ve created the default transaction categories in ezBookkeeping, you can select the transaction type “Loan & Debt > Lending Money”.
How to modify an account balance
ezBookkeeping only allows users to set an initial balance when creating a new account. Once the account is created, users cannot directly modify its balance. To adjust an account’s balance, you need to record an expense or income transaction.
Alternatively, you can update the ending balance in the Reconciliation Statement page. The system will automatically calculate the difference between the expected ending balance and the actual balance, then populate the amount for you on the new transaction page.
Unable to set currency when adding a transaction
In ezBookkeeping, currency is associated with accounts, not with individual transactions. Each account has exactly one currency. If your account in the real-world supports multiple currencies, you can set its account type to “Multiple Sub-accounts”, and create a separate sub-account for each currency.
How to change the default account when adding a transaction
Go to the User Profile page, where you can update the default account used when creating new transactions.
How to create a transaction using a template
- Mobile version: Long-press the create transaction button on the bottom navigation bar in the main page. A list of your saved transaction templates will appear, and you can tap a template to create a transaction based on it.
- Desktop version: Hover over the “Add” transaction button on the transaction list page. A dropdown menu with your saved templates will appear, and you can click a template to create a transaction based on it.
How to create a transaction using AI image recognition
First, you need to configure the large language model (LLM) settings. In the llm
section, enable transaction_from_ai_image_recognition
to allow creating transactions via AI image recognition. Then, in the llm_image_recognition
section, set the llm_provider
, along with the corresponding provider’s API key, model ID, and other required settings. Make sure the specified model supports image recognition. For details, see Configuration - Large Language Model.
After setting up the large language model configuration:
- Mobile version: Long-press the create transaction button on the bottom navigation bar in the main page, then tap “AI Image Recognition” from the list that appears.
- Desktop version: Hover over the “Add” transaction button on the transaction list page, then click “AI Image Recognition” from the dropdown menu.
Scheduled transaction does not create transaction automatically
In ezBookkeeping, a scheduled transaction will automatically create a new transaction when its scheduled date arrives. The generated transaction is identical to the one created by the user. No transaction is created before the scheduled date. To ensure this works properly, make sure the ezBookkeeping server is running continuously.
Why can’t display the uploaded user avatar or transaction picture
Make sure the domain
setting in your configuration is correct. If you’re using a reverse proxy such as Nginx, and the access protocol or port number differs from what the ezBookkeeping server provides, you also need to update the root_url
setting. For details, see Configuration - Web Server. ezBookkeeping uses these settings to generate URLs for uploaded user avatars and transaction images.
If the images still don’t appear after verifying these settings, you can use the developer tool in your browser to check whether the image URLs match the configured addresses. If they don’t, review the configuration values shown in ezBookkeeping’s startup logs to ensure they match your expected settings. If not, adjust the configuration or restart ezBookkeeping.
Why doesn’t the total amount include the amount in a specific currency
When calculating the total amount across different currencies, ezBookkeeping relies on exchange rate data. Make sure that the user’s default currency and all currencies involved in the calculation are included in the current exchange rate data. For details on configuring exchange rate sources, see Exchange Rates.
Why isn’t the record removed from the database after deleting a transaction
To make it easier to recover from accidental deletions, ezBookkeeping uses logical deletion for transactions, accounts, categories, and tags. When an item is deleted, it’s only marked as deleted in the database, and the record itself is not physically removed.
Why isn’t the picture file removed from object storage after deleting a transaction picture
To make it easier to recover from accidental deletions, ezBookkeeping uses logical deletion for transaction pictures. When a transaction picture is deleted, its record in the database is only marked as deleted, and the record itself is not physically removed. Additionally, the transaction picture file in object storage is also retained.
How to modify the content of verification or password reset emails
You can directly edit the .tmpl
files located in the templates/email/
directory of the ezBookkeeping. If you’re deploying ezBookkeeping with Docker, you can mount your modified files to this directory instead. Make sure the files are readable by the user running the ezBookkeeping process.
How to modify prompts of AI image recognition and other LLM (Large Language Model) requests
You can directly edit the .tmpl
files located in the templates/prompt/
directory of the ezBookkeeping. If you’re deploying ezBookkeeping with Docker, you can mount your modified files to this directory instead. Make sure the files are readable by the user running the ezBookkeeping process.