[{"data":1,"prerenderedAt":117},["ShallowReactive",2],{"$f139elmbn0zhtp":3},{"site":4,"app":16,"alternatives":69,"compose":112,"log":113,"changelog":114},{"hourly_rate_usd":5,"break_even_window_mo":6,"reference_env":7,"attribution":8},20,18,"Fresh Debian 12, Docker + Compose preinstalled, 2 GB RAM \u002F 2 vCPU ($5-class VPS)",{"caniselfhostit":9},{"name":10,"url":11,"repo":12,"license":13,"author":14,"note":15},"caniselfhostit.com","https:\u002F\u002Fcaniselfhostit.com","https:\u002F\u002Fgithub.com\u002Fcaniselfhostit\u002Fcaniselfhostit","MIT","Jashanpreet Singh","Capability data (app → replacement pairings, pricing snapshots) seeded from this dataset. They answer 'can you run it, and how' — go there for guided installs.",{"id":17,"name":18,"domain":19,"category":20,"price_usd_mo":21,"price_plan":22,"price_unit":23,"price_source":24,"price_checked":25,"jobs":26,"verdict":31,"verdict_reason":32,"what_you_lose":33,"alternatives":37,"economics":40,"hardware_tier":44,"provenance":45,"verified":48,"compose":56,"links":59,"derived":61},"ynab","YNAB","ynab.com","money",9.08,"Annual","flat","https:\u002F\u002Fwww.ynab.com\u002Fpricing","2026-08-05",[27,28,29,30],"envelope (zero-based) budgeting","bank sync","multi-device sync","spending reports","YES","Actual does zero-based budgeting with your data in a SQLite file you can read, and bank sync via SimpleFIN costs less than one month of YNAB per year.",[34,35,36],"YNAB's first-party bank sync — Actual needs SimpleFIN Bridge (~$1.50\u002Fmo) or GoCardless for EU banks, one more account to hold","The YNAB method community, workshops and support humans","Nobody to email when a sync breaks the night before rent is due",[38,39],"actual-budget","firefly-iii",{"vps_share_usd_mo":41,"storage_usd_mo":42,"maint_min_mo":43},0.6,0,15,"pi",{"capability_seed":46,"decision_layer":47},"caniselfhostit","original",{"by":49,"at":50,"protocol":51,"setup_min":52,"assistant":53,"evidence":54,"what_broke":57},"zernonia","2026-08-10","v1",40,"claude-code",[55,56],"logs\u002Fynab-actual-budget.md","compose\u002Fynab-actual-budget.yml",[58],"Silent exit where IPv6 is disabled: the server binds '::' by default, logs 'Listening' and then exits cleanly — ACTUAL_HOSTNAME=0.0.0.0 fixes it, and the clean exit code makes it a genuinely nasty diagnosis",{"caniselfhostit":60},"https:\u002F\u002Fcaniselfhostit.com\u002Fynab",{"hourly_rate_usd":5,"self_host_cost_usd_mo":62,"net_saving_usd_mo":63,"setup_cost_usd":64,"break_even_months":65,"break_even_date":66,"markup_index":67,"primary_abandoned":68,"verdict_stale":68},5.6,3.48,13.33,3.83,"2026-12-05",1.62,false,[70,92],{"id":38,"name":71,"tagline":72,"repo":73,"site":74,"license":13,"category":75,"resources":76,"provenance":81,"metrics":82},"Actual Budget","Zero-based envelope budgeting in one container, with the budget file on your disk and no subscription attached to your money.","actualbudget\u002Factual","https:\u002F\u002Factualbudget.org","money-home",{"ram_min_mb":77,"disk_gb":78,"arm64":79,"containers":80,"external_db":68},512,5,true,1,{"capability_seed":46,"decision_layer":47},{"id":38,"stars":83,"last_commit":84,"latest_release":85,"docker_pulls":89,"open_issues":90,"fetched_at":91},28076,"2026-08-10T21:39:33Z",{"tag":86,"published_at":87,"url":88},"v26.8.1","2026-08-07T21:17:24Z","https:\u002F\u002Fgithub.com\u002Factualbudget\u002Factual\u002Freleases\u002Ftag\u002Fv26.8.1",null,230,"2026-08-11T03:55:15.985Z",{"id":39,"name":93,"tagline":94,"repo":95,"site":96,"license":97,"category":75,"resources":98,"provenance":102,"metrics":103},"Firefly III","A full transaction ledger for household money, with budgets, rules and reports, and imports you drive yourself.","firefly-iii\u002Ffirefly-iii","https:\u002F\u002Fwww.firefly-iii.org","AGPL-3.0",{"ram_min_mb":99,"disk_gb":100,"arm64":79,"containers":101,"external_db":79},2048,10,3,{"capability_seed":46,"decision_layer":47},{"id":39,"stars":104,"last_commit":105,"latest_release":106,"docker_pulls":89,"open_issues":110,"fetched_at":111},24281,"2026-08-10T05:07:44Z",{"tag":107,"published_at":108,"url":109},"v6.6.6","2026-07-01T19:09:14Z","https:\u002F\u002Fgithub.com\u002Ffirefly-iii\u002Ffirefly-iii\u002Freleases\u002Ftag\u002Fv6.6.6",157,"2026-08-11T03:55:20.931Z","# Actual Budget — local-first budgeting server (replaces YNAB)\nservices:\n  actual:\n    image: actualbudget\u002Factual-server:latest\n    container_name: actual\n    restart: unless-stopped\n    environment:\n      # The server binds \"::\" by default and exits silently where IPv6 is disabled\n      # (CI runners, some VPS images). Bind IPv4 explicitly.\n      ACTUAL_HOSTNAME: 0.0.0.0\n    ports:\n      - \"5006:5006\"\n    volumes:\n      - actual-data:\u002Fdata\n    healthcheck:\n      test: [\"CMD-SHELL\", \"node -e \\\"fetch('http:\u002F\u002Flocalhost:5006').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))\\\"\"]\n      interval: 5s\n      timeout: 5s\n      retries: 24\n      start_period: 20s\n\nvolumes:\n  actual-data:\n","# Timed setup log: YNAB → Actual Budget\n\n**Protocol:** v1 · **Verified by:** zernonia · **Date:** 2026-08-10\n**Assistant:** claude-code · **Environment:** containerized runner, 2 vCPU class, Docker 29.3 \u002F Compose v5.1\n\n## Timeline\n\n| Step | Time |\n|---|---|\n| Draft compose (one container) | 6 min |\n| **Boot #1 failed** — container exits cleanly ~2 s after \"Listening on :::5006\" (see What broke) | 15 min to diagnose |\n| Add `ACTUAL_HOSTNAME: 0.0.0.0`, re-up | 2 min |\n| **Boot #2: healthy in 6 s (measured, `compose up --wait`)** | 1 min |\n| Core workflow: set server password, create budget file, add account + transactions | 12 min |\n| Re-run from clean volumes | 4 min |\n| **Total: ~40 min** | |\n\n## Measurements\n\n- Boot to healthy: **6 s** · 1 container · idle RAM ~120 MB — Raspberry Pi territory\n\n## What broke\n\n1. **Silent exit where IPv6 is disabled.** The server binds `::` by default; on hosts with\n   IPv6 off (CI runners, some hardened VPS images) it logs \"Listening on :::5006\" and then\n   exits with code 0 — no error, no hint. `ACTUAL_HOSTNAME=0.0.0.0` fixes it. This one cost\n   real diagnostic time because a clean exit looks like success everywhere except `docker ps`.\n\n## Verdict-relevant notes\n\n- Envelope budgeting, reports, multi-device via the server: covered. Your budget is a SQLite\n  file you can copy, which is the whole philosophical pitch.\n- Bank sync is the honest asterisk: SimpleFIN Bridge (~$1.50\u002Fmo, US\u002FCA) or GoCardless (EU)\n  — one more account, and it's the part most likely to need the occasional poke.\n",[115],{"date":50,"app":17,"from":89,"to":31,"reason":116},"Initial verdict: Actual + SimpleFIN does the method for a tenth of the price.",1786459422318]