Introduction

If you've got more than a handful of blogs, YouTube channels, or news sites you check every day, you already know the problem. You either forget half of them, or you burn twenty minutes a day clicking through bookmarks hoping something new showed up. An RSS reader fixes that by pulling every update into one list, and if you self-host it, nobody's algorithm gets to decide what you see.

FreshRSS is one of the lighter, faster options in that space, and it happens to install cleanly on Proxmox VE using a community script. This walkthrough covers the whole process: spinning up the container, running the installer, finishing the setup wizard, and adding your first feeds. You'll be reading your own curated feed list inside about fifteen minutes.

What You Will Learn

  • What FreshRSS is and why homelab users tend to pick it over the alternatives
  • How to create the LXC container with the Proxmox VE Community Scripts installer
  • How to finish the FreshRSS setup wizard and create your admin account
  • How to add feeds, organize them into categories, and enable the mobile-friendly API
  • How to fix the errors people actually run into during install and first use

What Is This Feature?

FreshRSS is a self-hosted feed aggregator. It reads RSS and Atom feeds — the update files most blogs, news sites, forums, and even some YouTube channels publish automatically — and shows them to you in one clean interface. Think of it as a private, ad-free replacement for the reader that used to be built into every browser back before RSS readers mostly disappeared from mainstream use.

It's written in PHP, stores its data in SQLite by default (though it supports MySQL and PostgreSQL too), and runs comfortably inside a small LXC container. On Proxmox VE, the fastest way to deploy it is through the Proxmox VE Community Scripts project — a set of maintained Bash installers that handle the container creation, package installation, and web server configuration for you.

An LXC container, if you're new to Proxmox, is a lightweight form of virtualization. Instead of emulating a full virtual machine with its own kernel, an LXC container shares the host's kernel and only isolates the user space. That means it starts in a couple of seconds and uses a fraction of the RAM and disk a comparable VM would need — which makes it a good fit for a single-purpose app like a feed reader.

Why Would You Use It?

The obvious reason is control. When you use a cloud RSS service, someone else decides how long your read history sticks around, whether they track what you read, and whether the service still exists next year. FreshRSS runs on hardware you own, keeps your data in a database you can back up, and doesn't answer to anyone but you.

There's also a practical angle for anyone consolidating a homelab. If you're already running Proxmox VE for a Pi-hole instance, a Jellyfin server, or a couple of Docker containers, adding FreshRSS costs you almost nothing — one more lightweight LXC container sipping maybe 150–250 MB of RAM in daily use. Compare that to running a browser tab with a dozen bookmarked sites open all day, and it's actually the lighter option.

FreshRSS also exposes a Fever and Google Reader-compatible API, so you're not stuck with the web interface. Mobile apps like Reeder, FeedMe, and NetNewsWire can sync straight to your own server instead of a third-party account.

Prerequisites

Before you start, make sure you have:

  • A working Proxmox VE host — this guide assumes a fairly recent 8.x or 9.x install, since that's what the community script targets
  • Internet access from the Proxmox host, so it can download the container template and packages
  • At least 4 GB of free storage on whichever storage location you plan to use for the container
  • Root or admin access to the Proxmox VE shell, either through the web UI or SSH
  • A rough idea of your network's IP range, so you can find the container afterward

You don't need to know PHP or anything about databases. The installer handles all of that.

Step-by-Step Tutorial

Step 1: Open the Proxmox VE Shell

Log in to the Proxmox VE web interface, click your node's name in the left-hand tree (it's usually the top-level entry, named after your hostname), and click the >_ Shell button near the top right. This drops you into a root terminal on the Proxmox host itself — not inside any VM or container.

Step 2: Run the FreshRSS Community Script

Paste this command into the shell and press Enter:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/freshrss.sh)"

This downloads and runs the official FreshRSS installer from the Proxmox VE Community Scripts project. It's a whiptail-based menu, so you'll get a text UI with a couple of choices.

Pick Default Settings if you just want a working container fast — it creates an unprivileged container based on Debian, gives it 2 vCPU cores, 1024 MB of RAM, and a 4 GB disk, and picks the next free container ID automatically. Those defaults are plenty for a personal feed reader, even with a couple hundred subscriptions.

If you'd rather set your own container ID, hostname, disk size, or storage target, choose Advanced Settings instead. I'd only bother with this if you're running low on a specific storage pool or you have a naming convention you stick to for your containers.

Step 3: Wait for the Install to Finish

The script creates the container, boots it, updates its package list, and installs PHP, a web server, and FreshRSS itself. On a decent internet connection this takes three to five minutes. You'll see a wall of package-manager output — that's normal. When it's done, the script prints the container's IP address and confirms it's finished.

Write that IP address down. You'll need it for the next step, and you'll want it later if you ever forget which container ID belongs to FreshRSS.

Step 4: Open FreshRSS in Your Browser

From any device on the same network, open http://<container-ip>/ in a browser. FreshRSS should redirect you straight into its setup wizard.

The wizard asks for:

  • Language — pick whatever's comfortable, this only affects the interface text
  • Database type — leave this on SQLite unless you already run a MySQL or PostgreSQL server you want to point it at. SQLite is a single-file database with no separate server process, and it's genuinely fine for a single-user reader
  • Admin account — pick a username and a real password here, not something you'll forget
  • Default feed provider — you can leave this blank and add feeds manually afterward

Submit the form, and you're dropped into the main FreshRSS interface with an empty feed list.

Step 5: Add Your First Feeds

