Skip to content

Deploying MyFin Budget

Introduction

MyFin is a self-hosted personal finance management application designed to give you complete control over your financial data. Unlike cloud-based alternatives that store your sensitive financial information on third-party servers, MyFin keeps everything on your own infrastructure while providing powerful budgeting, expense tracking, and financial planning tools.

Built with a modern tech stack featuring a Go backend and React frontend, MyFin offers a responsive interface that works seamlessly across desktop and mobile browsers. The application focuses on simplicity and privacy, making personal finance management accessible without sacrificing your data sovereignty.

Key highlights of MyFin:

  • Complete Privacy: All your financial data stays on your own server, never shared with third parties
  • Budget Management: Create and track budgets with visual progress indicators and alerts
  • Transaction Tracking: Log income and expenses with categories, tags, and notes
  • Multiple Accounts: Manage bank accounts, credit cards, cash, and investment accounts
  • Visual Analytics: Charts and graphs to understand spending patterns and financial trends
  • Goal Tracking: Set and monitor financial goals like savings targets
  • Import/Export: Import transactions from bank exports and export data for backup
  • Multi-Currency: Support for multiple currencies with conversion rates
  • Recurring Transactions: Automate regular income and expense entries

This guide walks through deploying MyFin on Klutch.sh using Docker.

Why Deploy MyFin on Klutch.sh

Deploying MyFin on Klutch.sh provides advantages for managing your personal finances:

Data Privacy: Your financial data remains on infrastructure you control, protected by Klutch.sh’s security measures rather than shared with commercial finance platforms.

Always Accessible: Access your finances from anywhere with an internet connection. Your budget and transaction history are available 24/7.

Simplified Deployment: Klutch.sh handles container orchestration automatically. Push your configuration to GitHub and your finance tracker deploys seamlessly.

HTTPS by Default: Automatic SSL certificates protect your sensitive financial data in transit without manual certificate configuration.

Persistent Storage: Your transaction history, budgets, and account data persist in attached volumes, surviving container restarts.

Secure Environment Variables: Store database credentials and secrets securely through Klutch.sh’s environment management.

Prerequisites

Before deploying MyFin 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 concepts
  • (Optional) A custom domain for your finance application

Understanding MyFin Architecture

MyFin uses a modern, containerized architecture:

Go Backend: The API server handles all business logic, authentication, and database operations. It’s lightweight and efficient.

React Frontend: A responsive single-page application provides the user interface, communicating with the backend via REST API.

PostgreSQL Database: All financial data is stored in PostgreSQL for reliability and data integrity.

Single Container: MyFin packages frontend and backend in a single container for simplified deployment.

Preparing Your Repository

Create a GitHub repository for your MyFin deployment.

Repository Structure

myfin-deploy/
├── Dockerfile
└── .dockerignore

Creating the Dockerfile

FROM ghcr.io/codebyalex/myfin:latest
# Environment configuration
ENV DATABASE_URL=${DATABASE_URL}
ENV JWT_SECRET=${JWT_SECRET}
ENV PORT=8080
EXPOSE 8080

Creating the .dockerignore File

.git
.github
*.md
LICENSE
.gitignore
.DS_Store

Deploying MyFin on Klutch.sh

    Generate Security Keys

    Before deployment, generate a secure JWT secret:

    Terminal window
    openssl rand -hex 32

    Save this key for environment configuration.

    Push Your Repository to GitHub

    Initialize and push your configuration repository to GitHub.

    Create a New Project on Klutch.sh

    Navigate to the Klutch.sh dashboard and create a project named “myfin” or “personal-finance”.

    Create a New App

    Create a new app and connect your GitHub repository with the MyFin Dockerfile.

    Configure HTTP Traffic

    MyFin serves its web interface over HTTP:

    • Select HTTP as the traffic type
    • Set the internal port to 8080

    Set Environment Variables

    Configure required environment variables:

    VariableValue
    DATABASE_URLpostgres://user:password@host:5432/myfin
    JWT_SECRETYour generated secret key
    PORT8080

    Attach Persistent Volumes

    Configure storage for application data:

    Mount PathRecommended SizePurpose
    /app/data1 GBApplication data and uploads

    Deploy Your Application

    Click Deploy to build and start your MyFin instance.

    Access Your Finance Tracker

    Once deployed, access MyFin at https://your-app-name.klutch.sh. Create your first user account to begin tracking finances.

