FreshRSS vs Miniflux on a Budget VPS: Real Resource and Cost Numbers

Third-party RSS services have thinned out over the years: the survivors either charge a subscription or get shut down. Running your own reader on a small VPS removes that dependency for a few dollars a month and keeps your full reading history private. The two credible open-source options are FreshRSS and Miniflux, and they have very different resource profiles. This breakdown prices both on real hardware tiers, models the recurring costs, and shows where the money actually goes.

The short version: a feed reader is a database workload, not a CPU workload. RAM and disk latency matter, cores mostly do not. Both apps fit on a 1 GB plan for a single user, and both struggle on a 512 MB plan once the database cache starts competing with the PHP or Go runtime for memory.

FreshRSS vs Miniflux: Measured Resource Profiles

Miniflux is a single compiled Go binary backed by PostgreSQL. Steady-state memory on a 1 vCPU / 1 GB instance typically sits around 100–200 MB, of which PostgreSQL accounts for most of the resident set once shared buffers are warmed. Cold starts are near-instant, and there is no language runtime to tune. It is the leanest option if you never plan to touch the code.

FreshRSS is a PHP application that runs under PHP-FPM with MySQL/MariaDB, SQLite, or PostgreSQL. A typical worker pool of four to six children adds 40–60 MB per process under load, so budget 1 GB minimum and 2 GB if the database shares the host with a web server. In exchange you get a mature web UI, extension support, and a client API that nearly every native reader app understands.

SQLite is the quiet winner for single-user installs of either app: no separate database process and no extra 80–150 MB of RAM. The tradeoff is write locking, which only matters if several clients poll the API at once. For one person with a phone and a laptop, SQLite on 512 MB–1 GB is workable.

Typical Footprint by Plan Size

The table below reflects observed steady-state usage for a single user with 100–200 feeds polled hourly, no image caching, and 90-day retention. Numbers are ranges because retention settings and database choice move them by 20–30%.

PlanMonthly priceMiniflux + PostgresFreshRSS + MariaDBVerdict
1 vCPU / 512 MB / 10 GB$2.50–$3.50Works, tight with PostgresOOM risk under cron overlapSQLite only
1 vCPU / 1 GB / 25 GB NVMe$3.00–$5.00~150 MB resident, comfortable~350–450 MB, comfortableSweet spot
2 vCPU / 2 GB / 50 GB NVMe$5.00–$9.00Overkill for one userRoom for 10+ usersShared/family
2 vCPU / 4 GB / 80 GB NVMe$10–$16WastefulOnly if you archive imagesSkip

Notice how narrow the useful band is. The jump from 1 GB to 2 GB roughly doubles the price for a workload that will not use the extra memory unless you add users or enable image archiving. Right-sizing here means buying the 1 GB tier and spending the difference on backups instead.

What Actually Drives Load

Feed polling, not page views, is the dominant cost. Each subscribed feed is fetched on a schedule; 200 feeds polled hourly is 4,800 outbound HTTP requests per day, most of which return a 304 Not Modified after a conditional request. CPU spent parsing is negligible. The real work is network round-trips, DNS lookups, and small database writes when new items appear.

Where budgets break is full-text retrieval and image caching. If your reader downloads article images to serve them locally, storage and bandwidth climb by gigabytes per month and, more importantly, writes become large sequential I/O that a $3 plan’s shared NVMe will feel. A 200-feed list with image caching can grow 3–8 GB per month; the same list without it grows maybe 150–400 MB.

API traffic from mobile clients is the second-order cost: each refresh is a burst of index queries, and ten clients polling every 15 minutes will do more database work than the fetcher itself. If CPU sits at 20–40% of one core, look at client polling intervals before blaming the feeds.

Concrete Monthly Cost Model

Here is a realistic single-user Miniflux deployment with PostgreSQL, no image caching, and a 100-feed list. Prices reflect the low end of reputable providers; the high end of each range is what you pay when you want a control panel and managed snapshots.

Line itemLowHighNotes
VPS (1 vCPU / 1 GB / 25 GB)$3.00$5.00Flat monthly, no metering
Automated backups$0.60$1.0020–25% of base, typical add-on
Domain, amortised$0.80$1.10$10–13/year at a cheap registrar
TLS (Let’s Encrypt)$0.00$0.00Automated via ACME client
Object storage for DB dumps$0.05$0.152–6 GB of compressed dumps
Total~$4.45~$7.25

The case sharpens the moment you co-locate: a wiki, uptime dashboard, or status page adds 80–200 MB and no meaningful CPU, taking the effective cost per service under $2.

Storage and Backup Planning

Feed databases stay small if you prune. Both apps offer retention rules that delete read items after a configurable window. Keeping 90 days for 200 feeds lands under 2 GB; keeping everything forever passes 10 GB within a year and slows every backup. Set retention to 30 days if you rarely re-read old items, and keep an offline export for anything permanent.

Back up the database, not the cache or the image directory. A nightly pg_dump of a 1–2 GB database compresses to a few hundred megabytes at most, often far less, and restores in under a minute. Push it to object storage at $0.005–$0.023 per GB-month, or to a second provider’s cheap bucket so a single account suspension cannot take both copies.

One detail worth doing: back up the cron configuration too. The most common post-restore failure is a working reader that never fetches again because the timer was not in the backup. For providers whose low-end tiers include real NVMe and snapshots, see the budget VPS comparison table.

Installation and Maintenance Reality

Miniflux installs in minutes from a package or a single binary, needs PostgreSQL, and is configured almost entirely through environment variables. FreshRSS installs like any PHP application and behaves well behind Nginx and PHP-FPM. Neither requires Docker, though both run fine in a container if you prefer isolated, rollback-friendly updates.

Ongoing upkeep is light: update the package monthly, watch disk usage, and confirm the fetcher is alive. The most common failure mode is silent cron breakage — feeds stop updating and nobody notices for days. Add a check that alerts if no new items arrive for 48 hours, and a second check that the process is running at all. Uptime monitors with a heartbeat endpoint do this for free.

Getting Articles Onto Your Devices

Both readers expose a web interface and, more importantly, a Google Reader-style or Fever API that native clients consume. Reeder, NetNewsWire, and FeedMe all sync against Miniflux or FreshRSS, so the phone experience matches a hosted service without the subscription. Test the API with your intended client before migrating, because some clients implement only a subset of endpoints.

Expose the reader over HTTPS only. Put the admin path behind authentication, use a strong API key and rotate it if a device is lost, and consider an access proxy in front of the whole service if it sits on the public internet. Meta refresh and unused RSS aggregation endpoints should be disabled — they are the usual entry point for junk-feed abuse.

Bottom Line

Self-hosted RSS is one of the best value workloads for a small VPS: light on CPU, small on disk when pruned, and easy to share with other services. Miniflux on a $3–5 plan is the leanest path; FreshRSS on 1–2 GB is the more configurable one. Add backups, prune on a schedule, and alert on stalled fetches. Price the server against your current subscription using the provider rankings on the budget hosting shortlist before you switch.

Affordable-Vps-Server-Author
Affordable-Vps-Server-Author
Articles: 352

Leave a Reply