Deploying ezBookkeeping
Introduction
ezBookkeeping is a lightweight, self-hosted personal finance management application designed for simplicity and ease of use. It provides essential bookkeeping features without the complexity of full accounting software, making it perfect for individuals and families who want to track their income, expenses, and financial goals.
Built with Go for the backend and Vue.js for the frontend, ezBookkeeping offers a fast, responsive experience across desktop and mobile devices. The application supports multiple accounts, categories, tags, and currencies, allowing users to organize their finances according to their preferences.
Key highlights of ezBookkeeping:
- Multi-Account Support: Track multiple bank accounts, credit cards, and cash
- Customizable Categories: Create expense and income categories that match your lifestyle
- Multi-Currency: Support for multiple currencies with automatic exchange rate updates
- Transaction Tags: Add tags for additional organization and filtering
- Data Export: Export your data for backup or analysis
- Mobile-Friendly: Responsive design works on any device
- Two-Factor Authentication: Secure your financial data with 2FA
- Lightweight: Minimal resource requirements and fast performance
- Privacy-Focused: All data stays on your server
- Open Source: Licensed under MIT for full transparency
This guide walks through deploying ezBookkeeping on Klutch.sh using Docker, configuring persistent storage, and setting up the application for secure financial tracking.
Why Deploy ezBookkeeping on Klutch.sh
Deploying ezBookkeeping on Klutch.sh provides several advantages:
Always Accessible: Access your financial records from anywhere with an internet connection.
Secure by Default: HTTPS encryption protects your sensitive financial data in transit.
Persistent Storage: Your transaction history and settings survive container updates and restarts.
Private Hosting: Unlike cloud finance apps, your data remains under your control.
Automatic Backups: Combine with volume backups to protect your financial records.
GitHub Integration: Version control your configuration and deploy automatically on changes.
Prerequisites
Before deploying ezBookkeeping on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your configuration
- Basic familiarity with Docker and containerization
- (Optional) A custom domain for your finance application
Understanding ezBookkeeping Architecture
ezBookkeeping uses a straightforward architecture:
Go Backend: Handles API requests, authentication, and business logic with minimal resource usage.
Vue.js Frontend: Provides a responsive single-page application for the user interface.
SQLite Database: Stores all data in a single file, simplifying backup and migration.
Static Assets: Embedded in the binary for simple deployment.
Preparing Your Repository
Create a GitHub repository with your ezBookkeeping configuration.
Repository Structure
ezbookkeeping-deploy/├── Dockerfile├── config.ini└── .dockerignoreCreating the Dockerfile
FROM mayswind/ezbookkeeping:latest
# Set environment variablesENV EBK_SERVER_MODE=productionENV EBK_DATABASE_TYPE=sqlite3ENV EBK_DATABASE_PATH=/data/ezbookkeeping.db
# Create data directoryRUN mkdir -p /data
# Expose web interfaceEXPOSE 8080
# Health checkHEALTHCHECK --interval=30s --timeout=10s --start-period=15s --retries=3 \ CMD wget --no-verbose --tries=1 --spider http://localhost:8080/api/v1/ping || exit 1Configuration File
Create a config.ini file for additional settings:
[server]mode = "production"port = 8080
[database]type = "sqlite3"path = "/data/ezbookkeeping.db"
[security]secret_key = "${SECRET_KEY}"enable_two_factor = true
[log]level = "info"Environment Variables Reference
| Variable | Required | Description |
|---|---|---|
EBK_SERVER_MODE | No | Server mode: production or development |
EBK_SERVER_PORT | No | HTTP port (default: 8080) |
EBK_DATABASE_TYPE | No | Database type: sqlite3, mysql, or postgres |
EBK_DATABASE_PATH | Yes* | SQLite database file path |
EBK_SECRET_KEY | Yes | Secret key for session encryption |
EBK_LOG_LEVEL | No | Logging level: debug, info, warn, error |
Deploying ezBookkeeping on Klutch.sh
- Select HTTP as the traffic type
- Set the internal port to 8080
Generate a Secret Key
Create a secure secret key for session management:
openssl rand -hex 32Save this key securely for environment variable configuration.
Push Your Repository to GitHub
Commit your Dockerfile and configuration to your GitHub repository.
Create a New Project on Klutch.sh
Navigate to the Klutch.sh dashboard and create a new project named “ezbookkeeping” or “finance”.
Create a New App
Create a new app within your project and connect your GitHub repository.
Configure HTTP Traffic
Set up HTTP traffic:
Set Environment Variables
Configure the required environment variables:
| Variable | Value |
|---|---|
EBK_SERVER_MODE | production |
EBK_SECRET_KEY | Your generated secret key |
EBK_DATABASE_TYPE | sqlite3 |
EBK_DATABASE_PATH | /data/ezbookkeeping.db |
Attach Persistent Volumes
| Mount Path | Size | Purpose |
|---|---|---|
/data | 1 GB | SQLite database and application data |
Deploy Your Application
Click Deploy to build and launch ezBookkeeping.
Access Your Application
Once deployed, access ezBookkeeping at your app URL. Create your first user account to get started.
Initial Setup
Creating Your First Account
- Navigate to your ezBookkeeping URL
- Click “Register” to create a new user
- Set up your username and a strong password
- Enable two-factor authentication for additional security
Setting Up Accounts
Create accounts to represent your financial holdings:
- Checking Account: Your primary bank account
- Savings: Savings or money market accounts
- Credit Cards: Track credit card spending and payments
- Cash: Physical cash on hand
- Investment: Brokerage accounts (track balance only)
Configuring Categories
Set up expense and income categories that match your budget:
Income Categories:
- Salary
- Freelance
- Investments
- Gifts
Expense Categories:
- Housing
- Transportation
- Food & Dining
- Utilities
- Entertainment
- Healthcare
Currency Settings
If you deal with multiple currencies:
- Navigate to Settings
- Select your default currency
- Add additional currencies as needed
- Enable automatic exchange rate updates
Daily Usage
Recording Transactions
For each transaction, record:
- Date and time
- Account
- Category
- Amount
- Notes (optional)
- Tags (optional)
Transfers Between Accounts
Track money movement between your accounts:
- Credit card payments
- Savings transfers
- Investment contributions
Using Tags
Tags provide additional filtering beyond categories:
- Project-based expenses
- Vacation spending
- Tax-deductible items
- Reimbursable expenses
Data Management
Exporting Data
Export your data regularly for backup:
- Navigate to Data Management
- Select export format (CSV or JSON)
- Choose date range
- Download the export file
Importing Data
Import transactions from other sources:
- Prepare your data in the required format
- Navigate to Import
- Upload your file
- Map columns to fields
- Review and confirm import
Security Best Practices
Enable Two-Factor Authentication
Protect your financial data with 2FA:
- Go to Security Settings
- Enable two-factor authentication
- Scan QR code with authenticator app
- Store backup codes securely
Strong Passwords
Use a strong, unique password for your ezBookkeeping account. Consider using a password manager.
Regular Backups
Schedule regular backups of your database volume to prevent data loss.
Troubleshooting
Cannot Log In
- Verify username and password
- Check 2FA code if enabled
- Clear browser cache and cookies
- Review application logs
Database Errors
- Ensure persistent volume is properly mounted
- Check file permissions on database directory
- Verify disk space availability
Slow Performance
- Review database size and consider optimization
- Check server resource allocation
- Monitor for excessive logging
Additional Resources
Conclusion
Deploying ezBookkeeping on Klutch.sh provides a private, secure platform for personal finance management. The combination of ezBookkeeping’s simplicity and Klutch.sh’s reliable hosting creates an ideal solution for tracking your financial life without relying on third-party services that may access your data.
With multi-account support, customizable categories, and two-factor authentication, ezBookkeeping offers the essential features needed for effective personal bookkeeping while respecting your privacy.