Click the settings gear, then Subscription management, then paste in a site's URL — you don't even need the exact feed link most of the time. FreshRSS will try to auto-detect the feed the same way a browser extension would. If it can't find one, most sites still publish a feed at a predictable path like /feed, /rss, or /feed.xml.

Organize feeds into categories as you add them — Tech, News, YouTube, whatever fits your reading habits. It makes the sidebar usable once you're past a dozen subscriptions, and going back to sort them later is more tedious than doing it up front.

Step 6: Enable the API for Mobile Apps (Optional)

If you want to read your feeds from a phone app instead of a browser, go to Settings → Profile and set an API password. Most RSS mobile clients support the Fever API or the Google Reader-compatible API — point them at your container's address, your FreshRSS username, and that API password, and they'll sync directly.

Commands Explained

CommandWhat it does
bash -c "$(curl -fsSL <script-url>)"Downloads the installer script and immediately runs it through Bash, without saving a copy to disk first
pct listRun on the Proxmox host; shows every LXC container's ID, status, and hostname, so you can confirm your new container is running
pct enter <vmid>Drops you into a root shell inside the specified container, useful if you need to check logs or config files directly
systemctl status php8.2-fpmRun inside the container; confirms the PHP process manager that serves FreshRSS is actually running
cat /etc/cron.d/freshrss-actualizeShows the scheduled task that refreshes your feeds automatically in the background

Common Errors

"Unable to write to data folder" during setup. This shows up if the container ran out of disk space mid-install, which is rare with the default 4 GB allocation but can happen if you picked a smaller disk in Advanced Settings. Bump the container's disk size from the Proxmox web UI under the container's Resources tab, then reload the setup page.

Blank white page instead of the setup wizard. Usually means PHP-FPM isn't running yet, which can happen if you open the browser tab a few seconds before the install script fully finishes. Wait for the script to print its completion message, then refresh.

Feeds stop updating after a day or two. Check that the cron job actually exists with cat /etc/cron.d/freshrss-actualize inside the container. If it's missing, the update process may have been interrupted; re-running the install script is the fastest fix, since it's safe to run against an existing install and just re-applies the update job.

"This feed doesn't seem to be valid" when adding a subscription. Some sites bury their real feed URL somewhere other than the homepage. Try appending /feed, /rss.xml, or checking the site's footer for an RSS icon before giving up on that source.

Troubleshooting

Start with the basics whenever something doesn't load: is the container even running? On the Proxmox host, pct list tells you in one line. If it shows "stopped," start it from the web UI and try again — the community script doesn't set containers to auto-start by default unless you enabled that option during install.

If the container's running but the web page won't load, check that you've got the right IP. Container IPs can shift if your router's DHCP lease expires and hands out a different address. Setting a DHCP reservation for the container's MAC address in your router solves this permanently.

For anything deeper, get inside the container with pct enter <vmid> and check the web server's error log — on the default Nginx setup that's usually /var/log/nginx/error.log. FreshRSS also keeps its own error log under its data directory, which is worth checking if the interface loads but specific actions fail silently.

One thing that trips people up: after any Proxmox VE storage migration or container clone, the container gets a new IP by default unless you've pinned a static one. If FreshRSS "disappears" right after you moved it to different storage, check the new IP before assuming something broke.

Best Practices

Back up the container regularly using Proxmox VE's built-in vzdump tool or Proxmox Backup Server if you run one — the whole FreshRSS install, database included, lives inside that single container, so a container-level backup covers everything.

Set a DHCP reservation for the container early, before you start pointing mobile apps at its IP address. Chasing down a changed IP on three devices is more annoying than it sounds.

Don't skip the API password if you plan to use a mobile client. Leaving it blank means anyone on your network who guesses the URL can read your feeds — low stakes for most homelabs, but there's no reason not to set it.

If you're going to subscribe to more than fifty or so feeds, consider bumping the container's RAM from 1024 MB to 2048 MB. FreshRSS itself is light, but the background refresh job that fetches every feed on schedule gets heavier as your subscription count grows.

Frequently Asked Questions

Does FreshRSS work behind a reverse proxy? Yes. Point Nginx Proxy Manager or your reverse proxy of choice at the container's IP on port 80, and FreshRSS works fine over HTTPS without any special configuration.

Can I import my feeds from another RSS reader? Yes, under Settings → Import/Export, FreshRSS accepts OPML files, which is the standard format every major RSS reader exports to.

Is SQLite good enough, or should I switch to MySQL? For one user with a normal feed list, SQLite is fine and one less service to maintain. Switch to MySQL or PostgreSQL only if you're sharing the instance with several people or you specifically want a separate database server for backups.

Can multiple people use the same FreshRSS instance? Yes, FreshRSS supports multiple user accounts, each with a separate feed list and settings, all on one install.

Does it pull full article text, or just summaries? That depends on what each feed publishes. Some sites publish full-text feeds, others only a summary with a link back to the site. FreshRSS has an optional full-text extraction feature for feeds that only send summaries, though it doesn't work on every site.

Conclusion

FreshRSS is one of those small self-hosted projects that ends up mattering more than its size suggests. Once your feeds are organized and synced to a phone app, checking your usual sites turns into a five-minute morning habit instead of a dozen separate visits. On Proxmox VE, the whole setup takes less time to run than it does to explain, and the container is light enough that you won't think twice about the resources it uses.

From here, the natural next steps are setting that DHCP reservation, importing an OPML file if you're moving from another reader, and adding a handful of feeds to see how the categorization works. The rest tends to fall into place as you use it.