Pidiylab Logo

Pidiylab Title

FreshRSS on Raspberry Pi: Feeds, Filters and Mobile Apps

Published:

Updated:

Author:

Freshrss on raspberry pi

Disclaimer

As an affiliate, we may earn a commission from qualifying purchases. We get commissions for purchases made through links on this website from Amazon and other third parties.

Introduction

FreshRSS on Raspberry Pi is one of those things that just works—and you actually feel like you got your time and privacy back. You’re not waiting on some cloud service to decide what’s “relevant” to you or swiping through recycled Twitter screenshots pretending they’re news. You get real feeds, on your own terms.

I installed FreshRSS on a Pi 4 with a microSD card that’s probably older than some of my socks, and it’s been solid. I feed it stuff from Hacker News, my GitHub watchlist, a couple of Reddit RSS links (yes, those still work), and some longform blogs that somehow still publish quality writing. Filtering out the fluff? That’s where it shines. I’ve got regex filters to weed out anything with “AI breakthrough” or “crypto” in the title. You’d be amazed how quiet the feed gets.

Mobile access? Not a problem. There’s FeedMe on Android and Read You if you’re into open-source apps. I stuck a shortcut on my phone home screen using the FreshRSS PWA too—because logging in from a browser is just annoying. If you’ve got a Pi and you hate doomscrolling, this is the setup you want.

Key Takeaways

  • FreshRSS runs smoothly on Raspberry Pi using Docker or a manual setup.
  • It supports powerful filtering tools to cut out junk and highlight what matters.
  • Syncing works with mobile apps like FeedMe, Read You, and Reeder.
  • Storage and performance can be optimized with SQLite, cron jobs, and backups.
  • The FreshRSS community offers solid support through GitHub, Reddit, and forums.

Setting Up FreshRSS on Raspberry Pi

Choosing the Right Raspberry Pi Model

The Raspberry Pi 4 with 2GB or more RAM handles FreshRSS with zero lag. The Pi 3B+ also works if you’re not feeding it thousands of sources. If you’re planning to run a full LAMP stack, stick to a model with active cooling and a decent power supply. MicroSD cards can wear out fast with frequent write cycles, so a USB SSD is a smarter long-term option.

Installing Raspberry Pi OS and Enabling Access

Start with Raspberry Pi OS Lite. Flash it using Raspberry Pi Imager or dd if you enjoy pain. Enable SSH by placing an empty ssh file on the boot partition, then power it up and log in via terminal. Set a static IP and change your password immediately—unless you like surprises from the internet.

Installing FreshRSS with Docker

If you’re the kind of person who likes minimal fuss, Docker is your friend. Run the FreshRSS container like this:

docker run -d \
  --name freshrss \
  -p 8080:80 \
  -v freshrss_data:/var/www/FreshRSS/data \
  freshrss/freshrss

That gives you a working web UI at http://<your_pi_ip>:8080.

Manual Install for the Non-Docker Crowd

Prefer full control? Install PHP, Nginx, and SQLite (or MariaDB if you’re feeling fancy). Then:

  1. Clone the repo from GitHub: git clone https://github.com/FreshRSS/FreshRSS.git /var/www/FreshRSS
  2. Point Nginx to that directory.
  3. Set file permissions and launch the install wizard.

It’s slower than Docker but fine if you want to tweak config files like it’s 2007.

Setting Up the Database

SQLite works great for one user and low feed volume. It’s fast and writes to a single file. If you’re importing hundreds of feeds or enabling multiple user accounts, MariaDB holds up better under pressure. You’ll need to create a database and user, then tell FreshRSS to use it during setup.

Configuring Feed Sources

Adding New Feeds

FreshRSS lets you plug in pretty much any RSS or Atom feed. Just paste the feed URL into the subscription box. It’ll try to auto-detect the title and favicon, which is a nice touch. For bulk setup, import an OPML file from another reader like Feedbin or Tiny Tiny RSS. Works great and saves time.

Organizing Feeds with Categories and Tags

Once you’ve added feeds, you can organize them into categories. Think of categories like folders—“Tech,” “News,” “DIY Projects,” or whatever you’re into. Tags are more flexible and let you cross-reference articles. You could tag posts as “Read Later” or “Security” and pull them up across categories.

Syncing Feeds Automatically

