[{"data":1,"prerenderedAt":187},["ShallowReactive",2],{"seo-verification":3,"blog-self-host-firefly-iii-on-a-vps-business-finances-under-control-en":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"slugs":9,"title":12,"excerpt":13,"readTime":14,"views":15,"isPinned":16,"publishedAt":17,"category":18,"categories":24,"featuredImage":26,"bgImage":27,"posterImage":28,"relatedSolution":26,"intro":29,"sections":30,"ctaTitle":131,"ctaBody":132,"ctaButton":133,"ctaUrl":134,"relatedPosts":135},266,"self-host-firefly-iii-on-a-vps-business-finances-under-control",{"fr":10,"en":8,"ar":11},"heberger-firefly-iii-vps","استضافة-firefly-iii-على-vps-ماليتك-المهنية-تحت-السيطرة","Self-Host Firefly III on a VPS: Business Finances Under Control","Deploy Firefly III on your VPS in 20 minutes with Docker Compose. Expense tracking, budgets, and reports — your financial data on your own server.",11,0,false,"2026-08-15T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},7,"Self-hosting","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[25],{"id":19,"name":20,"slug":21,"color":22,"icon":23},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-firefly-iii-vps-poster.svg","Keeping professional finances in a spreadsheet or a SaaS tool where you don't own your data is acceptable at the start — but when accounts multiply, clients diversify, and your accountant asks for consistent exports, you need something better. Firefly III is an open-source personal and professional finance manager (AGPL-3.0) that installs on your VPS in twenty minutes, requires no subscription, and stores your data exactly where you decide.",[31,35,46,49,71,74,77,81,125,128],{"type":32,"title":33,"body":34},"h2","Why Firefly III Instead of a SaaS Tool?","Firefly III solves three problems at once: **AGPL-3.0 license** (open, modifiable), **docker-compose** in under ten commands, data in your own PostgreSQL database. With **24,300 GitHub stars** and v6.6.6 released in July 2025, it is a mature, actively maintained project.\n\nWhat Firefly III handles for you: checking and savings accounts, credit cards, crypto wallets, monthly or annual budgets, transaction automation rules, custom categories, period\u002Fcategory reports, and bank statement imports via the **Data Importer**.",{"type":36,"title":37,"items":38},"ul","Key Features",[39,40,41,42,43,44,45],"**Multi-account management**: simultaneously manage checking, savings, credit card, and crypto wallet accounts.","**Budgets and envelopes**: set monthly budgets by category and track consumption in real time.","**Automation rules**: create rules applied automatically to new transactions.","**Advanced reports**: period\u002Faccount\u002Fcategory charts, exportable to CSV for your accountant.","**Data Importer**: import bank statements via OFX, QFX, CSV, or European bank connectors (GoCardless).","**Full REST API**: automate transaction creation from any script or third-party tool.","**Responsive mobile interface**: access your accounts from your phone via the browser.",{"type":32,"title":47,"body":48},"Server Prerequisites","Firefly III is a lightweight PHP\u002FLaravel application. Minimum requirements: a VPS with at least **1 GB of RAM** (2 GB recommended), Docker Engine ≥ 24 and Docker Compose V2, a **domain name** for TLS configuration, port **8080** accessible (Firefly III UI) and **8081** (Data Importer), **5 GB of storage** minimum.",{"type":50,"title":51,"steps":52},"steps","Installation with Docker Compose",[53,56,59,62,65,68],{"title":54,"body":55},"Step 1 — Clone the official repository","```bash\nmkdir -p \u002Fopt\u002Ffirefly && cd \u002Fopt\u002Ffirefly\ncurl -L https:\u002F\u002Fraw.githubusercontent.com\u002Ffirefly-iii\u002Fdocker\u002Fmain\u002Fdocker-compose-importer.yml \\\n  -o docker-compose.yml\ncurl -L https:\u002F\u002Fraw.githubusercontent.com\u002Ffirefly-iii\u002Ffirefly-iii\u002Fmain\u002F.env.example -o .env\ncurl -L https:\u002F\u002Fraw.githubusercontent.com\u002Ffirefly-iii\u002Fdata-importer\u002Fmain\u002F.env.example -o .importer.env\n```",{"title":57,"body":58},"Step 2 — Configure environment variables","Open `.env` and set: `DB_PASSWORD`, `APP_KEY` (exactly 32 chars — generate with `openssl rand -hex 16`), `APP_URL` (your domain), and `POSTGRES_PASSWORD`.",{"title":60,"body":61},"Step 3 — Start the containers","```bash\ndocker compose up -d\ndocker compose ps\n```\n\nThree containers should be `healthy`: `firefly-iii`, `db` (PostgreSQL), and `importer`. Firefly III waits for PostgreSQL using `depends_on: condition: service_healthy`.",{"title":63,"body":64},"Step 4 — Access the interface","Open your browser at `http:\u002F\u002F\u003CVPS_IP>:8080`. Create your admin account. The setup wizard guides you through creating your first bank account.",{"title":66,"body":67},"Step 5 — Set up Nginx with TLS","Configure Nginx as a reverse proxy with a Let's Encrypt certificate:\n\n```bash\ncertbot --nginx -d firefly.yourdomain.com\nnginx -t && systemctl reload nginx\n```\n\nThen close port 8080 in your firewall.",{"title":69,"body":70},"Step 6 — Import Your Bank Statements","The Data Importer runs on port 8081. Go to `http:\u002F\u002Flocalhost:8081` in your browser:\n\n1. Upload your bank's CSV file or connect via GoCardless (EU banks).\n2. Choose target account (the one you created in Firefly III).\n3. Click **Import** and review the mapped transactions.\n\n**Important**: configure a `Date format` matching your bank's format (e.g. `d\u002Fm\u002FY` for a French Crédit Agricole CSV).",{"type":32,"title":72,"body":73},"Set Up Budgets and Automation Rules","**Create a monthly budget:** go to **Budgets → New budget**, name the budget (e.g., \"Office Supplies\"), set the monthly amount, and link transactions to it.\n\n**Create an automation rule:** go to **Automation → Rules → New rule**, set a trigger (e.g., \"Description contains 'Amazon'\"), then set an action (\"Assign to Office Supplies category\"). Rules apply automatically to new transactions.\n\n**Export for your accountant:** go to **Export data**, select CSV format, filter by period and account.",{"type":32,"title":75,"body":76},"Schedule Automatic Backups","Firefly III stores data in PostgreSQL. Schedule a daily backup:\n\n```bash\nmkdir -p \u002Fopt\u002Ffirefly\u002Fbackups\ncat > \u002Fopt\u002Ffirefly\u002Fbackup.sh \u003C\u003C 'EOF'\n#!\u002Fbin\u002Fbash\nDATE=$(date +%Y%m%d)\ndocker compose -f \u002Fopt\u002Ffirefly\u002Fdocker-compose.yml exec -T db \\\n  pg_dump -U firefly firefly | gzip > \u002Fopt\u002Ffirefly\u002Fbackups\u002Ffirefly-$DATE.sql.gz\nfind \u002Fopt\u002Ffirefly\u002Fbackups -name '*.sql.gz' -mtime +30 -delete\nEOF\nchmod +x \u002Fopt\u002Ffirefly\u002Fbackup.sh\necho '0 3 * * * root \u002Fopt\u002Ffirefly\u002Fbackup.sh' >> \u002Fetc\u002Fcron.d\u002Ffirefly-backup\n```",{"type":78,"title":79,"body":80},"tip","Invalid APP_KEY: The Most Common Error","If Firefly III shows a blank page or authentication fails, check `APP_KEY` in your `.env` first. Two strict rules: exactly **32 characters**, and **never change it** after first launch — changing it invalidates all sessions and corrupts encrypted stored data.\n\nGenerate a valid key: `openssl rand -hex 16`",{"type":82,"title":83,"headers":84,"rows":89},"comparison","Firefly III vs YNAB vs Budgea",[85,86,87,88],"Criterion","Firefly III (self-hosted)","YNAB","Budgea",[90,95,100,105,109,113,117,121],[91,92,93,94],"Price","Free (VPS cost ~$5-10\u002Fmo)","~$99\u002Fyear","~€60\u002Fyear",[96,97,98,99],"Data hosting","Your VPS (full sovereignty)","US servers (Plaid)","FR servers",[101,102,103,104],"Bank import","CSV\u002FOFX + GoCardless (EU)","Direct connection (US)","Direct connection (FR)",[106,107,107,108],"Automation rules","Yes","No",[110,111,112,108],"REST API","Yes (full)","Not public",[114,107,115,116],"Multi-currency","No (USD only)","Yes (partial)",[118,119,120,120],"Customizable reports","Yes (advanced)","Limited",[122,123,124,107],"Native mobile app","No (responsive web)","Yes (iOS\u002FAndroid)",{"type":32,"title":126,"body":127},"Troubleshoot Common Issues","**Firefly III shows a blank page or 500 error**: check container logs with `docker compose logs firefly-iii`. Most common cause: invalid `APP_KEY` or PostgreSQL not yet ready.\n\n**Data Importer rejects the CSV**: check that your bank's CSV uses comma separators. Convert with `sed 's\u002F;\u002F,\u002Fg' import.csv > import-comma.csv`.\n\n**Duplicate transactions after import**: enable deduplication in the Data Importer by checking **Ignore duplicates**.\n\n**Connection refused to database on startup**: verify that `POSTGRES_PASSWORD` in `.env` matches `DB_PASSWORD`.",{"type":32,"title":129,"body":130},"Update Firefly III","```bash\ncd \u002Fopt\u002Ffirefly\ndocker compose pull\ndocker compose up -d\n```\n\nDocker Compose downloads the new images and restarts with the updated version. Database migrations run automatically on first startup. **Before any major update**, take a manual PostgreSQL backup.","A Professional VPS for Your Financial Management","Firefly III runs comfortably on 1 GB of RAM. Our professional VPS plans include daily snapshots — your financial data stays yours, backed up and accessible anywhere.","See our professional plans","\u002Fsolutions\u002Fprofessionnels",[136,153,169],{"id":137,"slug":138,"slugs":139,"title":142,"excerpt":143,"readTime":144,"views":15,"isPinned":16,"publishedAt":145,"category":146,"categories":147,"featuredImage":26,"bgImage":27,"posterImage":149,"relatedSolution":150},173,"self-host-actual-budget-on-a-vps-your-private-ynab-alternative",{"fr":140,"en":138,"ar":141},"self-host-actual-budget-vps","استضافة-actual-budget-على-vps-بديل-ynab-الخاص-بك","Self-Host Actual Budget on a VPS: Your Private YNAB Alternative","Self-host Actual Budget on a VPS — an MIT-licensed, zero-based budgeting app with bank sync, multi-device access and end-to-end encrypted sync. No subscription.",4,"2026-07-07T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},[148],{"id":19,"name":20,"slug":21,"color":22,"icon":23},"\u002Fblog\u002Fcovers\u002Fself-host-actual-budget-vps-poster.svg",{"categorySlug":151,"appSlug":152},"erp-business-management","actual-budget",{"id":154,"slug":155,"slugs":156,"title":159,"excerpt":160,"readTime":161,"views":15,"isPinned":16,"publishedAt":162,"category":163,"categories":164,"featuredImage":26,"bgImage":27,"posterImage":166,"relatedSolution":167},87,"host-listmonk-on-your-own-vps",{"fr":157,"en":155,"ar":158},"heberger-listmonk","استضافة-listmonk-على-خادمك-الافتراضي-الخاص-vps","Host Listmonk on Your Own VPS","Send your newsletters without a monthly subscription: deploy Listmonk on your VPS with PostgreSQL, SMTP and SSL. Complete self-hosting guide.",3,"2026-03-25T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},[165],{"id":19,"name":20,"slug":21,"color":22,"icon":23},"\u002Fblog\u002Fcovers\u002Fheberger-listmonk-poster.svg",{"categorySlug":21,"appSlug":168},"listmonk",{"id":170,"slug":171,"slugs":172,"title":175,"excerpt":176,"readTime":161,"views":15,"isPinned":16,"publishedAt":177,"category":178,"categories":184,"featuredImage":26,"bgImage":27,"posterImage":186,"relatedSolution":26},113,"automate-your-vps-backups-with-restic",{"fr":173,"en":171,"ar":174},"sauvegardes-restic-vps","أتمتة-نسخ-خادمك-vps-الاحتياطية-باستخدام-restic","Automate Your VPS Backups with Restic","Automate your VPS backups with Restic: encrypted snapshots, deduplication and shipping to S3 or any object backend.","2026-02-27T00:00:00+00:00",{"id":179,"name":180,"slug":181,"color":182,"icon":183},8,"Security & Monitoring","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[185],{"id":179,"name":180,"slug":181,"color":182,"icon":183},"\u002Fblog\u002Fcovers\u002Fsauvegardes-restic-vps-poster.svg",1787581012089]