Initial Setup

Creating Your Account

On first access:

  1. Click the registration button
  2. Enter your email and a strong password
  3. Complete the account setup wizard
  4. Configure your base currency

Setting Up Accounts

Create accounts to track different financial sources:

  1. Navigate to Accounts section
  2. Add accounts for each bank account, credit card, or cash source
  3. Set initial balances
  4. Configure account types and currencies

Creating Categories

Organize transactions with categories:

  1. Go to Settings > Categories
  2. Create income categories (salary, investments, etc.)
  3. Create expense categories (housing, food, transport, etc.)
  4. Add subcategories for detailed tracking

Budgeting

Creating Budgets

Set up monthly budgets:

  1. Navigate to the Budgets section
  2. Create budget for each spending category
  3. Set monthly limits
  4. Enable alerts for budget thresholds

Tracking Progress

Monitor your budget throughout the month:

  • Visual progress bars show spending vs. budget
  • Color-coded indicators warn of overspending
  • Dashboard overview shows total budget status

Transaction Management

Adding Transactions

Log your financial activity:

  1. Click the add transaction button
  2. Select account and category
  3. Enter amount and date
  4. Add optional notes and tags
  5. Mark as recurring if applicable

Recurring Transactions

Automate regular entries:

  1. Create a transaction and mark as recurring
  2. Set frequency (daily, weekly, monthly, yearly)
  3. Configure start and end dates
  4. System automatically creates future entries

Importing Transactions

Import from bank exports:

  1. Export transactions from your bank (CSV format)
  2. Use MyFin’s import feature
  3. Map columns to MyFin fields
  4. Review and confirm imports

Financial Analytics

Dashboard Overview

The main dashboard displays:

  • Current month spending summary
  • Budget progress indicators
  • Recent transactions
  • Account balances

Reports and Charts

Analyze your finances:

  • Spending by category charts
  • Income vs. expense trends
  • Monthly comparison views
  • Custom date range reports

Goal Tracking

Set and monitor financial goals:

  1. Create savings goals with target amounts
  2. Link to specific accounts
  3. Track progress over time
  4. Celebrate milestones

Production Best Practices

Security Recommendations

  • Use strong, unique passwords for user accounts
  • Rotate JWT secrets periodically
  • Keep database credentials secure in environment variables
  • Enable HTTPS (automatic on Klutch.sh)
  • Regular security updates

Backup Strategy

Protect your financial data:

  1. Schedule regular database backups
  2. Export transaction data periodically
  3. Store backups in secure external storage
  4. Test restore procedures

Data Management

  • Regularly reconcile accounts with bank statements
  • Archive old transactions annually
  • Clean up unused categories
  • Review and update budgets monthly

Troubleshooting

Cannot Log In

  • Verify correct email and password
  • Check if account exists
  • Clear browser cache and cookies
  • Verify JWT_SECRET is consistent

Database Connection Errors

  • Confirm DATABASE_URL format is correct
  • Verify database server is accessible
  • Check database credentials
  • Ensure database exists

Missing Transactions

  • Verify transactions were saved (check for errors)
  • Check date filters on transaction list
  • Confirm account selection
  • Review category filters

Performance Issues

  • Check database size and optimize if needed
  • Verify sufficient resources in Klutch.sh
  • Clear old cached data
  • Review transaction volume

Additional Resources

Conclusion

Deploying MyFin on Klutch.sh gives you a privacy-focused personal finance manager without the complexity of self-hosting. Your sensitive financial data stays under your control while remaining accessible from anywhere.

The combination of MyFin’s intuitive interface for budgeting and expense tracking with Klutch.sh’s reliable hosting creates a secure, always-available finance management solution. Whether you’re tracking daily expenses, planning savings goals, or analyzing spending patterns, MyFin on Klutch.sh provides the foundation for better financial awareness and control.