By default, FreshRSS doesn’t check for new articles unless you tell it to. Use a cron job or a Docker healthcheck to refresh your feeds every 15 or 30 minutes. Example for cron:

*/15 * * * * php /var/www/FreshRSS/app/actualize_script.php > /dev/null 2>&1

If you’re using Docker, set HEALTHCHECK to call the actualize_script.php inside the container. Set it, forget it.

Creating and Applying Filters

Understanding Filter Logic

FreshRSS lets you filter articles using keywords, regular expressions, and even article content. Want to skip every post with “sponsored” in the title? Done. Only keep articles with “Linux” in the body? No problem. Regex support means you can get really specific—like only keeping posts from certain authors or with URLs that match a pattern.

Customizing Per Feed

Filters aren’t just global—you can apply them to specific feeds. That means you can keep a broad tech feed like Ars Technica but only show articles about cybersecurity. Filter by title, author name, or even tags added during feed parsing. You can stack filters, too, so only articles that pass multiple checks show up.

Practical Filter Examples

  • Title includes: “Debian”, “PostgreSQL”
  • Content includes: “kernel update”, “zero-day”
  • Regex match: .*Apple.*iPhone.* (good for ignoring the hype cycle)
  • Domain filtering: Exclude articles from certain content farms using the URL structure
  • Word count: Only keep articles over 500 words (perfect for cutting fluff)

Setting these up helps keep your feed signal strong and noise-free.

Managing Storage and Retention

Feed Retention Policies

FreshRSS doesn’t keep every article forever. And honestly, why would you want it to? You can set how long articles stick around per feed. Typical setups delete old items after 30 days. If you’re short on disk space, trimming it down to 14 days might make sense—especially if you’re pulling from high-volume feeds like news aggregators.

Archiving Starred or Important Articles

Not everything has to go in the trash. Starred articles stay unless you delete them yourself. You can also export them as OPML or JSON, and stash them in your backup folder. If you’re into Markdown, some tools even let you convert saved articles into .md files for archiving.

Export and Backup Options

