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└── .dockerignoreCreating the Dockerfile
FROM ghcr.io/codebyalex/myfin:latest
# Environment configurationENV DATABASE_URL=${DATABASE_URL}ENV JWT_SECRET=${JWT_SECRET}ENV PORT=8080
EXPOSE 8080Creating the .dockerignore File
.git.github*.mdLICENSE.gitignore.DS_StoreDeploying MyFin on Klutch.sh
- Select HTTP as the traffic type
- Set the internal port to 8080
Generate Security Keys
Before deployment, generate a secure JWT secret:
openssl rand -hex 32Save 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:
Set Environment Variables
Configure required environment variables:
| Variable | Value |
|---|---|
DATABASE_URL | postgres://user:password@host:5432/myfin |
JWT_SECRET | Your generated secret key |
PORT | 8080 |
Attach Persistent Volumes
Configure storage for application data:
| Mount Path | Recommended Size | Purpose |
|---|---|---|
/app/data | 1 GB | Application 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:
- Click the registration button
- Enter your email and a strong password
- Complete the account setup wizard
- Configure your base currency
Setting Up Accounts
Create accounts to track different financial sources:
- Navigate to Accounts section
- Add accounts for each bank account, credit card, or cash source
- Set initial balances
- Configure account types and currencies
Creating Categories
Organize transactions with categories:
- Go to Settings > Categories
- Create income categories (salary, investments, etc.)
- Create expense categories (housing, food, transport, etc.)
- Add subcategories for detailed tracking
Budgeting
Creating Budgets
Set up monthly budgets:
- Navigate to the Budgets section
- Create budget for each spending category
- Set monthly limits
- 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:
- Click the add transaction button
- Select account and category
- Enter amount and date
- Add optional notes and tags
- Mark as recurring if applicable
Recurring Transactions
Automate regular entries:
- Create a transaction and mark as recurring
- Set frequency (daily, weekly, monthly, yearly)
- Configure start and end dates
- System automatically creates future entries
Importing Transactions
Import from bank exports:
- Export transactions from your bank (CSV format)
- Use MyFin’s import feature
- Map columns to MyFin fields
- 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:
- Create savings goals with target amounts
- Link to specific accounts
- Track progress over time
- 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:
- Schedule regular database backups
- Export transaction data periodically
- Store backups in secure external storage
- 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.