Set up a cron job to regularly back up:

  • data/config.php
  • SQLite database or MySQL dump
  • OPML export of feeds
  • data/users/* directory if you’ve got multiple users

Backups can go to an external USB drive or be rsync’d to a network share. It’s not glamorous, but it saves your bacon when something breaks.

Improving Performance

Older Pi models and slow microSD cards can choke on big feed lists. Use these tips:

  • Clean the cache weekly
  • Use SQLite with PRAGMA journal_mode=WAL; for faster writes
  • Avoid gigantic feeds like Reddit frontpage
  • Run a weekly vacuum on your database

Every little bit helps on a tiny board running 24/7 in your closet.

Accessing FreshRSS from Mobile Devices

Android Options

If you’re using Android, you’ve got choices. FeedMe is the fan favorite—it syncs with FreshRSS using the Fever API. You get offline reading, tagging, and auto-sync intervals. It also handles filtering and starred articles. Download it from F-Droid if you prefer to skip the Play Store.

Another good option is Read You. It’s open-source, clean, and supports FreshRSS directly. Syncs are fast, and the UI feels modern without being bloated. You can even export starred articles locally.

iOS Setup

On iPhones and iPads, Reeder is the big player. It connects to FreshRSS via the Fever API just like FeedMe. The sync is smooth, the UI is slick, and it even works offline. There are fewer open-source choices on iOS, but Reeder gets the job done.

If you’re into privacy-first tools, you might have to dig around or run a PWA.

Using FreshRSS as a Progressive Web App

The web interface is mobile-friendly out of the box. Load it in your browser, tap “Add to Home Screen,” and boom—it behaves like a native app. You’ll need to set up HTTPS for login persistence and enable offline access in your browser settings.

Quick Sync Settings to Know

  • FeedMe: Set auto-sync every 30 minutes over Wi-Fi
  • Reeder: Manual or scheduled background sync
  • Read You: Optional notification alerts for new articles
  • PWA: Refresh manually, supports offline caching

This setup gives you the full FreshRSS experience in your pocket without the bloat.

Security and Access Management

User Roles and Permissions

FreshRSS supports multiple user roles. Set up an admin account for yourself and create limited-access users for anyone else who might need access. Each user can have their own feed subscriptions, filters, and interface preferences. If you’re the only user, turn off registration altogether.

Securing Remote Access

By default, FreshRSS runs on HTTP. That’s fine for local use, but if you’re accessing it outside your network, set up HTTPS with a Let’s Encrypt certificate. Use Nginx or Caddy as a reverse proxy. Services like DuckDNS can give your Raspberry Pi a stable hostname even if your home IP changes.

Enable Two-Factor Authentication

While FreshRSS doesn’t have built-in 2FA, you can add an extra layer with a reverse proxy like Authelia or by using HTTP basic auth combined with token-based login. Not bulletproof, but way better than nothing.

Firewall and Brute Force Protection

  • UFW: Enable and allow only SSH and HTTP/HTTPS
  • Fail2ban: Block IPs after too many failed logins
  • SSH Access: Use keys, not passwords

These tools are light enough for Raspberry Pi and offer real protection against bots sniffing around your network.

Monitoring Logs and Activity

Check these regularly:

  • /var/log/nginx/access.log for incoming connections
  • FreshRSS/data/log.txt for app events
  • auth.log for login attempts

No need to stare at logs daily, but it’s worth reviewing once a week or after a failed login attempt.

Troubleshooting and Maintenance

Common Issues and Quick Fixes

  • Feeds not updating
    Check if the cron job or Docker healthcheck is running. If feeds still don’t refresh, run the actualization script manually to see error output.
  • File permission errors
    This usually happens if you installed FreshRSS manually and forgot to chown files to the web server user (like www-data). A quick sudo chown -R www-data:www-data /var/www/FreshRSS can solve a lot.
  • Container won’t start
    If you’re using Docker and the container exits, inspect the logs with docker logs freshrss to see what broke—usually it’s a config error or missing volume.

Updating FreshRSS

  • Git method:
    If you installed manually, navigate to the directory and run git pull origin master, then visit /i/?c=update in your browser to finalize the update.
  • Docker method:
    Just run: docker pull freshrss/freshrss docker stop freshrss docker rm freshrss docker run ... (your container config again)
  • Scheduled updates:
    Automate this with a bash script and cron if you want to live dangerously.

Backup Strategies

Back up the following regularly:

  • Database (SQLite file or MySQL dump)
  • data/ directory
  • config.php
  • OPML export of feeds

Use rsync, a USB drive, or sync it to a NAS. If you’re using microSD storage, don’t forget to clone the whole card every now and then.

Community and Resources

Official Documentation and GitHub

FreshRSS is actively developed and well-documented. The GitHub repository has everything from install instructions to API references. The wiki covers most edge cases, and the Issues tab is full of helpful bug reports and fixes.

You’ll also find examples of custom themes, filter scripts, and third-party tools that extend FreshRSS beyond its default setup.

Forums and Peer Help

  • Reddit: The r/selfhosted subreddit regularly features posts about FreshRSS, setup walkthroughs, and troubleshooting tips.
  • Stack Overflow: Good for answering specific PHP, Nginx, or Docker configuration questions.
  • Mastodon and Discord: Developers and power users often hang out on fediverse threads and niche Discord servers. You’ll have to dig a little, but the conversations are there.

Staying Updated

  • Releases: Follow the GitHub Releases page to get notified of new versions.
  • Mobile App Devs: FeedMe, Read You, and others update their sync compatibility based on changes to the FreshRSS API—check their GitHub pages too.
  • Docker Hub: Watch the FreshRSS Docker page for image updates.

This community isn’t flashy, but it’s active and responsive—most problems have already been solved by someone else.

FAQ

Q: Can FreshRSS run on a Raspberry Pi Zero 2 W?
A: Yes, but expect slower performance. Stick with lightweight feeds and SQLite to keep it usable.

Q: How do I reset my FreshRSS admin password?
A: Use the cli/reset-password.php script in the FreshRSS directory.

Q: Do mobile apps need special ports or firewall rules?
A: No, they connect over standard HTTP/S. Just make sure the Pi is reachable on your local or public IP.

Q: Is it possible to use FreshRSS offline?
A: Yes. Mobile apps like FeedMe sync content locally, and the PWA can cache recent articles.

Q: How do I import feeds from another reader?
A: Export an OPML file from your old reader and import it under FreshRSS settings.

References

Was this helpful?

Yes
No
Thanks for your feedback!

About the author

Latest Posts

Pi DIY Lab